Linux逻辑卷管理工具-LVM
2016年05月13日

概述

LVM是Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现;Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间.普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上.而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题.随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小.

快照

为创建逻辑卷快照

lvcreate -L 10G -s -n snap1 /dev/mapper/vg-root
参数 含义
-L 10G 快照大小为10G,如果文件变动大小超过10G,快照将失效
-s 快照
-n snap1 快照名称

最后参数表明要给哪个逻辑卷做快照

还原快照

dd if=/dev/mapper/vg-snap1 of=/path/of/file
#注意这时候的快照为整个原分区的实际大小,所以请确保磁盘有足够的存储空间
dd if=/path/of/file of=/dev/mapper/vg-root

逻辑卷数据迁移

假设需要将加入vg中的数据从一个分区迁移到另外一个分区

pvscan 
PV /dev/sda7   VG vg              lvm2 [55.88 GiB / 27.39 GiB free]
PV /dev/sda8   VG vg              lvm2 [55.88 GiB / 55.88 GiB free]
Total: 2 ....

查看vg中各分区占用情况,sda7和sda8都从属于vg
目前sda7中有数据,sda8没有数据,所以只迁移sda7的数据就可以了,假设要迁移到sda9中

pvcreate /dev/sda9
# 格式化分区
vgextend vg /dev/sda9
# 将sda9添加到vg中
pvmove /dev/sda7 /dev/sda9

/dev/sda7 : Moved: 0.0%
/dev/sda7 : Moved: 5.6%
...
/dev/sda7 : Moved: 100.0%

# 将sda7从vg中去掉
vgreduce vg /dev/sda7

扩容逻辑卷空间

举例: 假设原lv大小为20G,需要增加10G,最终变成30G

方法一

# 增大lv
lvextend -L +10G /dev/VG_NAME/LV_NAME
# 更新文件系统大小
resize2fs -f /dev/VG_NAME/LV_NAME

方法二

lvextend -L +10G -f -r /dev/VG_NAME/LV_NAME

减少逻辑卷空间

操作方式类似于扩容,但是使用lvreduce命令
举例:原文件系统所在lv大小为30G,减少10G,最终变成20G

方法一

# 磁盘检查
e2fsck -f /dev/VG_NAME/LV_NAME
# 改变文件系统大小 可能需要先umount
resize2fs /dev/VG_NAME/LV_NAME 20G
# 减小lv
lvreduce -L 20G /dev/VG_NAME/LV_NAME

方法二

lvreduce -L 20G -f -r /dev/VG_NAME/LV_NAME