LVM核心理念
LVM(Logical Volume Manager,逻辑卷管理器)允许用户对硬盘资源进行动态调整,在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多个硬盘进行卷组合并,这样一来,用户不必关心物理硬盘设备的底层架构和布局,其包含四个基础概念如下:
物理卷[Physical Volume,PV]
卷组[Volume Group,VG]
逻辑卷[Logical Volume,LV]
基本单元[Physical Extent,PE]
物理卷处于LVM中的最底层,可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列;卷组建立在物理卷之上,一个卷组可以包含多个物理卷,而且在卷组创建后可以继续向其中添加新的物理卷;逻辑卷是用卷组中的空闲资源建立的,并且逻辑卷在建立后可以动态扩展或缩小空间。
LVM常用命令
功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce |
部署逻辑卷
在虚拟机中添加两块新的硬盘,硬件名称应该是/dev/sdb和/dev/sdc。
第1步:添加物理卷
让新添加的两块硬盘设备支持LVM技术,然后查看物理卷状态
pvcreate /dev/sdb /dev/sdc
pvdisplay
第2步:将物理卷加入卷组
把两块物理卷加入到storage卷组中,然后查看卷组状态
vgcreate storage /dev/sdb /dev/sdc
第3步:创建逻辑卷
切割出一个约为150M的逻辑卷设备,注意切割单位问题,在对逻辑卷进行切割时有两种计量单位,第一种是以容量为单位,所用参数是-L,另一种是以基本单元PE为单位,所用参数是-l,每个基本单元的默认大小为4MB。
lvcreate -n vo -l 37 storage
第4步:格式化逻辑卷
把刚刚生成好的逻辑卷/dev/storage/vo进行格式化
mkfs.ext4 /dev/storage/vo
第5步:挂载逻辑卷
创建挂载目录/lvm,挂载逻辑卷/dev/storage/vo到/lvm,使用df -h查看查看挂载状态
mkdir /lvm
mount /dev/storage/vo /lvm/
df -h
写入配置文件使其在系统重启后自动挂载
/dev/storage/vo /lvm ext4 defaults 0 0
扩容逻辑卷
扩容前一定要先卸载设备和挂载点的关联:
umount /lvm
第1步:扩容逻辑卷
把我们之前部署的逻辑卷vo扩容至290MB
lvextend -L 290M /dev/storage/vo
第2步:检查硬盘完整性
接下来检查硬盘完整性,确认目录结构、内容和文件内容没有丢失
e2fsck -f /dev/storage/vo
第3步:重置容量
重置设备在系统中的容量,刚刚我们对逻辑卷vo进行了扩容操作,但系统内核还没有同步到这部分新修改的信息,需要手动进行同步
resize2fs /dev/storage/vo
第4步:重新挂载
mount -a
缩小逻辑卷
相较于扩容逻辑卷,在对逻辑卷进行缩容操作时,数据丢失的风险更大。Linux系统规定,在对LVM逻辑卷进行缩容前,要先检查文件系统的完整性。在进行缩容前先把封建系统卸载掉。
umount /lvm
第1步:检查文件系统完整性
e2fsck -f /dev/storage/vo
第2步:通知系统内核
通知系统内核将逻辑卷vo的容量减小到120MB
resize2fs /dev/storage/vo 120M
第3步:缩容逻辑卷
lvreduce -L 120M /dev/storage/vo
第4步:重新挂载
mount -a