LVM(逻辑卷)管理系统可以将多个物理磁盘组装为一个大的逻辑磁盘进行使用,尤其是管理大文件时非常方便。LVM可以减少多个磁盘的部分空间闲置的情况,集中使用提高磁盘利用率。LVM的卷可以动态伸缩,方便使用。
LVM由PV(物理卷)、VG(卷组)、LV(逻辑卷)组成,其中PV对应到物理磁盘的一个物理分区,LV相当于一个逻辑分区,VG建立起逻辑卷和物理卷之间的对应关系。
1、将物理磁盘转换为PV
- 注意:备份您的所有数据!
查看物理磁盘信息
df -h
创建物理卷
如果要将物理分区/dev/sdb2转为物理卷:
sudo pvcreate /dev/sdb2
将把LVM的标志符写入到磁盘之中。
查看物理卷
sudo pvs
2、建立逻辑卷组-VG
2.1 创建逻辑卷组
以上面添加的第一个物理盘为基础,创建逻辑卷组
vgcreate vgdata /dev/sdb2
2.2 激活VG
在被激活之前,VG与LV是无法访问的,这时可用命令:
sudo vgchange -a y vgdata
激活所要使用的卷组。
2.3 卸载VG
当不再使用VG时,可用vgchange使之不再可用。
sudo vgchange -a n vgdata
3、建立逻辑卷-LV
3.1 命令lvcreate用于创建逻辑卷
语法如下:
lvcreate [options] -n 逻辑卷名 卷组名 [PV1 ... ]
其中的常用可选项有:
- -i Stripes :采用交错(striped)方式创建LV,其中Stripes指卷组中PV的数量。
- -I Stripe_size :采用交错方式时采用的块大小(单位为KB),Stripe_size必须为2的指数:2N ,N=2,3...9。
- -l LEs :指定LV的逻辑块数。
- -L size :指定LV的大小,其后可以用K、M、G表示KB、MB、GB。
- -s :创建一已存在LV的snapshot卷。
- -n name :为LV指定名称。
3.2 将整个物理卷指定为逻辑卷
如果需要LV使用整个VG,可首先用vgdisplay 查找 Total PE 值,然后在运行lvcreate时指定,如:
# sudo vgdisplay vgdata | grep "Total PE"
Total PE 10230
# sudo lvcreate -l 10230 vgdata -n data
这时创建了一个逻辑卷,名称为data。
3.3 创建文件系统
创建出的逻辑卷相当于系统的一个“裸磁盘分区”,需要进一步创建文件系统和进行格式化。
sudo mke2fs /dev/vgdata/data
3.4 伸缩逻辑卷
为逻辑卷增加容量可用使用lvextend,即可以指定要增加的尺寸也可以指定扩容后的尺寸,如
# lvextend -L12G /dev/vgdata/data
lvextend -- extending logical volume "/dev/testvg/testlv" to 12 GB
lvextend -- doing automatic backup of volume group "testvg"
lvextend -- logical volume "/dev/testvg/testlv" successfully extended
将扩大逻辑卷data的容量为12GB。
# lvextend -L+1G /dev/testvg/testlv
lvextend -- extending logical volume "/dev/testvg/testlv" to 13 GB
lvextend -- doing automatic backup of volume group "testvg"
lvextend -- logical volume "/dev/testvg/testlv" successfully extended
将为LV testlv再增大容量1GB至13GB。
为LV扩容的一个前提是:LV所在的VG有足够的空闲存储空间可用。 在为LV扩容之后,应同时为LV之上的文件系统扩容,使二者相匹配。对不同的文件系统有相对应的扩容方法。
ext2/ext3 除非内核已有ext2online 补丁,否则在改变ext2/ext3文件系统的大小时应卸载它:
umount /dev/testvg/testlv
resize2fs /dev/testvg/testlv
mount /dev/testvg/testlv /home
这里假设testlv安装点为/home。在es2fsprogs-1.19或以上版本中包含resize2fs命令。
在LVM发行包中有一个称为e2fsadm的工具,它同时包含了lvextend与resize2fs的功能,如:
# e2fsadm -L+1G /dev/testvg/testlv
等价于下面两条命令:
# lvextend -L+1G /dev/testvg/testlv
# resize2fs /dev/testvg/testlv
但用户仍需首先卸载文件系统。
reiserfs 与ext2不同,Reiserfs不必卸载文件系统,如:
resize_reiserfs -f /dev/testvg/testvl
xfs SGI XFS文件系统必须在安装的情况下才可改变大小,并且要使用安装点而不是块设备,如:
xfs_growfs /home
4、格式化逻辑卷
此时,操作系统中应该已经可以看到这个逻辑卷了,与普通磁盘没有任何区别。
按照普通磁盘格式化方法,进行格式化、赋予卷标,就可以正常使用了。
5、添加新物理盘
当卷组空间不足时,可以加入新的物理卷来扩大容量,这时可用命令vgextend,如:
# vgextend vgdata /dev/sdb2
其中/dev/sdb2是新的PV(物理卷,使用pvcreate从物理盘创建)。
需要以下几个步骤(/dev/sdb2是需要加入的物理磁盘,通过df -h获取磁盘标识):
A、使用pvcreate初始化物理磁盘。
sudo pvcreate /dev/sdb2
输入sudo pvs
可以看到创建的物理卷。
B、使用vgextend加入PV到VG中。
sudo vgextend vgdata /dev/sdb2
输入sudo vgs
可以看到vg中的物理卷列表。
C、使用lvextend扩展虚拟卷的大小。
#476899为增加的空闲空间,通过vgdisplay命令显示的Free PE值来确定。 lvextend -l+476899 /dev/vgdata/appdata
再执行sudo vgs
可以看到空闲空间被分配到了vgdata中,但这时文件系统中仍然无法使用。
Resize 逻辑卷LV的尺寸。 再次,扩大文件系统到整个逻辑卷。 首先
df -h
查看逻辑卷的名称,然后调用resize2fs。sudo resize2fs /dev/mapper/vgdata-appdata #将全部的剩余空间赋给虚拟卷appdata的文件系统。
这时候在操作系统中,点击文件夹的“属性”,可以看到整个磁盘空间已经扩大了。
6、系统启动/关闭
为使系统启动时可自动激活并使用LVM,可将以下几行添加到启动 rc 脚本中:
/sbin/vgscan
/sbin/vgchange -a y
这些行将浏览所有可用的卷组并激活它们。要注意的是,它们应在安装卷组上的文件系统操作之前被执行,否则将无法正常安装文件系统。
在系统关机时,要关闭LVM,这可将以下这行添加到关机 rc 脚本中,并确保它在卸装了所有文件系统后执行:
/sbin/vgchange -a n