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 HBA1. 安装所需工具yum install -y device-mapper-multipath sg3_utils lsscsi sysfsutils查看 HBA 型号和驱动：lspci -nn | egrep -i 'fibre|fiber|fc' lsmod | egrep 'qla2xxx|lpfc'常见驱动：QLogic：qla2xxxBroadcom/Emulex：lpfc2. 查看 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-Multipath1. 启用 multipathdmpathconf --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 新 LUNUnity 完成 LUN 分配后，在 RHEL 上执行以下操作。1. 扫描全部 SCSI Hostfor 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 PVSAN 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 名称：mpathaVG：vg_unityLV：lv_data挂载点：/dataPV 直接创建在整块 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 mapmultipathd resize map mpatha multipath -r multipath -ll mpatha确认新容量：blockdev --getsize64 /dev/mapper/mpatha lsblk /dev/mapper/mpatha4. 扩展 LVM PV 和 LVpvresize /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 端口不是 Onlinefor 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 PVpvs -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、LVM pvs/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，并在投产前完成路径故障测试，就能建立稳定且可维护的存储访问环境。