LVM (Logical Volume Manager)
逻辑卷管理,可以多硬盘(分区)组为一个逻辑卷
卷的创建、扩大缩小,与文件系统的扩容缩容是两回事。文件系统创建在卷之上
必要概念
-
pv
(Physical Volume):物理卷,建立在硬盘分区上
相当于虚拟硬盘
-
vg
(Volume Group):卷组,建立在物理卷pv
上
相当于由虚拟硬盘构成的存储池
-
lv
(Logical Volume):逻辑卷,建立在卷组vg
上
相当于从存储池内分出来的区
基础命令表
类型 | 命令 | 描述 |
---|---|---|
PV | pvs |
查询物理卷状态 |
pvcreate |
将LVM的分区转换为物理卷 | |
pvmove |
将当前PV 中的数据挪到同VG 下的其他PV 中 |
|
pvremove |
删除物理卷 | |
VG | vgs |
查询卷组状态 |
vgcreate |
用指定PV 创建一个新卷组 |
|
vgextend |
扩展卷组,向卷组添加新的PV
|
|
vgreduce |
将当前VG 中的指定PV 移除 |
|
LV | lvs |
查询逻辑卷状态 |
lvcreate |
在VG 内创建逻辑卷,可指定大小和名字 |
|
lvextend |
扩展逻辑卷,可将VG 内剩余的空间分配给他 |
|
lvreduce |
缩减逻辑卷,减少指定逻辑卷大小 |
创建基于LVM的文件系统
# 1. 准备分区:将第一个分区类型设置为 LVM
fdisk /dev/sda
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 8e
Command (m for help): w
# 2. 创建PV(物理卷):将该分区转为PV
pvcreate /dev/sda1
# 3. 创建VG(卷组):创建卷组并添加该PV
vgcreate VGName /dev/sda1
# 4. 创建LV(逻辑卷):创建逻辑卷,将卷组中的容量分配到逻辑卷
lvcreate -L 100G VGName -n LVName
lvcreate -l +50%freee VGName -n LVName
# 5. 使用该逻辑卷
mkfs.ext4 /dev/VGName/LVName
mount /dev/VGName/LVName /test
VG 卷组、LV逻辑卷的扩/缩容
VG
扩容
使用
vgextend
向VG
添加新的PV
即可
vgextend VGName /dev/sdb2
VG
缩容
- 缩容原理为移除
PV
- 移除
PV
前要把该PV
中的数据移到同卷组的其他PV
中;如其他PV
剩余容量和不够,需要添加新的PV
进入卷组
# 将要移除的 PV 中的文件移动到其他 PV 中去
pvmove /dev/sda1
# 将 PV 从 VG 中移除
vgreduce VGName /dev/sda1
# 此时 VG 容量已改变
vgs
# 删除 PV,变通普通分区
pvremove /dev/sda1
LV
扩容/缩容
LV
可看作是一个分区(物理边界),在分区上可创建不同的文件系统(逻辑边界):
- 当分区大小发生改变时,文件系统的大小不会跟着分区自动变化,所以 LV 的扩容缩容 不等于 文件系统的扩容缩容
- 不同文件系统的实现机制和方式不一样,有些文件系统只能扩容不能缩容
# LV 扩容
lvextend -L +5G /dev/VGName/LVName
lvextend -l +50%free /dev/VGName/LVName
# LV 缩容:注意⚠️文件丢失风险
lvreduce -L -5G /dev/VGName/LVName
文件系统扩/缩容
- 扩容:先扩充物理边界(
LV
),再扩充逻辑边界(文件系统) - 缩容:先缩小逻辑边界(文件系统),再缩小物理边界(LV)
ext 文件系统
扩容
# 1. 物理(LV)增加
lvextend -L +5G /dev/VGName/LVName
# 2. 逻辑(文件系统)增加
resize2fs /dev/VGName/LVName
缩容
# 1. umount
umount /dev/VGName/LVName
# 2. 进行文件系统检查
e2fsck -f /dev/VGName/LVName
# 3. 逻辑(文件系统)减少:收缩文件系统到指定大小
resize2fs /dev/VolGroup/lv_mnt 3G
# 4. 物理(LV)减少
lvreduce -L -5G /dev/VGName/LVName
xfs文件系统
扩容
# 1. 物理(LV)增加
lvextend -L +5G /dev/VGName/LVName
# 2. 逻辑(文件系统)增加
xfs_growfs /dev/VGName/LVName
缩容
xfs 文件系统不支持直接缩,可以备份文件后重建
# 1. 备份文件系统:将分区挂载的目录备份镜像到 bak 文件夹中
xfsdump -f /bak/LVName.img /LVName
# 2. umount
umount /dev/VGName/LVName
# 3. 直接缩减物理(LV)
lvreduce -L -5G /dev/VGName/LVName
# 4. 格式化
mkfs.xfs /dev/VGName/LVName
# 5. 挂载后恢复备份进去
mount /dev/VGName/LVName /LVName
xfsrestore -f /bak/LVName.img /LVName