一、包含关系总览 外层包住内层,从磁盘一直套到挂载点
点每一层的标题行可以折叠它的内部。数字是这台机器上 /dev/sdc 的真实值。
1 parted→
2 partprobe→
3 pvcreate→
4 vgcreate→
5 lvcreate→
6 mkfs→
7 mount + fstab
0磁盘 /dev/sdc
硬件层
硬件/虚拟层。LVM 看不见"磁盘",它只认识"块设备"。
磁盘头部 1 MiB GPT 分区表 + 对齐保留 不在任何分区里,所以不占分区尺寸
1分区 /dev/sdc1
parted · 可选层
只是"设备层的准备动作",不属于 LVM 的任何一层。整盘直接当 PV 也完全可行。
2PV 物理卷
pvcreate /dev/sdc1
"已经登记进 LVM 的设备"。不做任何空间切割,只是在设备上写了个标签。
LVM 标签 + 元数据(几 MiB) 计入 PV、不计入 VG;
pvdisplay 里叫 not usable3VG 卷组 test
vgcreate test /dev/sdc1
一本账:把 PV 的数据区切成等大的 PE 格子记下来。VG Size = PE × Total PE。
格子池:[PE][PE][PE]… 已划走的格子归某个 LV,剩下的算 VFree
4LV 逻辑卷 /dev/test/vo
lvcreate -n vo -L 200MiB test
从账上划走 50 个格子,凑成一块可以格式化的块设备。
设备节点:/dev/mapper/test-vo 另有软链
/dev/test/vo,两条路径指向同一个卷5文件系统 xfs
mkfs.xfs /dev/test/vo
这一层才是"能存文件"的地方。mkfs 不可逆,会盖掉原有签名。
6挂载点 /vo + fstab
mount / vim /etc/fstab
让别人(systemd)下次开机知道该做什么。没有 fstab 那一行,重启就"忘了"。
fstab:UUID=… /vo xfs defaults 0 0 第 5 字段 dump=0;第 6 字段 fsck 顺序,xfs 写 0
二、每一层由谁产生 命令、查法、撤销
注意"撤销"那一列:越往下越难回头。LVM 的三层都能拆,文件系统开始就不能了。
| 层 | 对象 | 诞生命令 | 怎么查 | 怎么撤 | 一句话 |
|---|---|---|---|---|---|
| 0 | 磁盘 | 虚拟机加盘/接硬件 | lsblk | — | LVM 看不见它,只认块设备 |
| 1 | 分区 | parted mkpart+set N lvm on | parted print | parted rm N | 可选;分区表记得标记成 lvm |
| 2 | PV | pvcreate | pvs/pvdisplay | pvremove | 登记设备,不切空间 |
| 3 | VG | vgcreate(-s 定 PE) | vgs/vgdisplay | vgremove | 账本;可 vgextend 收新 PV |
| 4 | LV | lvcreate(-l 格数/-L 大小) | lvs/lvdisplay | lvremove | 划走 n 格,得到可格式化的块设备 |
| 5 | 文件系统 | mkfs.xfs/mkfs.vfat | blkid/lsblk -f | 重做 mkfs(数据没了) | 不可逆,动手前先快照 |
| 6 | 挂载 + 持久化 | mount+写 /etc/fstab | findmnt/df -h | umount+删那一行 | 决定重启后还在不在 |
三、三条真实链路对照 LVM 是可选的中间层
同一台机器上跑着三条不同的链路。看第二行 —— 没有 LVM 也完全能挂载,LVM 只是"可以伸缩"的那条路。
链路 A(根分区)
sda2→PV→
VG rlm→LV rlm-root→
xfs→/
+ LV rlm-swap → swap
链路 B(数据盘)
sdb1→
xfs→/mnt/data
没有 LVM 这一层
链路 C(在做)
sdc1→PV→
VG test→LV vo→
待 mkfs.xfs → 待挂 /vo
四、关系性质辨析 最容易想歪的四件事
包含 vs 认领
磁盘 ⊃ 分区 是包含(物理上就在里面)。
VG 对 PV 是认领:一个 PV 只能属于一个 VG;一个 VG 却能吃下多个 PV(vgextend)。
哪一层才"产生空间"
pvcreate:不产生空间,只贴标签vgcreate:不产生空间,只把已有空间切成格子记账lvcreate:把格子凑成一块能格式化的设备
LV 不是新磁盘,但有设备名
LV 是 VG 里的一段,不是物理设备。但 LVM 为它建了设备节点:
/dev/mapper/test-vo,并有软链 /dev/test/vo。两条路指同一个卷。
文件系统是"写在其上"
不是"装在里面"。所以文件系统可以写在 LV 上,也可以直接写在分区上(链路 B)。
换一层地基,就得重新 mkfs。
五、这一路的坑 实测踩过的
pvs/vgs/lvs 里的 < 是显示取整,不是"空间被吃了"。真实值略小于显示值就加 <。实测:/dev/sda2 7167 MiB → <7.00g;/dev/sdc1 正好 4096 MiB → 4.00g(不加)。真正"吃掉"空间的是 PV 的标签与元数据,它计入 PV、不计入 VG。所以
VG Size 会比 PVSize 少几 MiB,这是正常的。LV 大小永远是 PE 的整数倍。凑不出正好时只能多给一点。真题里"50 个扩展单元 × 扩展块 16MiB"= 800MiB,考的就是这个语义。
mkfs 不可逆。它不"格式化"一个空壳,它会盖掉设备上原有的文件系统签名;有签名时还会拒绝执行(除非 -f),这是保护不是 bug。fstab 写错的最坏结果是进 emergency mode,不是"少挂一个目录"。所以改完先
mount -a + findmnt --verify,最后才考虑重启。XFS 只能扩不能缩;ext4 能缩但必须先卸载。扩容还要记住是两个动作:
lvextend(改 LVM 的账)+ xfs_growfs(撑满文件系统)。命令族命名规律:
pvs/vgs/lvs 是一行一个对象的汇总,pvdisplay 一类是单个对象详情。LVM 里没有单数的 pv/vg/lv(pv 是另一个无关程序)。