Linux/Unix存儲管理常見問題與解決方法(一)

Linux主機對磁盤設備進行從新配置的方式服務器

    • 重啓系統ide

    • 卸載並從新加載HBA驅動模塊函數

    • Echo /proc下的SCSI設備列表spa

    • 經過/sys下的屬性設置運行SCSI掃描代理

    • 經過HBA廠商腳本運行SCSI掃描orm

 

 

系統重啓xml

重啓主機是檢測新添加磁盤設備的可靠方式。在全部I/O中止以後方可重啓主機,同時靜態或以模塊方式鏈接磁盤驅動。系統初始化時會掃描PCI總線,所以掛載其上的SCSI host adapter會被掃描到,並生成一個PCI device。以後掃描軟件會爲該PCI device加載相應的驅動程序。加載SCSI host驅動時,其探測函數會初始化SCSI host,註冊中斷處理函數,最後調用scsi_scan_host函數掃描scsi host adapter所管理的全部scsi總線。接口

 

 

從新加載HBA驅動ip

一般狀況下,HBA驅動在系統中以模塊形式加載。從而容許模塊被卸載並從新加載,在該過程當中SCSI掃描函數得以調用。一般,在卸載HBA驅動以前,SCSI設備的全部I/O都應該中止,卸載文件系統,多路徑服務應用也需中止。若是有代理或HBA應用幫助模塊,也應當停止。rem

命令示例:

例如,rac節點上某臺服務器執行fdisk –l命令看不到共享磁盤,可嘗試執行以下命令:

# modprobe -r lpfc(卸載驅動)

# modprobe lpfc(加載驅動)

 

/procSCSI掃描

  1. 2.4內核中,/proc文件系統提供了可用SCSI設備的列表。若是系統中SCSI設備從新配置,那麼全部這些改變經過echo /proc接口反映到SCSI設備中。添加一個設備,主機,channeltarget ID,以及磁盤設備的LUN編號會被添加到/proc/scsi/,需指定scsi編號。

命令示例:

# echo "scsi add-single-device 0 1 2 3" > /proc/scsi/scsi

0:主機ID

1channel ID

2target ID

3LUN編號

該命令會將新磁盤設備添加到/proc/scsi/scsi文件中。若是沒有找到相應文件,需爲/dev路徑下新增磁盤設備建立設備文件名。

 

若是要刪除一個磁盤設備,使用適當的主機,channeltarget IDLUN編號運行以下格式命令:

# echo "scsi remove-single-device 0 1 2 3" > /proc/scsi/scsi

0:主機ID

1channel ID

2target ID

3LUN編號

 

/sysSCSI掃描

  1. 2.6內核中,HBA驅動將SCAN功能導出至/sys目錄下,可用來從新掃描該接口下的SCSI磁盤設備。命令以下:

# cd /sys/class/scsi_host/host4/

# ls -al scan

# echo ‘- - -’ > scan

‘- - -’表明channeltargetLUN編號。以上命令會致使hba4下全部channeltarget以及可見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.    1.確保存儲端已配置好LUN並輸出給Linux 主機

  2. 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

  1. 3.    3.運行powermt config 配置新認到的磁盤,生成虛擬設備

  2. 4.    4.powermt display 檢查新認到的LUN 及設備路徑

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

注意,必須嚴格遵照操做次序,若是次序有誤可能會形成主機OS panic

  1. 1.    1.在將要刪除的設備上中止全部的I/O

  2. 2.    2.經過如下命令肯定虛擬設備對應的原始SCSI設備:

powermt display dev=emcpower<id>

  1. 3.    3.刪除虛擬設備

      powermt remove dev=emcpower<id>

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

      powermt release

      若是此命令失敗,已刪除的虛擬設備仍會存在於/dev /sys/block 下,而且在之後動態添加新LUN時可能會引起問題。

  1. 5.    5.對每一個原始SCSI 設備執行如下命令:

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

      此命令使PowerPath 中止這些原始sd 設備上的I/O 而且將其從/dev /sys/block下移除。如此命令執行不成功,在之後動態添加新LUN時可能會引起問題。

  1. 6.    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主機編號2lpfc HBA

# lun_scan 2

 

以後確認OS 識別到新設備:

# fdisk -l

若是系統中有PowerPath ,還須要運行:

# powermt config

相關文章
相關標籤/搜索