介紹
linux系統掃瞄scsi磁碟有幾種方式?linux新增lun之後,能否不重啟主機就認出裝置?如果安裝了powerpath,動態新增/刪除lun的命令是什麼?本文總結了linux主機對磁碟裝置進行重新配置的方式,並附加命令例項。
更多資訊
linux系統提供多重機制以重新掃瞄scsi匯流排並重認系統中加入的scsi裝置。在2.4核心方案中,由於動態lun掃瞄機制不具備一致性,往往需要中斷i/o。
2.6核心裡,lun掃瞄有了顯著改進並新增了動態lun掃瞄機制。linux目前缺乏像drvconfig或ioscan那樣允許動態scsi通道重配的命令。
linux主機對磁碟裝置進行重新配置的方式包括:
系統重啟
重啟主機是檢測新新增磁碟裝置的可靠方式。在所有i/o停止之後方可重啟主機,同時靜態或以模組方式連線磁碟驅動。系統初始化時會掃瞄pci匯流排,因此掛載其上的scsi host adapter會被掃瞄到,並生成乙個pci device。之後掃瞄軟體會為該pci device載入相應的驅動程式。載入scsi host驅動時,其探測函式會初始化scsi host,註冊中斷處理函式,最後呼叫scsi_scan_host函式掃瞄scsi host adapter所管理的所有scsi匯流排。
命令示例:
例如,rac節點上某台伺服器執行fdisk –l命令看不到共享磁碟,可嘗試執行如下命令:
# modprobe -r lpfc(解除安裝驅動)
# modprobe lpfc(載入驅動)
/proc下scsi掃瞄
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/scsi
0:主機id
1:channel id
2:target id
3:lun編號
該命令會將新磁碟裝置新增到/proc/scsi/scsi檔案中。如果沒有找到相應檔案,需為/dev路徑下新增磁碟裝置建立裝置檔名。
如果要刪除乙個磁碟裝置,使用適當的主機,channel,target id及lun編號執行如下格式命令:
# echo "scsi remove-single-device 0 1 2 3" > /proc/scsi/scsi
0:主機id
1:channel id
2:target id
3:lun編號
/sys下scsi掃瞄
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. 1.確保儲存端已配置好lun並輸出給linux 主機
2. 2.通過powermt命令獲得hba 卡列表,並掃瞄列表中所有的hba
echo 『- - -』 > /sys/class/scsi_host/host#/scan
例如, 如果powermt 顯示列出hba 4 和5, 使用如下命令開始掃瞄:
echo 『- - -』 > /sys/class/scsi_host/host4/scan
echo 『- - -』 > /sys/class/scsi_host/host5/scan
3. 3.執行powermt config 配置新認到的磁碟,生成虛擬裝置
4. 4.用powermt display 檢查新認到的lun 及裝置路徑
在現有powerpath環境中動態刪除 lun
注意,必須嚴格遵守操作次序,如果次序有誤可能會造成主機os panic。
1. 1.在將要刪除的裝置上停止所有的i/o。
2. 2.通過以下命令確定虛擬裝置對應的原始scsi裝置:
powermt display dev=emcpower
3. 3.刪除虛擬裝置
powermt remove dev=emcpower
4. 4.**虛擬裝置號以備後用
powermt release
如果此命令失敗,已刪除的虛擬裝置仍會存在於/dev 和/sys/block 下,並且在以後動態新增新lun時可能會引發問題。
5. 5.對每個原始scsi 裝置執行以下命令:
echo 1 > /sys/block/sd/device/delete
此命令使powerpath 停止這些原始sd 裝置上的i/o 並且將其從/dev 和/sys/block下移除。如此命令執行不成功,在以後動態新增新lun時可能會引發問題。
6. 6.在儲存陣列中刪除對應的lun,執行powermt display 驗證裝置已被刪除。
通過hba廠商指令碼進行scsi掃瞄
qlogic
命令示例:
通過以下命令重新掃瞄所有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磁碟掃瞄機制解析及命令例項
介紹 linux系統掃瞄scsi磁碟有幾種方式?linux新增lun之後,能否不重啟主機就認出裝置?如果安裝了powerpath,動態新增 刪除lun的命令是什麼?本文總結了linux主機對磁碟裝置進行重新配置的方式,並附加命令例項。更多資訊 linux系統提供多重機制以重新掃瞄scsi匯流排並重認...
linux驅動子系統 SCSI
scsi初始化流程 1 首先如果驅動核心發現了1個scsi控制器,則呼叫scsi host alloc建立scsi中間層的代表例項 2 呼叫scsi add host新增建立的scsi例項到scsi中間層 3 呼叫scsi scan host掃瞄scsi控制器下面的scsi裝置 4 探測到的scsi...
Linux中磁碟掃瞄流程描述
通常scsi匯流排介面卡作為pci裝置的形式存在,其在計算機體系結構中的位置如下圖所示 圖1 scis host及device在計算機體系結構中的位置 在系統初始化時會掃瞄系統pci匯流排,由於scsi host adapter掛接在pci匯流排上,因此會被pci掃瞄軟體掃瞄得到,並且生成乙個pci...