摘要: LVM是逻辑卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的逻辑层,来提高磁盘分区管理的灵活性。
一. LVM简介
二. LVM基本术语
三. 安装LVM
四. 创建和管理LVM
创建PV
创建VG
创建LV
LV格式化及挂载
五. ECS上LVM扩容实战(磁盘扩容)
一. 简介
LVM是逻辑卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的逻辑层,来提高磁盘分区管理的灵活性。
LVM的工作原理其实很简单,它就是通过将底层的物理磁盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过逻辑卷来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
二. LVM基本术语
物理磁盘
物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/xvda、/dev/vdb等等,是存储系统最低层的存储单元。
PV(Physical Volume)- 物理卷
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘
VG(Volumne Group)- 卷组
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
LV(Logical Volume)- 逻辑卷
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
LVM使用分层结构,如下图所示:
三. 安装LVM
3.1 检查系统内是否安装了LVM管理工具
# rpm -qa |grep lvm
lvm2-2.02.143-12.el6_9.1.x86_64
lvm2-libs-2.02.143-12.el6_9.1.x86_64
lvm2-devel-2.02.143-12.el6_9.1.x86_64
lvm2-cluster-2.02.143-12.el6_9.1.x86_64
注:目前线上的镜像基本都集成了该工具
3.2 如果没有安装,可以使用yum的方式安装
# yum -y install lvm2*
四. 创建和管理LVM
4.1 创建一个 LVM 分区
fdisk的参数(n/p/1/回车/回车/t/8e/w)
注:8e代表是lvm的分区
4.2 创建 PV
# pvcreate /dev/xvdb1
Physicalvolume"/dev/xvdb1"successfully created
查看 PV 信息,可以看到有 30G 的容量
注:有些信息是后补的,因此可能会有前后信息不一致的情况,请见谅
使用下列命令可以删除物理卷:
# pvremove /dev/xvdb1
4.3 创建 VG
# vgcreate vg1 /dev/xvdb1
Volume group "vg1" successfully created
查看卷组信息
从输出中,我们可以看见卷组的使用量/总量,物理卷给卷组提供空间,只要在这个卷组中还有可用空间,我们就可以创建/扩展逻辑卷。
使用下列命令删除卷组:
#
# vgdisplay (看下剩下多少)
# lvcreate -L 30G -n lv1 vg1
Volume group "vg1" has insufficient free space (7679 extents): 7680 required.
vgdisplay看有30g,但是实际创建的时候报错了,
free PE 7679 * pe size 4M /1024=29.99 ,先创建一个29G的lv出来再扩展试下
4.5 扩容 LV
# vgdisplay (看下剩下多少)
可以看到还剩下1020M,添加1020M到lv1里面
# lvextend -L +1020M /dev/vg1/lv1
注:这个扩容是VG本身还有余量,给LV扩容余量而非物理磁盘的扩容
4.6 格式化+挂载 LVM 分区
# mkfs.ext4 /dev/vg1/lv1
挂载 LVM
# mount /dev/vg1/lv1 /lvm
查看容量信息
# df -h
五. ECS上LVM扩容实战(磁盘扩容)
5.1 控制台扩容磁盘(这里不做详细图示了)
ECS控制台--实例列表--管理--本实例磁盘--更多--磁盘扩容
设置目标容量,确定扩容
扩容完成后需要控制台重启一下ecs实例才可以
注:如果是待挂载状态则挂载后系统内看到的就是扩容后的容量了
5.2 登陆扩容
#fdisk -l
注:查看一下磁盘信息,可以看到,数据盘已经扩容到50g,但是lvm分区还是30g
因为是物理磁盘级别的扩容,因此需要卸载挂载的分区,并取消分区卷组的激活
# umount /lvm
# vgchange -an vg1
0 logical volume(s)involume group"vg1"now active
注:取消激活后,可以尝试mount /dev/vg(tab键补充)就会发现已经没有vg的路径了
将扩容后的空闲磁盘创建一个分区出来
将新增的分区加到卷组里面
# vgextend vg1 /dev/xvdb2
Physical volume"/dev/xvdb2"successfully created
Volumegroup"vg1"successfully extended
查看卷组信息可以看到FREE PE多了出来
扩容前重新激活一下逻辑卷
# vgchange -ay vg1
1 logical volume(s)involume group"vg1"now active
将这20G空间扩容到逻辑卷上
# lvextend -L +20G /dev/vg1/lv1
Sizeoflogical volume vg1/lv1 changed from30.00GiB (7679extents) to50.00GiB (12799extents).
Logical volume lv1 successfully resized.
查看卷组信息,已经都分配完了
重置一下逻辑卷的大小并挂载
注:实际操作中如果df -h看不到扩容后的大小,看下resize2fs是不是有提示执行e2fsck的提示
# resize2fs /dev/vg1/lv1
resize2fs1.41.12(17-May-2010)
Please run'e2fsck -f /dev/vg1/lv1'first.
区别应是我前面挂载了所以直接resize成功,不挂载则需要检查一下磁盘信息