LVM,Logical Volume Manage,逻辑卷管理,是Linux下对磁盘分区进行管理的一种机制。LVM是建立在磁盘分区和文件系统之间的一个逻辑层。管理员利用LVM可以在磁盘不用重新分区的情况下动态调整分区大小;如果主机新增了一块硬盘,通过LVM可以直接将新增的空间扩展到原来的磁盘分区上;LVM可以跨硬盘建立。
LVM的相关概念:
- 物理存储设备:Physical Media,如硬盘
- PV:Physical Volume,物理卷
- VG:Volume Group,卷组
- LV:Logical Volume,逻辑卷
- PE:Physical Extent,PV中可以分配的最小存储单元
- LE:Logical Extent,LV中可以分配的最小存储单元
它们之间的关系如下图所示:
LVM依赖以下软件包:
lvm2
lvm2-libs
e2fsprogs
e2fsprogs-libs
xfsprogs
创建LVM:
- 对磁盘进行分区
- 创建物理卷
pvcreate part # 将指定分区创建成PV pvdisplay # 查看PV信息
- 创建卷组
vgcreate VG name PV # 将指定的PV加入到VG vgdisplay # 查看VG信息
- 激活卷组
vgchange -a y VG
- 创建逻辑卷
lvcreate -L size|-l PE number -n LV name VG # 在指定VG上创建LV lvdisplay # 查看LV信息
- 格式化逻辑卷
mkfs.文件系统类型 /dev/VG/LV
- 挂载逻辑卷
扩展VG:
vgextend VG PV
扩展LV:
lvextend -L +size|-l +PE number /dev/VG/LV
删除LVM:
- 卸载逻辑卷对应的分区
- 删除LV
lvremove /dev/VG/LV
- 删除VG
vgremove VG
- 删除PV
pvremove PV
额外的:在线扩展xfs和ext4
扩展xfs:
xfs_growfs 分区
扩展ext4:
resize2fs 分区
一个例子:跨硬盘创建一个LVM
为当前主机添加了一块15GB和一块20GB的硬盘,在系统中分别为/dev/sdb和/dev/sdc。/dev/sdb分割为10GB和5GB的两个分区,/dev/sdc分割为两个10GB的分区。/dev/sdb的10GB分区和/dev/sdc的一个10GB分区组成一个名为test01的VG,并上VG上创建一个名为test1的LV,占用所有的VG空间并格式化为xfs挂载到/data1目录下。
先用yum安装LVM所依赖的软件包:
[root@localhost ~]# yum install lvm2 lvm2-libs e2fsprogs e2fsprogs-libs xfsprogs
为主机添加了两块硬盘:
使用parted对这两块硬盘进行分区:
分区完成,这里要将/dev/sdb1和/dev/sdc1组成一个VG,所以先把/dev/sdb1和/dev/sdc1创建成PV:
使用pvdisplay查看两个PV是否创建成功:
通过返回的信息可以看到PV创建成功,接下来把两个PV组成一个VG,VG名为test01:
VG创建成功,接下来激活VG:
接下来将VG的全部空间创建一个LV,LV名为test1(这里使用PE数量创建):
将LV格式化为xfs并挂载到/data1目录下:
OK,LV成功挂载到/data1目录,现在就可以先里面写入数据了。
一个例子:为LV扩展空间
将剩余的/dev/sdb2和/dev/sdc2加入test01的VG中,并将这些空间扩展到test1的LV上。
创建PV并将PV扩展到VG上:
注意返回结果的Free PE字段,空间已经扩展,接下来把这些空间扩展到test1的LV上(同样使用PE进行操作):
通过上面的显示信息可以看到,名为test1的LV空间已经成功扩展,但是在线上挂载到的/data1的空间仍没有扩展,因为是xfs,所以可以通过xfs_growfs命令实现在线扩展xfs空间:
OK,在线扩展成功。