Linux系統SCSI磁碟掃描機制解析及命令執行個體(轉)

來源:互聯網
上載者:User

標籤:

轉載請在文首保留原文出處:EMC中文支援論壇

介紹

Linux系統掃描SCSI磁碟有幾種方式?Linux新增LUN之後,能否不重啟主機就認出裝置?如果安裝了PowerPath,動態添加/刪除LUN的命令是什嗎?本文總結了Linux主機對磁碟裝置進行重新設定的方式,並附加命令執行個體。

更多資訊

Linux系統提供多重機制以重新掃描SCSI匯流排並重認系統中加入的SCSI裝置。在2.4核心方案中,由於動態LUN掃描機制不具備一致性,往往需要中斷I/O。

2.6核心裡,LUN掃描有了顯著改進並添加了動態LUN掃描機制。Linux目前缺乏像drvconfig或ioscan那樣允許動態SCSI通道重配的命令。

Linux主機對磁碟裝置進行重新設定的方式包括:

#  重啟系統

#  卸載並重新載入HBA驅動模組

#  Echo /proc下的SCSI裝置列表

#  通過/sys下的屬性設定運行SCSI掃描

#  通過HBA廠商指令碼運行SCSI掃描

系統重啟

重啟主機是檢測新添加磁碟裝置的可靠方式。在所有I/O停止之後方可重啟主機,同時靜態或以模組方式串連磁碟驅動。系統初始化時會掃描PCI匯流排,因此掛載其上的SCSI host adapter會被掃描到,並產生一個PCI device。之後掃描軟體會為該PCI device載入相應的驅動程式。載入SCSI host驅動時,其探測函數會初始化SCSI host,註冊中斷處理函數,最後調用scsi_scan_host函數掃描scsi host adapter所管理的所有scsi匯流排。

重新載入HBA驅動

通常情況下,HBA驅動在系統中以模組形式載入。從而允許模組被卸載並重新載入,在該過程中SCSI掃描函數得以調用。通常,在卸載HBA驅動之前,SCSI裝置的所有I/O都應該停止,卸載檔案系統,多重路徑服務應用也需停止。如果有代理或HBA應用協助模組,也應當中止。

命令樣本:

例如,rac節點上某台伺服器執行fdisk –l命令看不到共用磁碟,可嘗試執行如下命令:

# modprobe -r lpfc(卸載驅動)# modprobe lpfc(載入驅動)

/procSCSI掃描

2.4核心中,/proc檔案系統提供了可用SCSI裝置的列表。如果系統中SCSI裝置重新設定,那麼所有這些改變通過echo /proc介面反映到SCSI裝置中。添加一個裝置,主機,channel,target ID,以及磁碟裝置的LUN編號會被添加到/proc/scsi/,需指定scsi編號。

命令樣本:

# echo "scsi add-single-device 0 1 2 3" > /proc/scsi/scsi0:主機ID1:channel ID2:target ID3:LUN編號

該命令會將新磁碟裝置添加到/proc/scsi/scsi檔案中。如果沒有找到相應檔案,需為/dev路徑下新增磁碟裝置建立裝置檔案名稱。

如果要刪除一個磁碟裝置,使用適當的主機,channel,target ID及LUN編號運行如下格式命令:

# echo "scsi remove-single-device 0 1 2 3" > /proc/scsi/scsi0:主機ID1:channel ID2:target ID3:LUN編號

/sysSCSI掃描

2.6核心中,HBA驅動將SCAN功能匯出至/sys目錄下,可用來重新掃描該介面下的SCSI磁碟裝置。命令如下:

# cd /sys/class/scsi_host/host4/# ls -al scan# echo ‘- - -‘ > scan‘- - -‘ 代表channel,target和LUN編號。以上命令會導致hba4下所有channel,target以及可見LUN被掃描。

RHEL5 SUSE10

echo ‘- - -‘  > /sys/class/scsi_host/host0/scan/sys/class/scsi_host/ 下面有幾個host 就掃描幾次

RHEL4 SUSE9

echo 1 >> /sys/class/scsi_host/host0/issue_lip    同樣是/sys/class/scsi_host/ 下面有幾個host 就執行幾次echo ‘- - -‘ >> /sys/class/scsi_host/host0/scan

在現有PowerPath環境中增加LUN:

1.確儲存儲端已配置好LUN並輸出給Linux 主機

2.通過powermt命令獲得HBA 卡列表,並掃描列表中所有的HBA

echo ‘- - -‘ > /sys/class/scsi_host/host#/scan例如, 如果powermt 顯示列出HBA 4 和5, 使用如下命令開始掃描:echo ‘- - -‘ > /sys/class/scsi_host/host4/scanecho ‘- - -‘ > /sys/class/scsi_host/host5/scan

3.運行powermt config 配置新認到的磁碟,產生虛擬設備

4.用powermt display 檢查新認到的LUN 及裝置路徑

在現有PowerPath環境中動態刪除 LUN

注意,必須嚴格遵守操作次序,如果次序有誤可能會造成主機OS panic。

1.在將要刪除的裝置上停止所有的I/O。

2.通過以下命令確定虛擬設備對應的原始SCSI裝置:

powermt display dev=emcpower<id>

3.刪除虛擬設備

powermt remove dev=emcpower<id>

4.回收虛擬設備號以備後用

powermt release

如果此命令失敗,已刪除的虛擬設備仍會存在於/dev 和/sys/block 下,並且在以後動態添加新LUN時可能會引發問題。

5.對每個原始SCSI 裝置執行以下命令:

echo 1 > /sys/block/sd<id>/device/delete

此命令使PowerPath 停止這些原始sd 裝置上的I/O 並且將其從/dev 和/sys/block下移除。如此命令執行不成功,在以後動態添加新LUN時可能會引發問題。

6.在存放裝置陣列中刪除對應的LUN,執行powermt display 驗證裝置已被刪除。

通過HBA廠商指令碼進行SCSI掃描

QLogic

利用QLogic FC HBA LUN Scan Utility 指令碼即可無需重啟動系統而識別新添加的LUN。也無需對QLogic FC driver 的重新載入。

命令樣本:

通過以下命令重新掃描所有HBA:

# ./ql-dynamic-tgt-lun-disc.sh# ./ql-dynamic-tgt-lun-disc.sh -s# ./ql-dynamic-tgt-lun-disc.sh –scan

重新掃描並刪除丟失的LUN,使用以下兩個命令其中任何一個:

# ./ql-dynamic-tgt-lun-disc.sh -s -r# ./ql-dynamic-tgt-lun-disc.sh --scan –refresh

Emulex

使用 Emulex LUN Scan Utility 指令碼可以動態掃描新添加的LUN。

命令樣本:

# gunzip lun_scan.sh.gz# chmod a+x lun_scan

掃描所有lpfc HBA:

# lun_scan all

掃描scsi主機編號2的lpfc HBA:

# lun_scan 2

之後確認OS 識別到新裝置:

# fdisk -l

如果系統中有PowerPath ,還需要運行:

# powermt config
參考

EMC Host Connectivity Guide for Linux

應用於

Linux主機Kernel 2.4、2.6版本

RHEL, SUSE

Linux系統SCSI磁碟掃描機制解析及命令執行個體(轉)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.