RHEL 7.9 通过 FC 直连 Dell EMC Unity 400:多路径、磁盘扫描与空间配置指南
RHEL 7.9 通过 FC 直连 Dell EMC Unity 400:多路径、磁盘扫描与空间配置指南
本文介绍 Red Hat Enterprise Linux 7.9 服务器通过 Fibre Channel(FC)直连 Dell EMC Unity 400 后,如何完成主机注册、LUN 映射、FC HBA 检查、DM-Multipath 配置、磁盘扫描、LVM/XFS 创建,以及 LUN 在线扩容。
适用范围:RHEL 7.9 数据盘、Dell EMC Unity 400、FC 直连、Linux Native DM-Multipath,非 SAN Boot。
高风险提醒:
pvcreate、mkfs、wipefs等命令会改写磁盘。执行前务必根据 WWID、容量、Unity LUN 名称 三项交叉确认目标盘。文件系统和 LVM 只能创建在/dev/mapper/mpath*或 WWID 对应的多路径设备上,不能直接使用/dev/sdX。
一、规划 FC 直连拓扑
1. 两路径拓扑
RHEL HBA Port 0 ───── Unity SPA FC Port
RHEL HBA Port 1 ───── Unity SPB FC Port每个 LUN 通常能看到两条路径:一条到 SPA,另一条到 SPB。Unity 使用 ALUA,LUN 所属 SP 的路径一般为 optimized,另一 SP 的路径为 non-optimized。
2. 四路径拓扑
FC 直连是一对一连接。如果需要四条路径,主机通常需要四个 HBA 端口:
HBA Port 0 ───── SPA FC0
HBA Port 1 ───── SPB FC0
HBA Port 2 ───── SPA FC1
HBA Port 3 ───── SPB FC1这样在任一 SP 成为 LUN owner 时,可拥有两条 optimized 路径,并保留另一 SP 的故障切换路径。
二、在 Unity 上配置主机和 LUN
在 Unity Unisphere 中完成以下操作:
- 确认 SPA、SPB 的 FC 前端端口均正常。
- 获取 RHEL 主机所有 FC HBA 端口的 WWPN。
- 创建 Host,操作系统类型选择 Linux,并添加所有 FC Initiator WWPN。
- 创建或选择 Storage Pool。
- 创建 LUN。
- 将 LUN 分配给该 Host,配置 Host Access。
- 确保同一台 Linux 主机的所有 WWPN 都属于同一个 Unity Host 对象。
- 检查 Initiator 状态,确认已登录、已注册。
FC 直连不需要交换机 zoning,但 Unity 侧的主机注册和 LUN masking 仍然必须配置。
三、检查 RHEL FC HBA
1. 安装所需工具
yum install -y device-mapper-multipath sg3_utils lsscsi sysfsutils查看 HBA 型号和驱动:
lspci -nn | egrep -i 'fibre|fiber|fc'
lsmod | egrep 'qla2xxx|lpfc'常见驱动:
- QLogic:
qla2xxx - Broadcom/Emulex:
lpfc
2. 查看 FC 端口、WWPN 和链路状态
for h in /sys/class/fc_host/host*; do
echo "===== $h ====="
printf "WWPN: "; cat "$h/port_name"
printf "State: "; cat "$h/port_state"
printf "Type: "; cat "$h/port_type"
printf "Speed: "; cat "$h/speed"
printf "Supported: "; cat "$h/supported_speeds"
done正常情况下应看到类似:
WWPN: 0x100000109bxxxxxx
State: Online
Type: Point-To-Point
Speed: 16 Gbit也可以查看详细信息:
systool -c fc_host -v如果 port_state 不是 Online,优先检查光纤线、模块、HBA/Unity 端口速率、Unity FC 端口状态,以及 HBA 固件和驱动兼容性。
四、配置 DM-Multipath
1. 启用 multipathd
mpathconf --enable --with_multipathd y
systemctl enable multipathd
systemctl restart multipathd
systemctl status multipathd2. 优先使用 RHEL 内置设备规则
RHEL 7.9 的 device-mapper-multipath 通常已经包含 Dell EMC/DGC 的设备规则。建议先使用最小 /etc/multipath.conf:
defaults {
user_friendly_names yes
find_multipaths yes
polling_interval 5
}加载配置:
multipathd reconfigure
multipath -r查看系统最终展开的配置:
multipath -t重点确认输出中是否存在适用于 vendor "DGC"、Unity VRAID 的设备规则。不要在没有验证的情况下覆盖系统内置配置。
3. 内置规则未正确识别时的参考配置
只有在 multipath -t 缺少相应规则,或实际路径未按 ALUA 正确分组时,才考虑增加以下设备段。正式使用前应对照当前 Unity Host Connectivity Guide 和 Red Hat 支持矩阵核验:
devices {
device {
vendor "DGC"
product ".*"
product_blacklist "LUNZ"
path_grouping_policy group_by_prio
path_selector "round-robin 0"
path_checker emc_clariion
hardware_handler "1 alua"
prio alua
failback immediate
rr_weight uniform
no_path_retry 60
retain_attached_hw_handler yes
detect_prio yes
}
}重新加载并检查:
multipathd reconfigure
multipath -r
multipath -ll不要配置blacklist { devnode "^sd.*" },否则可能把 Unity 的所有底层路径一起屏蔽。若需排除本地系统盘,最好使用本地盘的精确 WWID,而不是不稳定的/dev/sda名称。
五、扫描 Unity 新 LUN
Unity 完成 LUN 分配后,在 RHEL 上执行以下操作。
1. 扫描全部 SCSI Host
for h in /sys/class/scsi_host/host*; do
echo "- - -" > "$h/scan"
done
udevadm settle也可以使用:
rescan-scsi-bus.sh -a生产环境中不要随意使用带删除行为的全量扫描参数,除非已经明确核对被移除的 LUN。
2. 重新加载多路径
multipathd reconfigure
multipath -r
udevadm settle3. 查看扫描结果
lsscsi -t -g
lsblk -o NAME,TYPE,SIZE,VENDOR,MODEL,HCTL,WWN,MOUNTPOINT
multipath -llUnity LUN 的输出通常类似:
360060160xxxxxxxxxxxxxxxxxxxx dm-2 DGC,VRAID
size=500G hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| `- 2:0:0:1 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
`- 3:0:0:1 sdc 8:32 active ready running检查要点:
- 同一个 LUN 只生成一个 multipath map 和一个 WWID。
- 所有
/dev/sdX路径都归入同一个 WWID。 - 路径状态为
active ready running。 - 至少有一组 optimized 高优先级路径。
- SPA、SPB 两侧路径都存在。
- 路径数量与物理连接数量一致。
一组 prio=50、另一组 prio=10 通常是 Unity ALUA 的正常表现,不表示低优先级路径发生故障。
六、使用 LVM 和 XFS 创建数据空间
以下示例假设新 LUN 的多路径设备为 /dev/mapper/mpatha。实际环境也可能直接显示为 /dev/mapper/360060160...。
1. 确认目标盘没有数据
multipath -ll mpatha
lsblk -f /dev/mapper/mpatha
wipefs -n /dev/mapper/mpathawipefs -n 只检查签名,不删除数据。
2. 推荐整块 LUN 直接创建 LVM PV
SAN LUN 用于 LVM 时通常无需额外分区:
pvcreate /dev/mapper/mpatha
vgcreate vg_unity /dev/mapper/mpatha
lvcreate -n lv_data -l 100%FREE vg_unity创建 XFS:
mkfs.xfs /dev/vg_unity/lv_data挂载:
mkdir -p /data
mount /dev/vg_unity/lv_data /data验证:
findmnt /data
df -hT /data
pvs -o+devices
vgs
lvspvs -o+devices 应显示 PV 位于 multipath 设备上,而不是某一条 /dev/sdb 路径。
3. 配置开机挂载
获取文件系统 UUID:
blkid /dev/vg_unity/lv_data在 /etc/fstab 中添加:
UUID=<文件系统UUID> /data xfs defaults,_netdev 0 0测试配置:
umount /data
mount -a
findmnt /data
df -hT /data对于非关键数据盘,如果不希望 SAN 暂时不可用导致系统启动长时间等待,可以结合实际启动策略考虑:
UUID=<文件系统UUID> /data xfs defaults,_netdev,nofail,x-systemd.device-timeout=120 0 0关键业务磁盘不要盲目添加 nofail,否则存储未挂载时业务可能继续启动,并误将数据写入本地空目录。
七、Unity LUN 在线扩容
假设:
- multipath 名称:
mpatha - VG:
vg_unity - LV:
lv_data - 挂载点:
/data - PV 直接创建在整块 multipath LUN 上,没有分区
1. 在 Unity 上扩展 LUN
例如将 LUN 从 500 GB 扩展到 1 TB。
2. 重新扫描该 map 的所有底层路径
MAP=mpatha
DMDEV=$(basename "$(readlink -f /dev/mapper/$MAP)")
for p in /sys/class/block/$DMDEV/slaves/*; do
echo 1 > "$p/device/rescan"
done
udevadm settle查看该 map 的底层路径:
ls -l /sys/class/block/$DMDEV/slaves/3. 扩展 multipath map
multipathd resize map mpatha
multipath -r
multipath -ll mpatha确认新容量:
blockdev --getsize64 /dev/mapper/mpatha
lsblk /dev/mapper/mpatha4. 扩展 LVM PV 和 LV
pvresize /dev/mapper/mpatha
pvs
vgs使用 VG 全部剩余空间:
lvextend -l +100%FREE /dev/vg_unity/lv_data或者仅增加指定容量:
lvextend -L +200G /dev/vg_unity/lv_data5. 扩展文件系统
XFS:
xfs_growfs /dataEXT4:
resize2fs /dev/vg_unity/lv_data最终验证:
df -hT /data
pvs
vgs
lvs
multipath -ll mpatha如果 PV 位于分区(如 /dev/mapper/mpatha1)上,LUN 扩容后还需先扩展 GPT/分区和 multipath 分区映射,再执行 pvresize。这也是 SAN LUN 用于 LVM 时通常推荐整盘创建 PV 的原因。
八、增加新 LUN 扩展现有 VG
除了扩大原 LUN,还可以在 Unity 新建 LUN,再加入现有 VG:
pvcreate /dev/mapper/mpathb
vgextend vg_unity /dev/mapper/mpathb
lvextend -l +100%FREE /dev/vg_unity/lv_data
xfs_growfs /data验证:
pvs -o+devices
vgs
lvs
df -hT /data九、常见问题排查
1. FC 端口不是 Online
for h in /sys/class/fc_host/host*; do
echo "$h"
cat "$h/port_state"
cat "$h/port_type"
cat "$h/speed"
done检查光纤模块和跳线、HBA 与 Unity 端口速率、Unity FC 端口是否启用,以及 HBA 驱动和固件。
issue_lip 会重新初始化 FC 链路,可能影响该 HBA 上的所有业务 LUN,不要在生产环境随意执行:
echo 1 > /sys/class/fc_host/hostX/issue_lip通常应先执行普通 SCSI scan。
2. HBA Online,但看不到 LUN
依次检查:
- Unity 是否添加了正确的 WWPN。
- 所有 WWPN 是否属于同一个 Host 对象。
- LUN 是否已经授予该 Host Access。
- Unity Initiator 是否显示已登录。
- 是否扫描了全部 SCSI Host。
- 系统日志中是否存在 FC、SCSI、ALUA 或 multipath 错误。
dmesg -T | egrep -i 'scsi|fc|qla|lpfc|multipath|dgc|alua'
lsscsi -t -g
multipathd show paths3. 只有一条路径
常见原因:
- 只连接了一个 HBA 端口。
- 只连接了 SPA 或 SPB。
- 某条 FC 链路未 Online。
- Unity 仅注册了部分 WWPN。
- LUN 没有分配给包含全部 Initiator 的 Host。
- 第二条路径尚未扫描。
4. 能看到多个 /dev/sdX,但没有 mpath 设备
multipath -v3
multipathd show paths
multipathd reconfigure
multipath -r
multipath -ll检查各路径 WWID:
/usr/lib/udev/scsi_id --whitelisted --device=/dev/sdb
/usr/lib/udev/scsi_id --whitelisted --device=/dev/sdc同一个 Unity LUN 的所有路径必须返回同一个 WWID。如果启用了 find_multipaths yes 且目前只有一条路径,LUN 可能暂时不会自动建立 multipath map。应先修复第二条路径,不要直接在单路径 /dev/sdX 上创建文件系统。
5. LVM 报 Duplicate PV
pvs -o pv_name,pv_uuid,vg_name,devices
multipath -ll检查 PV 是否误建在 /dev/sdX 上。不要直接照搬“拒绝全部 /dev/sd*”的 LVM filter,因为本地系统盘也可能是 /dev/sda。应根据本机系统盘、SAN WWID 和现有 LVM 布局定制 /etc/lvm/lvm.conf。
十、生产环境建议
- 使用两块独立 HBA,降低单 HBA 故障风险。
- 至少分别连接 Unity SPA 和 SPB。
- 使用文件系统 UUID 配置挂载。
- LVM 只使用 multipath map,绝不使用任意
/dev/sdX路径。 - 不要只依靠
mpatha名称识别业务盘;应记录 Unity LUN 名称、WWID、容量、VG 和挂载点的对应关系。 - 新建 LUN 前检查 Unity Pool 物理容量,并为快照、复制保留空间。
- Thin LUN 需要同时监控 Linux
df、LVMpvs/vgs/lvs和 Unity Pool 使用率。 - 生产接入前分别进行 SPA、SPB 路径故障切换测试,并确认业务 I/O 持续。
- 核对 Dell E-Lab/Unity Host Connectivity Guide 中 Unity OE、HBA 固件、驱动和 RHEL 7.9 的兼容矩阵。
- RHEL 7.9 已进入扩展支持阶段,生产系统应确认 Red Hat ELS、安全补丁和升级策略。
总结
Unity FC 直连场景的关键顺序是:物理链路 Online → Unity 注册全部 WWPN → LUN 授权 → RHEL 扫描 SCSI → multipath 聚合 → 只在 multipath 设备上创建 LVM/文件系统。只要坚持以 WWID 为准、避免直接操作 /dev/sdX,并在投产前完成路径故障测试,就能建立稳定且可维护的存储访问环境。
暂无评论
还没有评论,快来抢沙发吧!