物理卷 -- Physical Volume -- PV
卷组 -- Volume Group -- VG
逻辑卷 -- Logical Volume -- LV
1、硬盘设备管理技术虽然能够有效的提高硬盘设备的读写速度以及数据的安全性,但是在硬盘分好区或者部署为 RAID 的磁盘阵列之后,再想修改硬盘分区大小就不容易了。当用户想要随着实际需求的变化调整硬盘分区的大小时,会受到硬盘“灵活性”的限制,这是需要用到另一一项非常普及的硬盘设备资源管理技术——LVM(逻辑卷管理器),LVM 可以允许用户对硬盘资源进行动态调整。
2、逻辑卷管理器是Linux系统用于对硬盘分区进行管理的一种机制,其创建的初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对系统的硬盘分区进行强制扩容或缩容从理论上讲师可行的,但是却可能造成数据的丢失。而LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并,由此用户不必关心物理硬盘设备的底层架构和布局就可以实现对硬盘分区的动态调整。
3、常用LVM部署命令
功能/命令 物理卷管理 卷组管理 逻辑卷管理
扫描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
显示 pvdisplay vgdisplay lvdisplay
删除 pvremove vgremove lvremove
扩展 vgextend lvextend
缩小 vgreduce lvreduce
4、环境准备。添加两块新硬盘。
对这两块硬盘进行创建物理卷的操作可以理解成让硬盘设备支持LVM技术或把硬盘设备加入到LVM技术可用的硬件资源池中,然后对这两块硬盘进行卷组合并,卷组的名称可以由用户自定义。
把合并后的卷组切割出一个 150 MB的逻辑卷设备,把这个逻辑卷设备格式化成 ext4 文件系统后挂载使用。
5、LVM技术部署
(1)让新添加的两块硬盘设备支持LVM 技术。
pvcreate /dev/sdb /dev/sdc
(2)把两块硬盘设备加入到 storage 卷组中。
vgcreate storage /dev/sdb /dev/sdc
(3)查看卷组的状态。
vgdisplay
(4)切割出一个约为 150MB 的逻辑卷设备。
注意:切割单位的问题,在对逻辑卷进行切割时有两种计量单位。第一种是以容量为单位,所使用的的参数为-L。例如,使用 -L 150M 生成一个大小为150MB的逻辑卷,另外一种是以基本单元的个数为单位,所使用的参数为 -l 。每个基本单元的大小默认为 4MB。例如,使用 -l 37 可以生成一个大小为 37 ×4MB=148MB 的逻辑卷。
lvcreate -n lv -L 150M storage
# -n 表示指定名字 -L 指定逻辑卷的大小
(5)将生成好的逻辑卷进行格式化,然后挂载使用。
mkfs.ext4 /dev/storage/lv
/dev/sdb 和 dev/sdc 做卷组 storage,新生成的卷组为 /dev/storage,从/dev/storage 卷组中切割出逻辑卷lv,lv所在位置 /dev/storage/lv。
(6)挂载,查看挂载状态。
mkdir /lvm mount /dev/storage/lv /lvm
df -h
(7)写入到配置文件中永久生效。
echo "/dev/storage/lv /lvm ext4 default 0 0">> /etc/fstab
6、扩容逻辑卷
只要卷组中有足够的资源,就可以一直为逻辑卷扩容。扩容前一定要记得卸载设备和挂载点的关联。
umount /lvm
(1)将逻辑卷的 lv 扩展至 290MB
lvextend -L 290M /dev/storage/lv
(2)检查硬盘完整性
e2fsck -f /dev/storage/lv
(3)重置硬盘容量
resize2fs /dev/storage/lv
(4)重新挂载并查看。
逻辑卷的容量已经改变。
7、缩小逻辑卷
相较于扩容逻辑卷,缩容逻辑卷丢失数据的风险更大。对逻辑卷进行缩容之前,要先检查文件系统的完整性(为了保证数据安全),在执行缩容操作前要先把文件系统卸载。
umount /lvm
(1)检查文件系统的完整性
e2fsck -f /dev/storage/lv
(2)把逻辑卷 lv 的容量减小到 120MB
resize2fs /dev/storage/lv 120M
lvreduce -L 120M /dev/storage/lv
(3)重新挂载文件系统并查看系统状态
mount /dev/storage/lv /lvm
df -h