Linux中LVM逻辑卷分区管理
传统磁盘管理的问题(痛点)
当分区大小不够用时无法扩展其大小,只能通过添加硬盘、创建新的分区扩充空间,但是新添加的硬盘作为独立文件系统存在,原有文件系统并未得到扩充,上层应用更多时候访问的一个文件系统,只能让磁盘下线,换上新硬盘后再将原始数据导入.
LVM(Logical volume Manager)逻辑卷管理通过将底层物理硬盘封装起来,以逻辑卷的形式表现给上层系统,逻辑卷的俄大小可以动态调整,而且不会丢失现有数据,新加入的硬盘也不会改变现有上层的逻辑卷.
作为一种动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性.
- PE(physical Extend)物理拓展
- PV(physical volume)物理卷
- VG(volume group)卷组
- LV(logical volume)逻辑卷
1.将物理磁盘空间切割为N个PE(每个PE默认为4M大小)
2.将多个PV加入到VG中,得到一个所有空间的加和(VG相当于空间池)
3.LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同物理磁盘
4.LV进行格式化挂载使用
5.LV的扩充缩减只是增加或减少组成LV的PE数量,其过程不丢失原始数据
常用的LVM部署命令
功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce |
创建LVM(参考命令)
# 将物理磁盘设备初始化为物理卷
pvcreate /dev/sdb /dev/sdc
# 创建卷组,并将PV加入卷组中
vgcreate mytest /dev/sdb /dev/sdc
# 基于卷组创建逻辑卷
lvcreate -n mylv -L 2G mytest
# 为创建好的逻辑卷创建文件系统
mkfs.ext4 /dve/mytest/mylv
# 将格式化好的逻辑卷挂载使用
mount /dev/mytest/mylv /mnt
删除LVM(参考命令)
# 删除LV
lvremove /dev/mytest/mylv
# 删除VG
vgremove mytest
# 删除物理卷
pvremove /dev/sdb /dev/sdc
拉伸一个逻辑卷
# 保证VG中有足够的空闲空间
vgdisplay
# 扩充逻辑卷(VG中还有1G空闲空间)
lvextend -L +1G /dev/mytest/mylv
# 查看扩充后的LV大小
lvdisplay
# 更新文件系统
resize2fs /dev/mytest/mylv
#xfs文件系统使用
xfs_growfs /dev/mytest/mylv
# 查看更新后文件系统
df -h
拉伸一个卷组
# 将要添加到VG的硬盘格式化为PV
pvcreate /dev/sdd
# 将新的PV添加到指定卷组中
vgextend mytest /dev/sdd
# 查看扩充后VG大小
vgdisplay
缩小一个逻辑卷(需要离线卸载,否则丢失数据)
# 卸载已经挂载的逻辑卷
umount /dev/mytest/mylv
# 磁盘校验
e2fsck -f /dev/mytest/mylv
# 缩小文件系统(减小到1G)
resize2fs /dev/mytest/mylv 1G
# 缩小LV(设x为需要减掉的大小)
lvreduce -L -xG /dev/mytest/mylv
# 查看缩小后的LV
lvdisplay
# 挂载
mount /dev/mytest/mylv
缩小卷组(VG要有空闲空间大于你要拿走的空间)
# 将一个PV从指定卷组中移除
vgreduce mytest /dev/sdd
# 查看缩小后的卷组大小
vgdisplay