从磁盘到 LVM · 层级关系图

谁包含谁、谁是可选层、哪一层是可逆的 —— 一页看完。图上的设备名与数字取自实验机实测。

一、包含关系总览 外层包住内层,从磁盘一直套到挂载点

点每一层的标题行可以折叠它的内部。数字是这台机器上 /dev/sdc 的真实值。

1 parted→ 2 partprobe→ 3 pvcreate→ 4 vgcreate→ 5 lvcreate→ 6 mkfs→ 7 mount + fstab
0磁盘 /dev/sdc 8192 MiB · VMware Virtual S 硬件层

硬件/虚拟层。LVM 看不见"磁盘",它只认识"块设备"。

磁盘头部 1 MiB GPT 分区表 + 对齐保留 不在任何分区里,所以不占分区尺寸
1分区 /dev/sdc1 4096 MiB · Flags: lvm parted · 可选层

只是"设备层的准备动作",不属于 LVM 的任何一层。整盘直接当 PV 也完全可行。

2PV 物理卷 Physical Volume pvcreate /dev/sdc1

"已经登记进 LVM 的设备"。不做任何空间切割,只是在设备上写了个标签。

LVM 标签 + 元数据(几 MiB) 计入 PV、不计入 VG;pvdisplay 里叫 not usable
3VG 卷组 test PE 4 MiB(默认) vgcreate test /dev/sdc1

一本账:把 PV 的数据区切成等大的 PE 格子记下来。VG Size = PE × Total PE。

格子池:[PE][PE][PE]… 已划走的格子归某个 LV,剩下的算 VFree
4LV 逻辑卷 /dev/test/vo 200 MiB = 50 个 PE lvcreate -n vo -L 200MiB test

从账上划走 50 个格子,凑成一块可以格式化的块设备。

设备节点:/dev/mapper/test-vo 另有软链 /dev/test/vo,两条路径指向同一个卷
5文件系统 xfs 写在 LV 之上 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 onparted printparted rm N可选;分区表记得标记成 lvm
2PVpvcreatepvs/pvdisplaypvremove登记设备,不切空间
3VGvgcreate(-s 定 PE)vgs/vgdisplayvgremove账本;可 vgextend 收新 PV
4LVlvcreate(-l 格数/-L 大小)lvs/lvdisplaylvremove划走 n 格,得到可格式化的块设备
5文件系统mkfs.xfs/mkfs.vfatblkid/lsblk -f重做 mkfs(数据没了)不可逆,动手前先快照
6挂载 + 持久化mount+写 /etc/fstabfindmnt/df -humount+删那一行决定重启后还在不在

三、三条真实链路对照 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 是另一个无关程序)。