Linux LVM 磁盘管理教程
LVM(Logical Volume Manager,逻辑卷管理器)是 Linux 系统中用于灵活管理磁盘存储的一种机制。它将物理存储设备抽象为逻辑卷,支持动态调整大小、快照等功能,特别适用于需要频繁调整磁盘分区的场景。
一、LVM 基本概念
在理解 LVM 管理之前,需要熟悉以下几个核心概念:
-
Physical Volume (PV):
- 实际的物理存储设备,例如硬盘或分区(如
/dev/sda1
)。 - 是 LVM 的基础存储单元,通过
pvcreate
初始化后可用于 LVM。
- 实际的物理存储设备,例如硬盘或分区(如
-
Volume Group (VG):
- 由一个或多个 PV 组成的存储池。
- 提供逻辑卷的分配空间。
-
Logical Volume (LV):
- 从 VG 中分配出的逻辑存储单元。
- 类似于传统分区,可格式化并挂载。
-
Physical Extent (PE):
- PV 划分的基本存储块。默认大小为 4MB,可以通过
vgcreate
设置。 - VG 中的存储空间以 PE 为单位分配给 LV。
- PV 划分的基本存储块。默认大小为 4MB,可以通过
二、LVM 的优势
- 灵活性 :
- 可在不影响现有数据的情况下动态调整卷大小。
- 快照 :
- 可创建卷的快照,用于备份和数据恢复。
- 设备抽象 :
- 将物理设备抽象为逻辑设备,简化管理。
三、LVM 配置步骤
以下是 LVM 配置的详细过程:
1. 准备物理设备
确保有未分区的磁盘或分区。例如,假设使用 /dev/sdb
和 /dev/sdc
。
查看磁盘情况:
lsblk
2. 创建物理卷 (PV)
将设备初始化为物理卷:
sudo pvcreate /dev/sdb /dev/sdc
验证物理卷状态:
sudo pvs
示例输出:
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 100.00g 100.00g
/dev/sdc lvm2 --- 200.00g 200.00g
3. 创建卷组 (VG)
创建一个包含以上 PV 的卷组:
sudo vgcreate my_vg /dev/sdb /dev/sdc
验证卷组状态:
sudo vgs
示例输出:
VG #PV #LV #SN Attr VSize VFree
my_vg 2 0 0 wz--n- 300.00g 300.00g
4. 创建逻辑卷 (LV)
从卷组中分配空间创建逻辑卷。例如,创建一个 100GB 的逻辑卷:
sudo lvcreate -L 100G -n my_lv my_vg
验证逻辑卷状态:
sudo lvs
示例输出:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
my_lv my_vg -wi-a----- 100.00g
5. 格式化逻辑卷
对逻辑卷进行格式化,例如使用 ext4
文件系统:
sudo mkfs.ext4 /dev/my_vg/my_lv
6. 挂载逻辑卷
创建挂载点并挂载逻辑卷:
sudo mkdir /mnt/mydata
sudo mount /dev/my_vg/my_lv /mnt/mydata
验证挂载:
df -h
将挂载写入 /etc/fstab
,以便开机自动挂载:
echo '/dev/my_vg/my_lv /mnt/mydata ext4 defaults 0 0' | sudo tee -a /etc/fstab
四、LVM 管理操作
1. 扩展逻辑卷
假设需要扩展逻辑卷 my_lv
的大小:
-
确认 VG 的剩余空间:
sudo vgs
-
扩展逻辑卷大小(增加 50GB):
sudo lvextend -L +50G /dev/my_vg/my_lv
-
扩展文件系统:
-
ext4 文件系统 :
sudo resize2fs /dev/my_vg/my_lv
-
xfs 文件系统 :
sudo xfs_growfs /mnt/mydata
-
2. 缩减逻辑卷
-
先卸载逻辑卷:
sudo umount /mnt/mydata
-
缩减文件系统:
sudo e2fsck -f /dev/my_vg/my_lv sudo resize2fs /dev/my_vg/my_lv 80G
-
缩减逻辑卷:
sudo lvreduce -L 80G /dev/my_vg/my_lv
-
重新挂载:
sudo mount /dev/my_vg/my_lv /mnt/mydata
3. 添加新磁盘到卷组
-
添加新磁盘
/dev/sdd
:sudo pvcreate /dev/sdd sudo vgextend my_vg /dev/sdd
-
验证扩展:
sudo vgs
4. 创建快照
创建逻辑卷的快照以便备份或回滚:
sudo lvcreate -L 10G -s -n my_lv_snapshot /dev/my_vg/my_lv
快照会出现在 lvs
输出中,可用于备份操作。
5. 删除逻辑卷、卷组、物理卷
-
卸载逻辑卷:
sudo umount /mnt/mydata
-
删除逻辑卷:
sudo lvremove /dev/my_vg/my_lv
-
删除卷组:
sudo vgremove my_vg
-
删除物理卷:
sudo pvremove /dev/sdb /dev/sdc
五、LVM 常用命令总结
功能 | 命令 | 示例 |
---|---|---|
查看磁盘状态 | lsblk |
lsblk |
初始化 PV | pvcreate |
pvcreate /dev/sdb |
查看 PV 信息 | pvs / pvdisplay |
pvs |
创建 VG | vgcreate |
vgcreate my_vg /dev/sdb /dev/sdc |
查看 VG 信息 | vgs / vgdisplay |
vgs |
创建 LV | lvcreate |
lvcreate -L 100G -n my_lv my_vg |
查看 LV 信息 | lvs / lvdisplay |
lvs |
扩展 LV | lvextend + resize2fs |
lvextend -L +50G /dev/my_vg/my_lv |
删除 LV | lvremove |
lvremove /dev/my_vg/my_lv |
六、总结
通过以上步骤,您可以灵活地使用 LVM 管理磁盘存储。LVM 提供了强大的功能,包括动态调整分区大小、创建快照和扩展卷组容量等,是现代 Linux 系统中磁盘管理的核心工具之一。
注意事项:
- 备份数据:任何涉及磁盘调整的操作都有潜在风险。
- 监控存储使用情况:确保 VG 和 LV 的空间分配合理。
- 快照使用:不要长时间保留快照,以免影响性能。