Linux存储在线管理(一)FC磁盘设备管理

Linux存储在线管理(一)FC磁盘设备管理本文主要介绍 Linux 环境下 FC 磁盘管理相关只是 主要内容包括 FC 驱动介绍 Linux SCSI 磁盘永久命名 FC 磁盘添加与删除 FC 磁盘路径添加与删除以及 FC 存储链路在线扫描 更多信息 Fibre Channel 驱动 Linux 系统上 Fibre Channel 驱动用户空间接口位于 sys class 文件夹下面 以下条目中 H 代表主机

大家好,我是讯享网,很高兴认识大家。

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磁盘路径示范如下:
image001
讯享网
上面这三种SCSI磁盘路径都不是永久不变,当服务器新增或者删除新的PCI设备时候,路径就会发生变化,有时候即使是服务器重启也可能导致路径变成发生变化。
为了保证应用程序使用的磁盘路径能够永久不变,有以下几种方法:
1. WWID

提示:Linux自带的device-mapper-multipath工具就是通过WWID来探测SCSI磁盘路径,可以将同一设备多条路径合并,并在/dev/mapper/下面创建新的设备路径。通过multipath –l可以看到WWID与 磁盘路径、Host:Channel:Target:Lun与/dev/sd以及major:minor对应关系。
image002
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

小讯
上一篇 2025-03-16 07:51
下一篇 2025-02-10 21:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/127466.html