LVM介绍


LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。
而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。


LVM基本术语

物理存储介质(The physical media)
这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。


物理卷PV(physical volume)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。


卷组VG(Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。


逻辑卷LV(logical volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。


PE(physical extent)
每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。


LE(logical extent)
逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。


../img/lvm_vg.jpg


VGDA(卷组描述符区域)
和非 LVM 系统将包含分区信息的元数据保存在位于分区起始位置的分区表中一样,逻辑卷以及卷组相关的元数据被保存在位于物理卷起始处的 VGDA 中。VGDA 包括以下内容:PV 描述符、VG 描述符、LV 描述符、和一些 PE 描述符。系统启动 LVM 时激活 VG,并将 VGDA 加载至内存,来识别 LV 的实际物理存储位置。当系统进行 I/O 操作时,就会根据 VGDA 建立的映射机制来访问实际的物理位置。


创建和管理lvm

分区

使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是一样的,区别仅仅是LVM的分区类型为8e。


创建物理卷

创建物理卷的命令为pvcreate,利用该命令将希望添加到卷组的所有分区或者磁盘创建为物理卷。


#pvcreate /dev/hda5

创建卷组

创建卷组的命令为vgcreate,将使用pvcreate建立的物理卷创建为一个完整的卷组:


# vgcreate web_document /dev/hda5 /dev/hdb
vgcreate在创建卷组 web_document 以外,还设置使用大小为4 MB的PE(默认为4MB),这表示卷组上创建的所有逻辑卷都以 4 MB 为增量单位来进行扩充或缩减。由于内核原因,PE大小决定了逻辑卷的最大大小,4 MB 的PE决定了单个逻辑卷最大容量为 256 GB,若希望使用大于256G的逻辑卷则创建卷组时指定更大的PE。PE大小范围为8 KB 到 512 MB,并且必须总是 2 的倍数(使用-s指定)


激活卷组


# vgchange -ay web_document

添加新的物理卷到卷组中

当系统安装了新的磁盘并创建了新的物理卷,而要将其添加到已有卷组时,就需要使用vgextend命令:


# vgextend web_document /dev/hdc1

查看物理卷信息


# pvdisplay /dev/hda1

从卷组中删除一个物理卷

要从一个卷组中删除一个物理卷,首先要确认要删除的物理卷没有被任何逻辑卷正在使用.
如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据备份到其他地方,然后再删除。


# vgreduce web_document /dev/hda1

创建逻辑卷


# lvcreate -L1500 –n www1 web_document
该命令就在卷组web_document上创建名字为www1,大小为1500M的逻辑卷,并且设备入口为/dev/web_document/www1


创建文件系统

推荐使用reiserfs文件系统,来替代ext2和ext3


删除一个逻辑卷

删除逻辑卷以前首先需要将其卸载,然后删除:


# umount /dev/web_document/www1
# lvremove /dev/web_document/www1

扩展逻辑卷大小

LVM提供了方便调整逻辑卷大小的能力,扩大为12G


# lvextend -L12G /dev/web_document/www1
增加1G
# lvextend -L+1G /dev/web_document/www1
增加了逻辑卷的容量以后,就需要修改文件系统大小以实现利用扩充的空间。笔者推荐使用reiserfs文件系统来替代ext2或者ext3。因此这里仅仅讨论reiserfs的情况。Reiserfs文件工具提供了文件系统大小调整工具:resize_reiserfs。对于希望调整被加载的文件系统大小:


# resize_reiserfs -f /dev/web_document/www1
对于使用ext2或ext3文件系统的用户可以考虑使用工具
ext2resize。
http://sourceforge.net/projects/ext2resize


减少逻辑卷大小

使用lvreduce即可实现对逻辑卷的容量,同样需要首先将文件系统卸载:
要先减少文件系统,然后再减少逻辑卷


# umount /data/wwwroot
# resize_reiserfs -s-2G /dev/web_document/www1
# lvreduce -L-2G /dev/web_document/www1
# mount -treiserfs /dev/web_document/www1 /data/wwwroot

灵活

逻辑卷可以再组合成pv,和vg,再次进行lvm。
而且一个卷组可以跨多个磁盘。
如果想自己做实验可以自己创建空洞文件进行lvm练习。


dd if=/dev/zore of=./loop1.img bs=1G count=0 seek=100
这就创建了一个100G的稀疏文件,文件大小是100G,但占用的空间是0.
然后使用losetup进行加载。就可以当/dev/loop0 磁盘使用了。


snapshot

lvm可以创建镜像,创建时选择创建允许多大的空间用于记录变化。
创建镜像后实际上就是和原始lv独立,但如果原始lv删掉了,则所有的snap也就丢失了。
snap和原始lv都可以后续修改,而且snap可以和原始lv进行合并,使原始lv变为snap当前的样子。

lvm常用管理工具:


功能物理卷卷组逻辑卷
扫描pvscanvgscanlvscan
查看pvdisplayvgdisplaylvdisplay
新建pvcreatvgcreatlvcreat
卸载pvremovevgremovelvremove
增大vgextendlvextend
减小vgreducelvreduce


lvs
pvs