Linux系統SCSI磁碟掃瞄機制解析及命令例項

2021-07-14 03:33:19 字數 4050 閱讀 3721

介紹

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匯流排。

hba驅動

命令示例:

例如,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...