Logical Volume Manager
LVM 是 Logical Volume Manager(逻辑卷管理器)的缩写。
它是一种在 Linux 系统中管理磁盘存储空间的技术,主要功能包括:
- 把多个物理磁盘或磁盘分区(Physical Volumes, PV)合并成一个大的存储池(Volume Group, VG)。
- 在这个存储池里创建和管理逻辑卷(Logical Volumes, LV),相当于虚拟分区。
- 方便灵活地调整磁盘容量,比如扩展(扩容)、缩小、快照备份等,而不用像传统分区那样受限。
简单说,LVM 可以让你更灵活地管理硬盘空间,动态调整磁盘大小和布局,非常适合服务器和虚拟化环境。
物理设备(Physical Disk)
└── 分区(Partition)
└── LVM(逻辑卷管理)
└── 文件系统(如 ext4、xfs、btrfs)
└── 挂载点(/、/home、/var 等)
[ Physical Volume (PV) ] 物理卷
↓
[ Volume Group (VG) ] 卷组
↓
[ Logical Volume (LV) ] 逻辑卷
↓
[ File System + Mount ] 格式化并挂载使用
/dev/vda2 → PV → VG "klas" → LV "root", "swap" → / /swap
/dev/vdb
↓ pvcreate
PV → /dev/vdb
↓ vgcreate
VG → my_vg
↓ lvcreate
LV → /dev/my_vg/my_lv
↓ mkfs + mount
挂载点 → /mnt/data
Partition & Physical Volume
vda1
是分区还是物理卷?
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 200G 0 disk
├─vda1 252:1 0 1G 0 part /boot
├─vda2 252:2 0 39G 0 part
│ ├─klas-root 253:0 0 175G 0 lvm /
│ └─klas-swap 253:1 0 4G 0 lvm
└─vda3 252:3 0 160G 0 part
└─klas-root 253:0 0 175G 0 lvm /
lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
vda
├─vda1 xfs a49d1ef0-1dc5-4403-9eb8-a95396d80833 808.7M 20% /boot
├─vda2 LVM2_member LVM2 001 GiXfEZ-Wz5F-G4V3-Dc78-fxki-HlzS-My9QMG
│ ├─klas-root xfs f3d82155-4b15-4bb7-96c0-5a2a35fc2127 65.8G 62% /
│ └─klas-swap swap 1 e20b0bfd-24f7-4589-a374-d72c2178e482
└─vda3 LVM2_member LVM2 001 90mTOs-HRtq-zeJm-djD0-ghRL-oe0a-AQlcoi
└─klas-root xfs f3d82155-4b15-4bb7-96c0-5a2a35fc2127 65.8G 62% /
🧩 正确的术语对照
名称 | 类型 | 含义 |
---|---|---|
vda |
磁盘 | 整块物理(或虚拟)磁盘设备 |
vda1 、vda2 |
分区 | vda 上划出来的区域(part) |
/dev/vda1 |
分区设备文件 | 可以格式化、挂载、用作 LVM 的 PV |
LVM2_member |
LVM 物理卷(PV) | 特殊格式化的分区,供 LVM 使用 |
✅ 所以:
vda1
是一个分区(partition)。
但它 也可以被初始化为一个 LVM 物理卷(PV),这就是术语上的“物理卷”的含义。
🧠 举个例子:
/dev/vda1
:是一个磁盘分区(Partition)- 你执行了:
pvcreate /dev/vda1
→ 它就成了一个 LVM 物理卷(PV) - 这时,
lsblk -f
就会显示它的FSTYPE
是LVM2_member
,表示它是一个 PV(而不是 ext4、xfs 等普通文件系统)
📌 小结一句话:
vda1 本质是分区,但在使用 LVM 时,它可以被格式化为 LVM 的物理卷(PV)——这时候我们叫它“物理卷”,其实是“被初始化为物理卷的分区”。
如果你想看到你的系统中哪些分区是被 LVM 管理的“物理卷”,可以用:
pvs
Partition Resizing
List Block Devices
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 200G 0 disk
├─vda1 252:1 0 1G 0 part /boot
├─vda2 252:2 0 39G 0 part
│ ├─klas-root 253:0 0 175G 0 lvm /
│ └─klas-swap 253:1 0 4G 0 lvm
└─vda3 252:3 0 160G 0 part
└─klas-root 253:0 0 175G 0 lvm /
lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
vda
├─vda1 xfs a49d1ef0-1dc5-4403-9eb8-a95396d80833 808.7M 20% /boot
├─vda2 LVM2_member LVM2 001 GiXfEZ-Wz5F-G4V3-Dc78-fxki-HlzS-My9QMG
│ ├─klas-root xfs f3d82155-4b15-4bb7-96c0-5a2a35fc2127 65.8G 62% /
│ └─klas-swap swap 1 e20b0bfd-24f7-4589-a374-d72c2178e482
└─vda3 LVM2_member LVM2 001 90mTOs-HRtq-zeJm-djD0-ghRL-oe0a-AQlcoi
└─klas-root xfs f3d82155-4b15-4bb7-96c0-5a2a35fc2127 65.8G 62% /
Get Partition Info
p
:print
Sector size
: 扇区大小Partition Table
: 分区表
parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda:215GB
Sector size (logical/physical):512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1075MB 1074MB primary xfs boot
2 1075MB 42.9GB 41.9GB primary lvm
3 42.9GB 215GB 172GB primary
Resize Part
Enter interacted mode:
parted /dev/vda
Input in interacted mode:
resizepart 3 100%
Refresh partition table(optional):
partprobe
Quit interacted mode:
q
Expand PV(Physical Volume):
pvresize /dev/vda3
pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 klas lvm2 a-- <39.00g 0
/dev/vda3 klas lvm2 a-- <160.00g 20.00g
lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root klas -wi-ao---- <175.02g
swap klas -wi-a----- 3.97g
vgs
VG #PV #LV #SN Attr VSize VFree
klas 2 2 0 wz--n- 198.99g 20.00g
将 VG 中空闲空间全部分配给目标 LV(如 root 或 data LV):
- VGName: klas
- LVName: root
lvextend -r -l +100%FREE /dev/mapper/<VGName>-<LVName>
lvextend -r -L +50G /dev/mapper/klas-root
No comments to display
No comments to display