LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现。
普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统。
一、LVM 相关名词解释:
1、物理存储介质(PhysicalStorageMedia)
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。
2、物理卷(Physical Volume,PV)
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
3、卷组(Volume Group,VG)
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
4、逻辑卷(Logical Volume,LV)
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
5、物理块(Physical Extent,PE)
每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
二、创建一个LVM系统;
1、创建分区
使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是一样的,区别仅仅是LVM的分区类型为8e。
2、创建物理卷
创建物理卷的命令为pvcreate,利用该命令将希望添加到卷组的所有分区或者磁盘创建为物理卷。
将整个磁盘创建为物理卷的:
# pvcreate /dev/sdb
将单个分区创建为物理卷的:
# pvcreate /dev/hda5
3、创建卷组
创建卷组 vgcreate,
将使用 pvcreate 建立的物理卷创建为一个完整的卷组:
# vgcreate web_data /dev/hda5 /dev/sdb vgcreate
第一个参数是指定该卷组的逻辑名:web_data。
后面参数是指定希望添加到该卷组的所有分区和磁盘。
vgcreate 在创建卷组web_data以外,还设置使用大小为4MB的PE(默认为4MB),这表示卷组上创建的所有逻辑卷都以4MB为增量单位来进行扩充或缩减。由于内核原因,PE大小决定了逻辑卷的最大大小,4MB的PE决定了单个逻辑卷最大容量为256GB,若希望使用大于256G的逻辑卷则创建卷组时指定更大的PE。PE大小范围为8KB到512MB,并且必须总是2的倍数(使用-s指定,具体请参考manvgcreate)。(centos 6.2系统已发现没有这种限制)
4、激活卷组
为了立即使用卷组而不是重新启动系统,可以使用vgchange来激活卷组:
# vgchange -ay web_data
5、添加新的物理卷到卷组中
当系统安装了新的磁盘并创建了新的物理卷,而要将其添加到已有卷组时,就需要使用vgextend命令:
# vgextend web_data /dev/hdc1 /dev/hdc1 表示是新的物理卷。
6、从卷组中删除一个物理卷
要从一个卷组中删除一个物理卷,首先要确认要删除的物理卷没有被任何逻辑卷正在使用,就要使用pvdisplay命令察看一个该物理卷信息:
如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据备份到其他地方,然后再删除。删除物理卷的命令为vgreduce:
# vgreduce web_data /dev/hda1
7、创建逻辑卷
创建逻辑卷的命令为 lvcreate:
# lvcreate -L 500 -n test web_data 该命令就在卷组web_data上 创建名字为test
-L 大小为 500M (大小格式还有 G)
并且设备入口为 /dev/web_data/test(web_data为卷组名,test为逻辑卷名)。
如果希望创建一个使用全部卷组的逻辑卷,则需 要首先察看该卷组的PE数,然后在创建逻辑卷时指定:
# vgdisplay web_data | grep "TotalPE"
TotalPE45230
# lvcreate -l45230 web_data -n test
8、加载文件系统格式
mkfs.ext4 /dev/web_data/test
或者:
mkfs -t ext4 /dev/web_data/test
resize2fs 针对的是ext2、ext3、ext4 文件系统
xfs_growfs 针对的是 xfs 文件系统
扩展增大减小 逻辑卷:
ext2/ext3/ext4 文件系统的调整命令是resize2fs(增大和减小都支持)
lvextend -L 100G /dev/web_data/test //增大至100G
lvextend -L +20G /dev/web_data/test //增加20G
lvreduce -L 50G /dev/web_data/test //减小至50G
lvreduce -L -20G /dev/web_data/test //减小20G
resize2fs /dev/web_data/test //执行调整 xfs 文件系统的调整命令是xfs_growfs(只支持增大)
lvextend -L 100G /dev/web_data/test //增大至100G
lvextend -L +20G /dev/web_data/test //增加20G
xfs_growfs /dev/web_data/test //执行调整
创建挂载目录
#mkdir /data/wwwroot
#mount /dev/web_data/test /data/wwwroot 如果希望系统启动时自动加载文件系统
编辑 /etc/fstab 添加:
/dev/web_data/test /data/wwwroot ext4 defaults
9、删除一个逻辑卷
删除逻辑卷以前首先需要将其卸载,然后 lvremove 删除:
取消挂载
# umount /dev/web_data/test
移除逻辑卷
# lvremove /dev/web_data/test