我有一台新安装了CentOS 7的服务器,连接到带有光纤通道连接的磁盘阵列.
我想在我服务器的文件系统上安装磁盘阵列的磁盘,然后在其上设置一个NFS服务器,使该存储可供集群中的所有节点使用(服务器和磁盘阵列都是一个小集群的一部分我’管理).
服务器:Bull 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)
所以我认为我的服务器很好地检测到了FC HBA(光纤通道主机总线适配器),它似乎来自Emulex品牌.
磁盘阵列与Red Hat 5& 6服务器兼容,所以我不确定它是否真的可以与CentOS 7服务器一起使用,但我决定尝试一下.
我已经按照磁盘阵列的用户指南,我已经能够从服务器远程连接到它,并且我已经完成了所有必要的配置(创建一个包含2个磁盘的Raid 1存储池,从中创建一个虚拟磁盘该池用于将磁盘提供给服务器,使用LUN编号将虚拟磁盘提供给主机,…).但是,用户指南没有说明服务器端的任何内容.
磁盘阵列配置
有关我如何在磁盘阵列端执行配置的一些细节.
磁盘阵列OS是SFA OS v1.3.0.8.我发现的最接近的手册是this one(v1.4.0).基本上这是我遵循的步骤(对应于文档的第3.6.5节,以及后面):
>清理磁盘阵列
$application删除演示文稿*
$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创建主机名= io1 ostype = linux
>将已发现的启动器导入与主机的关系中:
发现$app show *
|发起者标识符| |
指数|输入| ID |节点|港口| Ctrl 0 | Ctrl 1 |
00003 FC 0x000001 0x20000000c99de40f 0x10000000c99de40f 1
总FC发起人: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)
虚拟磁盘和存储池似乎都处于Ready状态.
问题
既然我已经将磁盘提供给我的服务器,我想将该存储空间作为文件系统安装在我的服务器上.
我试过检查/ dev /目录.目前只安装了sda磁盘(我的服务器硬盘).我查询了/ dev /中的每个文件,发现了一些可能与光纤通道或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]
运行扫描命令后,我仍然找不到aditional / 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 *的符号链接,它们对应于我的服务器本地磁盘.
正如比利所说,我跑了
echo’ – – – ‘> / SYS /班/ scsi_host / host10 /扫描
但它没有输出任何东西,并且仍然没有出现任何新的/ dev / sd *.
问题
我假设成功后磁盘应该显示为/ dev / sd * /.真的吗?如果没有,那些磁盘应该出现在哪里?
最后,如何让这些磁盘出现在我的服务器角度?
编辑
按照billyw的建议,我运行echo 1> / SYS /班/ fc_host /主机X / issue_lip.这是logs.
显然FLOGI错误与此无关,因为我处于循环拓扑中,而不是结构拓扑.仍然没有出现在/ dev中的磁盘.
现在,在this thread之后,我重新启动了lpfc驱动程序:
$modprobe -r lpfc $modprobe lpfc
这导致these logs在/ 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.我重新启动lpfc,这次禁用npiv(我觉得npiv在我的情况下没用):
$modprobe -r lpfc $modprobe lpfc lpfc_enable_npiv=0
Logs是完全相同的,但npiv消息消失了.
我还在调查日志,我的TODO列表上的下一个错误是警告!收到指示此目标上的LUN分配已更改的指示. Linux SCSI层不会自动重新映射LUN分配.
解决方法
停止lpfc驱动程序:
$modprobe -r lpfc
启动lpfc驱动程序:
$modprobe lpfc
然后,我的设备出现在/ dev / sdb下.之后,正如GregL所说,我需要对设备进行分区,然后使用给定的文件系统对其进行格式化.
继that thread之后:
>我使用parted mklabel命令在磁盘上创建了一个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 /
现在一切正常:)