LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。RHEL5默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是/boot分区不能基于LVM创建,必须独立出来。
一、创建逻辑卷
1、准备分区
/dev/sda7
/dev/sda8
#partprobe
使分区表生效,无需重启系统。
2、创建物理卷
# pvcreate /dev/sda7 /dev/sda8
Physical volume "/dev/sda7" successfully created
Physical volume "/dev/sda8" successfully created
3、创建卷组
#vgcreate vgdata /dev/sda7 /dev/sda8
Volume group "vgdata" successfully created
创建卷组 vgdata ,并将刚才创建好的两个物理卷加入该卷组.
4、从物理卷vgdata上分割出2G给新的逻辑卷lvdata1
#lvcreate -L 2G -n lvdata1 vgdata
Logical volume "lvdata1" created
5、在lvdata1建立文件系统
#mkfs.ext3 /dev/vgdata/lvdata1
6、挂载逻辑卷lvdata1
#mount /dev/vgdata/lvdata1 /vg_test
#df -h
/dev/mapper/vgdata-lvdata1
2.0G 68M 1.9G 4% /vg_test
二、逻辑卷扩展,空间不够用。
给逻辑卷增加空间并不会影响以前空间的使用,所以无需卸载文件系统,直接通过命令
#lvextend -L +500M /dev/vgdata/lvdata1
Extending logical volume lvdata1 to 2.49 GB
Logical volume lvdata1 successfully resized
或者lvextend –l 2.5G /dev/vgdata/lvdata1 给lvdata1增加500M空间
#resize2fs /dev/vgdata/lvdata1
使用resize2fs命令来同步文件系统。
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/vgdata/lvdata1 is mounted on /vg_test; on-line resizing required
Performing an on-line resize of /dev/vgdata/lvdata1 to 652288 (4k) blocks.
The filesystem on /dev/vgdata/lvdata1 is now 652288 blocks long.
#df -h
/dev/mapper/vgdata-lvdata1
2.5G 68M 2.3G 3% /vg_test
逻辑卷lvdata1增加了500M空间
三、当卷组不够用,如何给卷组扩容。
常见硬盘分区,将分区加入已存在的卷组vgdata
#vgextend vgdata /dev/sda9
查看是否成功加入卷组
#pvs
PV VG Fmt Attr PSize PFree
/dev/sda7 vgdata lvm2 a- 1.54G 1.54G
/dev/sda8 vgdata lvm2 a- 3.64G 1.16G
/dev/sda9 vgdata lvm2 a- 122.56G 122.56G
四、当硬盘空间不够用,如何减少逻辑卷空间释放给其他逻辑卷。
1、卸载逻辑卷
#umount /dev/vgdata/lvdata2
2、通过e2fsck命令检测逻辑卷上空余的空间。
#e2fsck /dev/vgdata/lvdata2
e2fsck 1.39 (29-May-2006)
/dev/vgdata/lvdata2: clean, 11/2621440 files, 126323/5242880 blocks
3、使用resize2fs将文件系统减少到5G
#resize2fs /dev/mapper/vgdata-lvdata2 5G
4、使用lvreduce命令将逻辑卷减少到5G
#lvreduce -L 5G /dev/vgdata/lvdata2
WARNING: Reducing active logical volume to 5.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lvdata2? [y/n]: y
Reducing logical volume lvdata2 to 5.00 GB
Logical volume lvdata2 successfully resized
注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,哪数据就出问题了。
5、重新挂载逻辑卷lvdata2
#mount /dev/vgdata/lvdata2 /vg_test2
五、如果某一块磁盘或者分区故障,如何将数据快速转移到相同的卷组其他的空间去。
1、通过pvmove命令转移空间数据
#pvs
PV VG Fmt Attr PSize PFree
/dev/sda7 vgdata lvm2 a- 1.54G 1.54G
/dev/sda8 vgdata lvm2 a- 3.64G 0
/dev/sda9 vgdata lvm2 a- 122.56G 108.72G
#pvmove /dev/sda8 /dev/sda9
/dev/sda8: Moved: 100.0%
#pvs
/dev/sda7 vgdata lvm2 a- 1.54G 1.54G
/dev/sda8 vgdata lvm2 a- 3.64G 3.64G
/dev/sda9 vgdata lvm2 a- 122.56G 105.07G
2、通过vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去。
#vgreduce vgdate /dev/sda8
Removed "/dev/sda8" from volume group "vgdata"
3、通过pvremove命令将即将坏的磁盘或者分区从系统中删除掉。
#pvremove /dev/sda8
Labels on physical volume "/dev/sda8" successfully wiped
#pvs
/dev/sda7 vgdata lvm2 a- 1.54G 1.54G
/dev/sda9 vgdata lvm2 a- 122.56G 105.07G
4、手工拆除硬盘或者通过一些工具修复分区。
六、删除整个逻辑卷
1、先通过umount命令卸载掉逻辑卷
#umount /dev/vgdata/lvdata1
#umount /dev/vgdata/lvdata2
2、修改/etc/fstab里面逻辑卷的挂载信息,否则系统有可能启动不起来。
3、通过lvremove 删除逻辑卷
#lvremove /dev/vgdata/lvdata1
#lvremove /dev/vgdata/lvdata2
4、通过vgremove 删除卷组vgdata
#vgremove vgdate
5、通过pvremove 将物理卷转化成普通分区。
#pvremove /dev/sda7 /dev/sda9