精读笔记(RHCA 英文教材)· RH436 Chapter 10 Configuring LVM in Clusters
精读笔记(RHCA 英文教材)· RH436 Chapter 10 Configuring LVM in Clusters
教材原文:RHCA 官方英文教材(PDF 第 325~362 页)(OCR 整书版已从本站移除,本页为章节精读) 关联知识:Ch8/Ch9(共享 iSCSI+multipath 盘作 LVM 底)、Ch11(共享 VG 上建 GFS2);本章=集群里两种 LVM 用法:HA-LVM(单节点独占)与 LVM Shared Volume Groups(全节点并发)。 结构:3 个 Section(10.1 LVM 概念+Quiz;10.2 HA-LVM+GE;10.3 共享 VG+GE)+ 章末 Lab(lab: lvm-review)。
Chapter Goal / Objectives(原文+译)
- GOAL: Select the correct LVM configuration for use in your cluster, and configure and manage it.(为集群选对 LVM 配置方式并配置管理。)
- OBJECTIVES: ① 描述 LVM 基本概念;② 把 HA-LVM 卷配成"一次一个节点使用"的集群资源;③ 用共享 VG 建出"所有节点可同时使用"的逻辑卷。
10.1 Reviewing LVM Concepts
- 层级:物理设备(整盘/分区/RAID/SAN 盘)→
pvcreate打成 PV(物理卷,分 4MiB 物理扩展 PE)→vgcreate聚成 VG(卷组=存储池,PV 只能属于一个 VG)→lvcreate从空闲 PE 划出 LV(逻辑卷,LE 映射 PE)→ LV 上建文件系统。 - 两种设备名等价:
/dev/vgname/lvname与/dev/mapper/vgname-lvname。 - 常用命令与查看(缩写版小写命令输出更紧凑):
pvcreate /dev/sdb /dev/sdc # 打 PV(一次可多个)
vgcreate vg01 /dev/sdb /dev/sdc # 建 VG
lvcreate -n lv01 -L 1G vg01 # 建 LV(-n 名字 -L 大小;-l 用 PE 数)
pvdisplay/pvs · vgdisplay/vgs · lvdisplay/lvs # 查看详情/摘要- 关键字段:PV 的
PE Size 4.00MiB(最小分配单位)、Total/Free/Allocated PE;VG 的VG Size、Free PE/Size;LV 的Current LE(LE 数×PE 大小=容量)。 - 选盘先
lsblk、blkid、cat /proc/partitions确认设备名。
10.2 Managing High Availability LVM(HA-LVM)
- HA-LVM 适用:active/passive 应用 + 传统文件系统(ext4/XFS)。同一时刻只有一个节点能访问 VG/挂载文件系统,防损坏。
- 关键机制=VG system ID:改
/etc/lvm/lvm.conf的system_id_source为uname(主机名当系统 ID)。只有 system ID 匹配的节点能激活该 VG,天然防止并发访问。 system_id_source可选值:none(默认,无系统 ID)/lvmlocal/uname(主机名;禁止以 localhost 开头)/machineid(/etc/machine-id)/file(system_id_file)。- 校验:
lvm systemid输出system ID: node.example.com。 - 建卷流程(只在单节点做):
pvcreate /dev/sdb→vgcreate shared_vg /dev/sdb(VG 带上系统 ID)→lvcreate -L 1G -n ha_lv shared_vg→mkfs -t xfs /dev/shared_vg/ha_lv。 - 加入集群(
LVM-activate资源代理管 VG 的激活/停用,不负责挂载):
pcs resource create halvm LVM-activate vgname=shared_vg \
vg_access_mode=system_id --group=hafs
pcs resource create xfsfs Filesystem device=/dev/shared_vg/ha_lv \
directory=/data fstype=xfs --group=hafs # 同一资源组,顺序保证 LVM 先启后停10.2 GE(lab: lvm-ha)
三节点(nodea/b/c)已有 multipath /dev/mapper/mpatha:
- 三机设
system_id_source = "uname"(手改或 Ansible lineinfile playbook 批量改,第二任务用lvm systemid校验输出含system ID: <hostname>)。 - nodea:
pvcreate /dev/mapper/mpatha→vgcreate clustervg /dev/mapper/mpatha(输出 "…with system ID nodea.lab.example.com")→lvcreate -L 1G -n clusterlv clustervg(若有残留 xfs 签名会问 wipe,答 y)→mkfs -t xfs /dev/clustervg/clusterlv。 - nodea:
pcs resource create halvm LVM-activate vgname=clustervg vg_access_mode=system_id --group=halvmfs(组不存在自动建)→pcs resource create xfsfs Filesystem device=/dev/clustervg/clusterlv directory=/mnt fstype=xfs --group=halvmfs。 pcs status看 halvmfs 组 Started nodea;lvs见-wi-ao----(a=active, o=open)、mount | grep /mnt。pcs resource move halvmfs迁移 → 只有新节点上lvs/挂载存在,原节点看不到 LV(HA-LVM 生效证据)。- 清理:
pcs resource clear halvmfs去掉 move 产生的 location 约束。
10.3 Managing LVM Shared Volume Groups(共享 VG)
- 适用:所有节点同时读写的集群文件系统(GFS2)。⚠️ 严禁把 ext4/XFS 等非集群 FS 放共享 VG 上(损坏/不一致);要配 GFS2。
- 架构:LVM 命令经每节点的 lvmlockd(LVM Locking Daemon)协调元数据变更;lvmlockd 依赖 DLM(Distributed Lock Manager,由 dlm_controld 维护)→ 前提是先有带 fencing 的集群。包:
dlm、lvm2-lockd(Resilient Storage Add-On)。 - 基础设施入集群(进程必须每节点都跑,资源组克隆 +
interleave=true让本节点 lvmlockd 不等到全集群 DLM 起来;on-fail=fence=进程失败直接 fence 而非重启):
yum install dlm lvm2-lockd
pcs resource create dlm ocf:pacemaker:controld \
op monitor interval=30s on-fail=fence --group=lock_group
pcs resource create lvmlockd ocf:heartbeat:lvmlockd \
op monitor interval=30s on-fail=fence --group=lock_group
pcs resource clone lock_group interleave=true- 建共享 VG/LV(只在一台跑;lvmlockd 自动复制配置到其他节点;改动时要求所有节点在线):
pvcreate /dev/sdb
vgcreate --shared lvmsharedvg /dev/sdb # --shared 是关键
vgchange --lock-start lvmsharedvg # 其他节点注册 lock space(GE 里用)
lvcreate --activate sy -L 5G -n lv1 lvmsharedvg # --activate sy=共享激活,可多节点并发用- ⚠️ 共享 VG 场景
system_id_source保持 none(默认),不要学 HA-LVM 改成 uname。 - 激活资源入集群(克隆资源组让每节点激活):
pcs resource create sharedlv1 LVM-activate vgname=lvmsharedvg lvname=lv1 \
activation_mode=shared vg_access_mode=lvmlockd --group=LVMshared_group
pcs resource clone LVMshared_group interleave=true10.3 GE(lab: lvm-shared)
- 三机装
lvm2-lockd、dlm(yum 或 Ansible)。 - 建
dlm(ocf:pacemaker:controld)与lvmlockd(ocf💓lvmlockd)资源入locking组(monitor interval=30s on-fail=fence)→pcs resource clone locking interleave=true→pcs status --full见三节点各跑一份。 - nodea:
pvcreate /dev/mapper/mpatha→vgcreate --shared sharedvg /dev/mapper/mpatha→ nodeb/nodec 各跑vgchange --lock-start sharedvg(注册 lockspace)。 - nodea:
lvcreate --activate sy -L5G -n sharedlv1 sharedvg。 - nodea:
pcs resource create sharedlvm1 LVM-activate vgname=sharedvg lvname=sharedlv1 activation_mode=shared vg_access_mode=lvmlockd --group=LVMshared→pcs resource clone LVMshared interleave=true。 - 加约束:
pcs constraint order start locking-clone then LVMshared-clone;pcs constraint colocation add LVMshared-clone with locking-clone。 lvs:三节点都能看到sharedlv1 … -wi-a-----(共享激活,可并发)。
Lab 概要(lab: lvm-review)
两组两节点集群:
- A 组 nodea/nodeb(multipath
/dev/mapper/disk1):两机system_id_source="uname"→ nodeapvcreate disk1→vgcreate webvg→lvcreate -L…→ mkfs →LVM-activate (vg_access_mode=system_id)+ Filesystem 资源做成 HA-LVM 资源组,验证迁移后单点可见。 - B 组 nodec/noded(
/dev/mapper/disk2):装 dlm/lvm2-lockd → 建locking克隆组(dlm+lvmlockd)→ nodecpvcreate disk2→vgcreate --shared webdata→ 两节点vgchange --lock-start webdata→lvcreate --activate sy -L3G -n logs webdata→pcs resource create lv1 LVM-activate vgname=webdata lvname=logs activation_mode=shared vg_access_mode=lvmlockd --group=sharedVG→ 克隆 sharedVG(interleave=true)→ order/colocation 约束 → 两节点lvs都见 logs →lab grade lvm-review。
命令速查表
| 用途 | 命令 | | 建 PV/VG/LV | pvcreate /dev/sdX;vgcreate <vg> <pv>;lvcreate -n <lv> -L <size> <vg> | | 查看详情/摘要 | pvdisplay\|pvs;vgdisplay\|vgs;lvdisplay\|lvs | | 开 HA-LVM 系统 ID | lvm.conf 改 system_id_source = "uname";验证 lvm systemid | | HA-LVM 入集群 | pcs resource create <r> LVM-activate vgname=<vg> vg_access_mode=system_id --group=<g> | | 建共享 VG/LV | vgcreate --shared <vg> <pv>;vgchange --lock-start <vg>;lvcreate --activate sy -L… -n <lv> <vg> | | DLM/lvmlockd 资源 | pcs resource create dlm ocf:pacemaker:controld …;pcs resource create lvmlockd ocf:heartbeat:lvmlockd …;pcs resource clone <group> interleave=true | | 共享 LV 入集群 | pcs resource create <r> LVM-activate vgname=<vg> lvname=<lv> activation_mode=shared vg_access_mode=lvmlockd --group=<g> | | 约束 | pcs constraint order start <A>-clone then <B>-clone;pcs constraint colocation add <B>-clone with <A>-clone | | 实验/评分 | lab start lvm-ha\|lvm-shared\|lvm-review;lab grade lvm-review |
词汇表
| 英文 | 中文 | 速记 |
|---|---|---|
| PV / PE | 物理卷/物理扩展 | pvcreate 初始化;4MiB 最小块 |
| VG | 卷组 | PV 池,功能≈一块整盘 |
| LV / LE | 逻辑卷/逻辑扩展 | 应用可见的设备;LE 映射 PE |
| system ID | 卷组系统 ID | 匹配主机才可激活 VG(HA-LVM 核心) |
| system_id_source | 系统 ID 来源 | uname/machineid/file/none |
| HA-LVM | 高可用 LVM | 单节点独占 VG(配传统 FS) |
| LVM-activate | LVM 激活代理 | vg_access_mode=system_id|lvmlockd |
| DLM / dlm_controld | 分布式锁管理器 | lvmlockd 的锁基础,全节点跑 |
| lvmlockd | LVM 锁守护 | 协调共享 VG 元数据变更 |
| shared volume group | 共享卷组 | 所有节点同时可用(配 GFS2) |
| --shared / --activate sy | 共享标记 | vgcreate --shared;lvcreate --activate sy |
| interleave | 交错启动 | 克隆组内本机依赖资源先启 |
| on-fail=fence | 失败即隔离 | DLM 挂了 fence 而非重启 |
自测 10 题
- PV/VG/LV 三个建命令?(pvcreate / vgcreate / lvcreate)
- HA-LVM 与共享 VG 各配什么文件系统?(前者 ext4/XFS 单节点;后者 GFS2 多节点)
- HA-LVM 防并发访问靠什么?(VG system ID 匹配,lvm.conf
system_id_source=uname) - 共享 VG 场景 system_id_source 应设什么?(保持 none)
- 共享 VG 需要哪两个全节点服务?(DLM/dlm_controld 与 lvmlockd;包 dlm、lvm2-lockd)
- vgcreate 建共享 VG 的选项?(--shared)
- lvcreate 让多节点并发激活的选项?(--activate sy)
- LVM-activate 参数:HA-LVM vs 共享 VG 的 vg_access_mode?(system_id vs lvmlockd;共享再加 activation_mode=shared)
- DLM/lvmlockd 资源为何要克隆并 interleave=true?(每节点都跑;lvmlockd 只要本机 DLM 先起,不必等全集群)
- 改共享 VG 时 lvmlockd 有何要求?(所有节点在线且工作正常)
