精读笔记(RHCA 英文教材)· RH436 Chapter 9 Accessing Storage Devices Resiliently
精读笔记(RHCA 英文教材)· RH436 Chapter 9 Accessing Storage Devices Resiliently
教材原文:RHCA 官方英文教材(PDF 第 291~324 页)(OCR 整书版已从本站移除,本页为章节精读) 关联知识:Ch8(iSCSI initiator 提供多路径来源)、Ch10(HA-LVM 建在 multipath 设备上);本章=DM Multipath 全流程(概念→配置 mpatha→监控/测试故障切换)。 结构:3 个 Section(9.1 概念+Quiz;9.2 配置+GE;9.3 测试+GE)+ 章末 Lab(lab: multipath-review)。
Chapter Goal / Objectives(原文+译)
- GOAL: Configure resilient access to storage devices that have multiple access paths.(为有多个访问路径的存储设备配置弹性访问。)
- OBJECTIVES: ① 描述存储 multipath 及其术语、何时使用;② 用 multipath 设备配置弹性访问;③ 监控、排障与测试 multipath 设备。
9.1 Describing Device-Mapper Multipath
- 为什么用 multipathing:同一存储设备可通过多条通信路径访问(FC、SAS、iSCSI 等)。multipath 生成一个虚拟设备,任一路径可用即可访问;一路径故障→系统自动切到其他路径(冗余/弹性);也可把多条路径聚合为一组提供更大带宽/更好性能。
- ⚠️ 红线:multipath 只防"访问路径"故障;存储阵列本身宕机,即使所有路径正常也照样丢访问。
- RHEL 实现三件套:
dm_multipath内核模块:生成虚拟设备;multipathd守护进程:管理设备并监控路径;multipath命令行工具:查看状态。- 包名:
device-mapper-multipath(装包后不会自动生成/etc/multipath.conf,无该文件 multipathd 起不来)。
- 设备命名:
- 内核给每个 multipath 设备发全局唯一且不变的 WWID(World Wide Identifier);默认设备名=WWID,并在
/dev/mapper/下建设备文件。 - 设
user_friendly_names yes→ 名字形如/dev/mapper/mpathN(N 为字母 a/b/c…);映射存在/etc/multipath/bindings。集群多节点必须同步同一份 bindings 文件才能同名。 - 有分区时会生成
/dev/mapper/mpathap1这类分区设备(mpatha 的第 1 分区)。 - 自定义别名:在
multipaths{}段用alias选项(如别名ClusterStorage)。 - ⚠️
/dev/dm-N仅供系统内部使用,禁止直接拿来访问存储。
- 内核给每个 multipath 设备发全局唯一且不变的 WWID(World Wide Identifier);默认设备名=WWID,并在
9.2 Configuring Resilient Storage Access
初始化配置
yum install device-mapper-multipath
mpathconf --enable --with_multipathd y # 生成默认 /etc/multipath.conf 并立即启动 multipathd
# 想先手工调参再启动:mpathconf --enable(不带 --with_multipathd y),改完 systemctl start multipathdmpathconf --user_friendly_names n|y:开关友好名;默认 y(单设备好用,多设备易混可关,关后按 WWID 命名)。- 默认
find_multipaths yes:自动排除只有单路径的设备(本地盘/无冗余路径控制器),此时 blacklist 段通常留空。 - 也可用红帽门户在线 multipath helper tool 生成配置文件。
/etc/multipath.conf 各段(按优先级:multipaths > devices > defaults)
blacklist {}:发现时排除的设备(一般排除本地盘/单路径控制器),按devnode "^cciss"正则 或wwid 36…排除。blacklist_exceptions {}:虽在黑名单但放行的设备。defaults {}:所有设备默认参数。devices {}:按存储控制器类型(vendor/product/revision 正则,匹配 sysfs)覆盖默认值。multipaths {}:按 WWID 指定某个 multipath 设备的参数(优先级最高),如alias。- 查 WWID:
udevadm info /dev/sda | grep ID_SERIAL=(取自 udev 数据库的序列号)。
9.2 GE(lab: multipath-conf)
nodea/b/c 三节点访问 storage 的 iSCSI target(经 san01/san02 两网 → /dev/sda、/dev/sdb):
- 三节点
yum install device-mapper-multipath。 - nodea:
mpathconf --enable生成配置。 - nodea 查 WWID → 编辑
multipath.conf末尾加:multipaths { multipath { wwid 36001405b…f144a04 alias ClusterStorage } }。 scp /etc/multipath.conf nodeb:/etc、scp … nodec:/etc(root 密码 redhat)。- 三节点
systemctl enable --now multipathd。 - 验证:
multipath -ll出现ClusterStorage (WWID) dm-0 LIO-ORG,storage.disk1;ls /dev/mapper/ClusterStorage存在。
9.3 Testing Resilient Storage Access
读 multipath -ll 输出
-l快速总览;-ll立即检测所有路径再报状态(信息更实时)。- 第 1 行:友好名
mpatha (WWID) dm-1 厂商,产品;第 2 行:size=… features=… hwhandler='1 alua' wp=rw(wp=写权限)。 - 路径组:
policy='service-time 0' prio=50 status=active。同一时刻只有一组active,其余为enabled(备援待命)。policy对应配置里的path_selector参数,决定组内路径间如何分发 I/O。 - 每条路径:
4:0:0:1 sdc 8:32 active ready running。两状态字段同义:前=内核视角,后=multipath checker 视角(path_checker参数定义)。好路径ready,坏路径failed faulty offline。 - 路径分组策略:
failover:每条路径自成一组(例子里 mpatha 两个组各一条路径 sda/sdb)→ 一主一备、无负载分担;multibus:所有路径进同一组 → 负载均摊/带宽聚合。
- 监控切换:
watch -n 1 -d "multipath -ll"实时看。- 备用组路径坏:仅该路径变
failed faulty,active 组不受影响。 - active 组路径坏:原组变
enabled,备用组自动升active(自动故障切换)。
- 备用组路径坏:仅该路径变
- failback 默认 manual:坏路径恢复后不会自动回切,当前 active 组保持;要自动回切需在 multipath.conf 配
failback immediate(或某秒数)。
9.3 GE(lab: multipath-test)
nodea 上 /dev/mapper/mpatha(双路径到共享 iSCSI):
mkfs -t xfs /dev/mapper/mpatha→mount /dev/mapper/mpatha /mnt。multipath -ll确认 active 路径是/dev/sda。- 溯源网络:
iscsiadm -m session -P 3 | egrep 'Current Portal|scsi disk'(sda→192.168.1.15:3260);ip route找到对应网卡 eth2。 - 终端1 开
watch -n 1 -d "multipath -ll";终端2nmcli device disconnect eth2→ 观察 sdafailed faulty、sdb 组升status=active;echo Hello World > /mnt/test1.txt证明文件系统仍可写。 nmcli device connect eth2恢复冗余 → sda 回ready但路径组不回切(failback=manual);再写test2.txt。Ctrl+C 结束 watch。
Lab 概要(lab: multipath-review)
nodec/noded 两机都要经两条网络(192.168.1.15 与 192.168.2.15,均 3260)对 target iqn.2021-04.com.example:store1 各 discovery+login 一次(IQN 分别为 :nodec/:noded,改后重启 iscsid)→ mpathconf 建 multipath 并 alias=disk1(两机 /dev/mapper/disk1 同名)→ mkfs.ext4 /dev/mapper/disk1 → nodec 挂载建文件卸载、再 noded 重复(绝不两机同时挂)→ lab grade multipath-review。
命令速查表
| 用途 | 命令 | | 装 multipath 包 | yum install device-mapper-multipath | | 生成默认配置并启动 | mpathconf --enable --with_multipathd y | | 只生成配置后手动启动 | mpathconf --enable → systemctl start multipathd | | 查 WWID | udevadm info /dev/sda \| grep ID_SERIAL= | | 看拓扑/实时状态 | multipath -l;multipath -ll | | 实时监控切换 | watch -n 1 -d "multipath -ll" | | 断/通一块网卡 | nmcli device disconnect eth2;nmcli device connect eth2 | | 看会话路径对应盘 | iscsiadm -m session -P 3 \| egrep 'Current Portal\|scsi disk' | | 实验/评分 | lab start multipath-conf\|multipath-test\|multipath-review;lab grade multipath-review |
词汇表
| 英文 | 中文 | 速记 |
|---|---|---|
| multipath / multipathing | 多路径 | 一虚拟设备走多条物理路径 |
| resilient access | 弹性访问 | 一路断自动换一路 |
| WWID | 全球唯一标识 | 设备真名,不变 |
| user_friendly_names | 友好命名 | 开→/dev/mapper/mpathN |
| bindings | 绑定映射文件 | 集群各节点要同步 |
| alias | 别名 | multipaths 段给 WWID 起名 |
| mpathconf | 配置工具 | 生成/改 multipath.conf |
| blacklist / exceptions | 黑名单/例外 | 排除/放行设备 |
| defaults/devices/multipaths | 配置段 | 优先级 multipaths>devices>defaults |
| path group | 路径组 | 一组路径,同时仅一组 active |
| policy/path_selector | 路径选择策略 | service-time/queue-length… |
| prio | 优先级 | 决定组排序(如 alua 50/10) |
| active / enabled | 激活/待命 | 组状态;故障自动切换 |
| ready / faulty | 就绪/故障 | 路径状态(内核=checker) |
| failback | 回切策略 | 默认 manual 不自动回切 |
| failover / multibus | 分组策略 | 一路一组/全路径一组 |
| dm-N | 内部设备名 | 勿直接使用 |
自测 10 题
- multipath 能防存储阵列宕机吗?(不能,只防访问路径故障)
- RHEL8 装哪个包?(device-mapper-multipath)
- 没 /etc/multipath.conf 会怎样?(multipathd 起不来)
- 三条命令对应哪三个角色?(dm_multipath 内核模块生成虚拟设备 / multipathd 管理监控 / multipath 查看状态)
- user_friendly_names=yes 设备在哪?(/dev/mapper/mpathN,映射存 /etc/multipath/bindings)
- 集群多节点同名靠什么?(同步同一份 bindings 或统一 alias)
- 配置段优先级?(multipaths > devices > defaults)
- 怎么把 multipath 设备的 WWID 查出来?(udevadm info /dev/sdX | grep ID_SERIAL=)
- 为什么断网后恢复,multipath 不切回原路径?(failback 默认 manual)
- 一机在写文件时另一台机能否同时挂同一 multipath 卷?(不能,本地 FS 并发会损坏,须 GFS2)
