首先关于lvm的原理和创建此处不做过多的说明。
1. LVM 原理分析
LVM 在每个物理卷(PV)头部都维护了一个MetaData,叫做卷组描述域(VGDA,Volume Group Description Area),每个VGDA中都包含了整个VG(Volume Group)的信息,包括每个VG的布局配置、PV 的编号、LV的编号,以及每个PE到LE的映射关系。同一个VG中的每个PV头部的信息是相同的,这样有利于发生故障时进行数据恢复。
LVM 对上层文件系统提供 LV 层,隐藏了操作细节。对文件系统而言,对 LV 的操作与原先对 Partition 的操作没有差别。当对 LV 进行写入操作时,LVM 定位相应的 LE,通过 PV 头部的映射表,将数据写入到相应的 PE 上。
LVM 实现的关键在于在PE 和LE间建立映射关系,不同的映射规则决定了不同的LVM存储模型。LVM 支持多个PV的Stripe和Mirror,这点和软RAID的实现十分相似。
LVM 对上层文件系统提供抽象层,隐藏了操作细节,对文件系统而言,对LV的操作与原先对分区( Partition)的操作没有差别。当对LV进行写入操作时,LVM定位相应的LE,通过PV头部的映射表,将数据写入到相应的PE上。
最近公司新买的服务器已经装好了linux系统,但是根分区是在太小了,所以觉得需要扩容,由于我的磁盘都已经分好了区,没有任何free可用,觉得把/home目录的2.7T缩减,然后增大根分区的大小。
--1 ,使用df -hT查看当前的磁盘使用情况。
vgdisplay一下看看
可以看出我的VolGroup上还有空闲的1.74TB,直接扩容即可
-- 2,lvextend -L +1T /dev/mapper/VolGroup-lv_root【给根分区扩容1TB】
-- 3,resize2fs -f /dev/mapper/VolGroup-lv_root【重新识别文件系统】
-- 4,此时再次执行df -hT命令,就会看到根分区已经成功扩容。
resize2fs针对ext2/ext3/ext4文件系统。可以man一下
【缩减lvm】
缩减lvm大概需要4步。
--1 ,卸载文件系统(umount)
--2 ,检查文件系统(e2fsck/fsck.ext4)
--3 ,缩小文件系统(resize2fs)
--4 ,缩小LV大小(lvreduce)
--5 ,最后可以使用lvs命令查看一下
--6 ,重新挂载文件系统,
有关lvm的详细可以自行google。