Fibre Channel驱动
Linux系统上Fibre Channel驱动用户空间接口位于/sys/class文件夹下面。以下条目中,H代表主机,B代表bus号,T代表target,L代表lun id,R代表对端端口号。
注意:
如果主机使用多路径软件,修改配置参数之前,建议咨询多路径软件厂商
/sys/class目录下有三个主要文件夹跟 fibre channel相关的文件夹fc_transport、fc_remote_ports,fc_hosts。其中fc_transport代表已分配存储信息;fc_remote_ports代表主机到存储端口链路信息(fc_remote_ports文件夹包含未给主机分配存储的链路信息);fc_host代表主机HBA卡信息。
Transport: /sys/class/fc_transport/targetH:B:T/
· port_id – 存储端口的 24位交换机端口ID
· node_name – 存储端口的64位node name
· port_name – 存储端口的64位port name
Remote Port:/sys/class/fc_remote_ports/rport-H:B-R/
· port_id – 存储端口的 24位交换机端口ID
· node_name – 存储端口的64位node name
· fast_io_fail_tmo – IO故障等待时间。链路波动情况,IO尝试多长时间。
· issues_lip – 重置HBA端口,重新尝试发现存储端口。
Persistent命名
· HBA卡的管道号
· 存储端SCSI target地址
· LUN(Logical Unit Number) 号
SCSI磁盘路径在Linux上有3中表现方式:一、/dev/sd目录;二、通过major:minor号;三、/dev/disk/by-path,该目录是 /dev/sd设备的软连接。Fibre Channel磁盘路径示范如下:

讯享网
上面这三种SCSI磁盘路径都不是永久不变,当服务器新增或者删除新的PCI设备时候,路径就会发生变化,有时候即使是服务器重启也可能导致路径变成发生变化。
为了保证应用程序使用的磁盘路径能够永久不变,有以下几种方法:
1. WWID
提示:Linux自带的device-mapper-multipath工具就是通过WWID来探测SCSI磁盘路径,可以将同一设备多条路径合并,并在/dev/mapper/下面创建新的设备路径。通过multipath –l可以看到WWID与 磁盘路径、Host:Channel:Target:Lun与/dev/sd以及major:minor对应关系。

2. UUID
UUID是有文件系统在创建时候生成的,用来标记文件系统,类似WWID一样也是独一无二的。因此使用UUID来标示SCSI磁盘,也能保证路径是永久不变的。Linux上/dev/disk/by-uuid可以看到每个已经创建文件系统的磁盘设备以及与/dev/sd之间的映射关键。
注意:Linux自带的md和LVM工具也会在SCSI磁盘上面写入UUID信息。
3. UDEV
UDEV是Linux提供的一种让用户对设备进行自定义命名的机制。可以通过UDEV将WWID/UUID信息跟磁盘路径映射起来,这样也可以保证设备路径永久不变。
磁盘删除
· vmstat结果的si和so列不为空,代表系统正在进行swaping,将内存数据写入磁盘。
2. umount卸载基于待删除磁盘的文件系统
3. md和LVM中删除磁盘。LVM可以使用vgreduce从卷组移除改磁盘,然后使用pvremove从磁盘删除LVM元数据。

4. 如果磁盘使用多路径软件,通过mulitpath –l查看磁盘所有路径,然后通过multipath –f删除磁盘。(如果使用powerpath多路径软件,请参考powerpath操作手册)
5. blockdev –flushfs 将脏数据写入磁盘。这一步骤对于裸设备事情情况尤为重要,因为裸设备无法通过umount或者vgreduce将脏数据写入磁盘。
6. 删除应用程序或者脚本中的磁盘路径引用。
7. 使用命令echo 1 > /sys/block/device-name/device/delete删除磁盘,device-name以sd开头,比如sda、sdb;或者使用命令echo 1 > /sys/class/scsi_device/h:c:t:l/device/delete删除磁盘,h代表HBA卡号,c代表HBA卡channel,t代表SCSI target ID,i代表LUN ID。h:c:t:l这些信息可以通过lsscsi,scsi_id,multipath –l,ls –l /dev/disk/by-*方式查看。
8. 直接删除磁盘文件。
磁盘路径删除
2. 使用命令echo offline > /sys/block/sda/device/state将磁盘路径offline。多路径软件将会使用剩余路径处理IO。
3. 使用命令echo 1 > /sys/block/device-name/delete命令从SCSI子系统删除磁盘路径,device-name通常以sd开头,比如sda、sdb。
添加新磁盘或者磁盘路径
添加新磁盘或者磁盘路径,系统可能会自动分配老磁盘使用的名称给新磁盘,比如/dev/sd,major:minoe和/dev/disk/by-path。因此在添加之前,请确认应用程序和脚本已经删除老磁盘的引用。
2. 使用下面命令在系统上重新扫描磁盘设备。
echo “c t l” > /sys/class/scsi_host/hosth/scan
h代表HBA号,c代表HBA卡channel,t代表SCSI target ID,l代表LUN ID。
也可以使用 命令echo “scsi add-single-device 0 0 0 0” > /proc/scsi/scsi完成扫描。
a. 某些HBA卡在存储分配完成后,需要通过issue_lip才能发现新增加设备,具体参考“存储链路扫描”。(如果需要issue_lip,建议停止IO操作)
b. 新分配LUN在操作系统没有显示,可以通过sg_luns命令(来自sg3_utils包)重新获取阵列LUN列表。
c. c:t:l信息可以使用命令grep “存储SP端口WWPN” /sys/class/fc_transport/*/[node_name|port_name]获取;也可以通过lsscsi、scsi_id、multipath –l或者ls –l /dev/disk/by-*方法获取。
3. 使用多路径软件multipath(或者其他多路径软件)确认磁盘路径添加正常。
存储链路扫描
2. 在系统内存资源使用紧张情况下,不建议进行链路删除操作。系统内存使用情况可以通过vmstat 1 100命令评估。
· rmmod 驱动/ modprobe 驱动 删除/重新加载HBA卡驱动。
参考
· Redhat Linux – Storage Administration Guide
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/127466.html