一、lvm的简介
LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。
*物理存储介质(PhysicalStorageMedia)
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。
*物理卷(Physical Volume,PV)
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
*卷组(Volume Group,VG)
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
*逻辑卷(Logical Volume,LV)
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
*物理块(Physical Extent,PE)
每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
二、lvm 的建立
1.
(1)fdisk /dev/vdb ##建立一个主分区并且把分区标签定为8e
(具体方法上篇文章有详细说明)
(2)创建物理卷组(pv)
pvcreate /dev/vdb1
(3)创建物理卷组(vg)
vgcreate vg0 /dev/vdb1
(4)创建逻辑卷(lv)
lvcreate -L 20M -n lv0 vg0
(5)格式化(创建文件系统)并挂载使用
mkfs.xfs /dev/vg0/lv0
mount /dev/vg0/lv0 /mnt
df -H /mnt
##可以用下面这条命令来监视整个过程
watch -n 1 'pvs;vgs;lvs;df -h /mnt'
三、lvm 的拉伸
1.当物理卷组(vg)中的剩余空间充足时
lvextend -L 80M /dev/vg0lv0 ##拉伸设备
xfs_growfs /dev/vg0/lv0 ##拉伸文件系统
2.当物理卷组(vg)中的剩余空间不足时( 扩展过程中可以不卸载分区 )
(1)再建立一个物理卷组(pv)
(2)创建一个物理卷并且扩展物理卷组
pvcreate /dev/vdb2
vgextend vg0 /dev/vdb2 ##拉伸物理卷组
(3)拉伸逻辑卷,将文件系统扩容
lvextend -L 700M /dev/vg0lv0 ##拉伸逻辑卷,此时文件系统大小仍不改变
xfs_growfs /dev/vg0/lv0 ##扩展文件系统
3.针对ext文件系统的设备的拉伸和缩减
##首先把要操作的挂载点卸载,将/dev/vg0/lv0格式化为ext4文件系统
umount /mnt
mkfs.ext4 /dev/vg0/lv0
mount /dev/vg0/lv0 /mnt
(1) 拉伸设备和文件系统
lvextend -L 800M /dev/vg0/lv0
resize2fs /dev/vg0/lv0
(2)ext4不仅可以拉伸还可以缩减,而xfs只可以拉伸(缩减必须在卸载状态下进行)
lvm 的缩减
e2fsck -f /dev/vg0/lv0 ##先对设备进行扫描
resize2fs /dev/vg0/lv0 100M ##对文件系统进行缩减(文件系统是依托于设备存在的)
lvreduce -L 100M /dev/vg0/lv0 ##对设备进行缩减
mount /dev/vg0/lv0 /westos ##重新挂载查看
#物理卷(vg)的缩减
(1)当两个物理卷都有数据时
pvmove /dev/vdb1 /dev/vdb2 ##将vdb1中的数据放入vdb2中
vgreduce vg0 /dev/vdb1 ##将vdb1从vg0中移除
pvremove /dev/vdb1 ##移除vdb1
四、lvm 的快照
在实验开始前给 lvm 的挂载点里写一些数据(本次实验创建5个文件为例touch file{1..5}
)
1.创建快照
lvcreate -L 40M -n lv0-backup -s /dev/vg0/lv0 ##创建一个快照,快照名称任意
mount /dev/vg0/lv0-backup /mnt ##挂载快照
2.将创建的文件删除并把快照也删掉
rm -fr /mnt/file*
umount /mnt
lvremove /dev/vg0/lv0-backup
3.重新创建快照,可以看到文件恢复
lvcreate -L 40M -n lv0-backup -s /dev/vg0/lv0
mount /dev/vg0/lv0-backup /mnt
4.删除 lvm (从小到大一层层删除)
umount /mnt ##卸载状态下进行
lvremove /dev/vg0/lv0-backup ##删除lvm快照
lvremove /dev/vg0/lv0 ##删除lvm
vgremove vg0 ##删除vg
pvremove /dev/vdb2 ##删除pv
fdisk /dev/vdb ##删除分区