利用LVM管理磁盘系统
1. 什么是LVM
-------------------------------------------------------------------------------------------------------
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是对磁盘分区进行管理的一种机制, LVM是建立在硬盘和分区之上的一个逻辑层,用来提高磁盘管理的灵活性.通过LVM可将若干个 磁盘分区连接为一个整块的卷组(Volume Group),形成一个存储池.可以在卷组上随意创建逻辑 卷(Logical Volumes),并进一步在逻辑卷上创建文件系统.
2. LVM的作用
-------------------------------------------------------------------------------------------------------
通过LVM可以方便的调整存储卷的大小,并且可以对磁盘存储按照组的方式进行命名、管理和 分配,例如按照使用用途进行定义:”development”和”data”,而不是使用物理磁盘名”sda”和 “sdb”.当系统添加了新的磁盘,通过LVM可以直接扩展文件系统跨越该磁盘, 而不必将文件移动 到新的磁盘上.
3. 基本概念
--------------------------------------------------------------------------------------------------------
●物理卷pv(Physical Volume)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,
但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数.
●卷组vg(Volume Group)
卷组由物理卷组成,类似于非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是相同的,并且一一对应.
和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷 组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中.VGDA包括以下内容: PV描述符、VG描述符、LV描述符、和一些PE描述符 .
系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置.当系统进行I/O操作 时,就会根据VGDA建立的映射机制来访问实际的物理位置.
4. 安装LVM
-------------------------------------------------------------------------------------------------------------
确定系统中是否安装了lvm工具:
1
2 |
# rpm -qa | grep lvm lvm2-2.02.72 |
如果命令结果类似于上例,说明系统已经安装了LVM管理工具;如果命令没有输出则说明没有安装LVM管理工具,则需要从网络下载或者从光盘装LVM rpm工具包.
为了使用LVM,要确保在系统启动时激活LVM,RedHat发行版在启动时已经具有对激活LVM的 支持,在/etc/rc.d/rc.sysinit中有以下内容:
1
2
3 |
if [ -x /sbin/lvm ]; then action quot;Setting up Logical Volume Management:" /sbin/lvm vgchange -a y --sysinit fi |
5. 创建和管理LVM
---------------------------------------------------------------------------------------------------
要创建一个LVM系统,一般需要经过以下步骤:
5.1、创建分区
使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是一样的,区别 仅仅是LVM的分区类型为8e.
1
2
3
4
5 |
# fdisk -l /dev/sdc Device Boot Start End Blocks Id System /dev/sdc1 1 128 1028128+ 8e Linux LVM /dev/sdc2 129 256 1028160 8e Linux LVM /dev/sdc3 257 391 1084387+ 8e Linux LVM |
5.2、pv阶段
5.2.1创建物理卷 创建物理卷的命令为pvcreate,利用该命令将希望添加到卷组的所有分区或者磁盘创建为物理卷.
1
2
3
4 |
# pvcreate /dev/sdc[1,2,3] Physical volume "/dev/sdc1" successfully created Physical volume "/dev/sdc2" successfully created Physical volume "/dev/sdc3" successfully created |
5.2.2查看物理卷,通过pvs命令你可以列出系统上所有的物理卷。
如果使用pvdisplay,你可以得到有关物理卷的更详细的信息。
5.3、vg阶段
5.3.1 创建卷组,创建卷组的命令为vgcreate,将使用pvcreate建立的物理卷创建为一个完整的卷组:
1 |
# vgcreate vg1 /dev/sdc1 /dev/sdc2 /dev/sdc3 |
vgcreate命令第一个参数是指定该卷组的逻辑名:vg1.后面参数是指定希望添加 到该卷组的所有分区和磁盘.vgcreate在创建卷组 vg1 以外,还设置使用大小为4MB 的PE(默认为4MB),这表示卷组上创建的所有逻辑卷都以 4MB 为增量单位来进行扩充或缩减.我们可以使用-s指定PE大小。
5.3.2查看卷组 通过vgs命令你可以列出系统上所有的卷组。
,如果使用vgdisplay命令,你可以得到有关卷组更详细的信息。
5.4、lv阶段
5.4.1创建逻辑卷 创建逻辑卷的命令为lvcreate:
1 |
#lvcreate -n data -L 1000 vg1 |
该命令就在卷组vg1上创建名字为data,大小为1000M的逻辑卷。这里我们使用大写L直接指定逻辑卷大小,你也可以使用小写l跟PE数量指定逻辑卷大小。
1 |
# lvcreate -n data1 -l 250 vg1 |
5.4.2查看逻辑卷,通过lvs可以列出系统上所有的逻辑卷。
如果使用lvdisplay,你可以得到有关逻辑卷的更详细的信息。
1
2
3
4 |
# lvdisplay /dev/vg1/data | grep "LV Size" LV Size 1000.00 MiB # lvdisplay /dev/vg1/data1 | grep "LV Size" LV Size 1000.00 MiB |
由于一个PE大小为4M,在创建data1逻辑卷的时候我们指定250个PE,所以大小也是1000M。
5.4.3逻辑卷的使用
逻辑卷创建了文件系统以后,就可以挂载并使用它:
1
2
3 |
# mkfs.ext3 /dev/vg1/data # mkdir /var/wwwroot # mount /dev/vg1/data /var/wwwroot |
如果希望系统启动时自动加载文件系统,则还需要在/etc/fstab中添加内容.
6. LVM扩展逻辑卷大小
-------------------------------------------------------------------------------------------------------------
6.1扩展逻辑卷大小
LVM提供了方便调整逻辑卷大小的能力,扩展逻辑卷大小的命令是lvextend:
将逻辑卷www1的大小扩展为2000M.
1 |
# lvextend –L 2000M /dev/vg1/data |
将逻辑卷www1的大小增加1000M.
1 |
# lvextend –L +1000M /dev/vg1/data |
增加了逻辑卷的容量以后,就需要修改文件系统大小以实现利用扩充的空间. 对于使用ext3或 ext4文件系统的用户可以考虑使用resize2fs工具:
1 |
# resize2fs /dev/vg1/data |
5.2.添加新的物理卷到卷组中
当系统安装了新的磁盘并创建了新的物理卷,而要将其添加到已有卷组时,就需要使用vgextend命令:
1 |
# vgextend vg1 /dev/sdd1 #这里/dev/sdd1是新的物理卷. |
从卷组中删除一个物理卷,从已经创建号的卷组中删除一个物理卷,首先得使用pvmove将该物理馆上的数据移到别的物理卷,再使用vgreduce命令删除该物理卷。这样这个物理卷就像普通分区一样使用了。
1
2 |
# pvmove /dev/sdd1 # vgreduce vg1 /dev/sdd1 |
5.3.删除LV,VG
要.删除LV,VG,我们必须卸载挂载的逻辑卷,再使用vgchange命令停止卷组,然后先删除逻辑卷,再删除卷组。
1
2
3
4 |
# umount /dev/vg1/data # vgchange –an /dev/vg1 # lvremove /dev/vg1/data # vgremove /dev/vg1 |
注:-a是available的缩写,y表示yes,n表示no。
如下图: