Centos 7 伺服器看不到 Disk Array 磁碟
語境
我有一台新配置了 CentOS 7 的伺服器,它通過光纖通道連接到磁碟陣列。
我想將磁碟陣列的磁碟掛載到伺服器的文件系統上,然後在其上設置 NFS 伺服器以使該儲存可用於集群中的所有節點(伺服器和磁碟陣列都是我的小集群的一部分)米管理)。
**伺服器:**公牛R423
磁碟陣列: DDN S2A6620(DirectData 網路)
我只使用磁碟陣列的兩個控制器之一。
以下是命令
lspci
輸出的摘錄:# lspci 85:00.0 Fibre Channel: Emulex Corporation Saturn-X: LightPulse Fibre Channel Host Adapter (rev 03) 85:00.1 Fibre Channel: Emulex Corporation Saturn-X: LightPulse Fibre Channel Host Adapter (rev 03)
所以我認為我的伺服器可以很好地檢測到似乎來自 Emulex 品牌的 FC HBA(光纖通道主機匯流排適配器)。
磁碟陣列與 Red Hat 5&6 伺服器兼容,所以我不確定它是否真的可以與 CentOS 7 伺服器一起使用,但我決定試一試。
我遵循了磁碟陣列的使用者指南,我已經能夠從伺服器遠端連接到它,並且我已經完成了所有必要的配置(創建 2 個磁碟的 Raid 1 儲存池,從該池將磁碟提供給伺服器,將虛擬磁碟提供給具有 LUN 編號的主機,…)。但是使用者指南並沒有說明伺服器端的任何內容。
磁碟陣列配置
關於我如何在磁碟陣列端執行配置的一些細節。
磁碟陣列作業系統為 SFA OS v1.3.0.8 。我找到的最接近的手冊是這個(v1.4.0)。基本上這是我遵循的步驟(對應於文件的第 3.6.5 節,如下所示):
- 清理磁碟陣列
$ application delete presentation * $ application delete host * $ delete virtual_disk * $ delete pool *
- 創建儲存池
$ create pool raid_level=raid1 number=2
number
代表池的磁碟數。創建的池的 id 為 7。
- 基於該池創建虛擬磁碟
$ create virtual_disk capacity=max pool=7
虛擬磁碟基於我剛剛創建的池並使用其所有儲存容量。
- 創建與我的伺服器對應的主機對象:
$ application create host name=io1 ostype=linux
- 將發現的啟動器導入到與主機的關係中:
$ app show discovered * | Initiator Identifier | | Index | Type | ID | node | port | Ctrl 0 | Ctrl 1 | 00003 FC 0x000001 0x20000000c99de40f 0x10000000c99de40f 1 Total FC Initiators: 1
只有一個發現的啟動器,ID 為 3。它對應於我伺服器的光纖通道主機之一:
$ cat /sys/class/fc_host/host10/port_name 0x10000000c99de40f
它與磁碟陣列的控制器 1 相關聯,這實際上是我正在使用的唯一控制器。
$ application import discovered_initiator 3 host 3
- 向主機呈現虛擬磁碟
$ application create presentation virtual_disk 7 host 3
(我創建的虛擬磁碟的id是7)
虛擬磁碟和儲存池似乎都處於就緒狀態。
問題
既然我應該將磁碟提供給我的伺服器,我想將該儲存空間作為文件系統安裝在我的伺服器上。
我試圖檢查
/dev/
目錄。現在只sda
安裝磁碟(我的伺服器硬碟)。我查詢了 中的每個文件/dev/
,發現了一些可能與 Fibre Channel 或 Scsi 有關的文件:
/dev/bsg/
是一個專用於 linux SCSI 通用驅動程序的目錄,包含/dev/bsg/fc_host9
和/dev/bsg/fc_host10
;/dev/lpfcmgmt
專用於 Emulex 驅動程序;/dev/tgt
,由 SCSI 目標使用。我安裝了
sg3_utils
,並在 fc_host10 上執行掃描:$ sg_scan /dev/bsg/fc_host10 /dev/bsg/fc_host10: scsi0 channel=0 id=0 lun=0 [em]
執行該掃描命令後,我仍然找不到附加
/dev/sd*
的 .此外,
/sys/class/fc_host/host10/
是一個連結/sys/devices/pci0000:80/0000:80:07.0/0000:85:00.1/host10/fc_host/host10
,所以我想這給了我一種公共汽車的“ID”。但這裡是目錄中的文件列表
/dev/disk/by-path
:$ ll /dev/disk/by-path total 0 lrwxrwxrwx. 1 root root 9 Aug 3 22:02 pci-0000:84:00.0-scsi-0:0:0:0 -> ../../sda lrwxrwxrwx. 1 root root 10 Aug 3 22:02 pci-0000:84:00.0-scsi-0:0:0:0-part1 -> ../../sda1 lrwxrwxrwx. 1 root root 10 Aug 3 22:02 pci-0000:84:00.0-scsi-0:0:0:0-part2 -> ../../sda2
ID 不匹配,無論如何這些都是符號連結
/dev/sda*
,對應於我的伺服器本地磁碟。按照billyw的建議,我跑了
echo '- - -' > /sys/class/scsi_host/host10/scan
但它沒有輸出任何東西,仍然沒有任何新的
/dev/sd*
出現。問題
我假設成功後磁碟應該顯示為 some
/dev/sd*/
. 真的嗎?如果沒有,這些磁碟應該出現在哪裡?最後,如何讓這些磁碟出現在我的伺服器上?
編輯
按照比利的建議,我跑了
echo 1 > /sys/class/fc_host/hostX/issue_lip
。這是日誌。顯然,這些
FLOGI
錯誤在這裡無關緊要,因為我處於循環拓撲中,而不是結構拓撲。儘管如此,沒有磁碟出現在/dev
.現在按照這個執行緒,我重新啟動了
lpfc
驅動程序:$ modprobe -r lpfc $ modprobe lpfc
這導致了這些登錄。
/var/log/messages
這一次,
/dev/sdb
又/dev/sdc
出現了。但我無法安裝它們:$ mount /dev/sdb /mnt/db mount: /dev/sdb is write-protected, mounting read-only mount: unknown filesystem type '(null)'
所以我試圖調查重新啟動時生成的日誌
lpfc
。首先,我注意到了這條Link Up Event npiv not supported in loop topology
資訊。我重新啟動,這次lpfc
禁用(我認為在我的情況下沒用):npiv``npiv
$ modprobe -r lpfc $ modprobe lpfc lpfc_enable_npiv=0
日誌完全相同,但
npiv
消息消失了。我仍在調查日誌,我的 TODO 列表中的下一個錯誤是
Warning! Received an indication that the LUN assignments on this target have changed. The Linux SCSI layer does not automatically remap LUN assignments.
.
要使磁碟出現在 下
/dev/sd*
,解決方案是重新啟動光纖通道 HBA 驅動程序,如本答案中所述。就我而言,它是lpfc
:停車
lpfc
司機:$ modprobe -r lpfc
啟動
lpfc
驅動程序:$ modprobe lpfc
然後,我的設備出現在
/dev/sdb
. 之後,正如 GregL 所說,我需要對設備進行分區,然後使用給定的文件系統對其進行格式化。在該執行緒之後:
parted
mklabel
我使用’s 命令在磁碟上創建了一個 GPT 分區表。
$ parted /dev/sdb mklabel gpt
- 然後,我使用以下命令創建了一個主分區,以最佳對齊方式佔據該設備上的所有空間(從 0% 到 100%)
parted
mkpart
:
$ parted --align optimal /dev/sdb mkpart primary 0% 100%
那給了我一個分區
/dev/sb1
。
- 之後,我用文件系統格式化了分區
xfs
(我已經將該文件系統用於我的其他分區):
$ mkfs.xfs /dev/sdb1
- 最後,我掛載了分區:
mount /dev/sdb1 /mnt/disk_array/
現在一切正常:)