Linux

Centos 7 伺服器看不到 Disk Array 磁碟

  • August 16, 2017

語境

我有一台新配置了 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 節,如下所示):

  1. 清理磁碟陣列

$ application delete presentation * $ application delete host * $ delete virtual_disk * $ delete pool *

  1. 創建儲存池

$ create pool raid_level=raid1 number=2

number代表池的磁碟數。創建的池的 id 為 7。

  1. 基於該池創建虛擬磁碟

$ create virtual_disk capacity=max pool=7

虛擬磁碟基於我剛剛創建的池並使用其所有儲存容量。

  1. 創建與我的伺服器對應的主機對象:

$ application create host name=io1 ostype=linux

  1. 將發現的啟動器導入到與主機的關係中:

$ 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

  1. 向主機呈現虛擬磁碟

$ 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 所說,我需要對設備進行分區,然後使用給定的文件系統對其進行格式化。

該執行緒之後:

  1. parted mklabel我使用’s 命令在磁碟上創建了一個 GPT 分區表。

$ parted /dev/sdb mklabel gpt

  1. 然後,我使用以下命令創建了一個主分區,以最佳對齊方式佔據該設備上的所有空間(從 0% 到 100%)parted mkpart

$ parted --align optimal /dev/sdb mkpart primary 0% 100%

那給了我一個分區/dev/sb1

  1. 之後,我用文件系統格式化了分區xfs(我已經將該文件系統用於我的其他分區):

$ mkfs.xfs /dev/sdb1

  1. 最後,我掛載了分區:

mount /dev/sdb1 /mnt/disk_array/

現在一切正常:)

引用自:https://serverfault.com/questions/710784