一、LVM简介

    LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。LVM将一个或多个磁盘分区(PV)虚拟为一个卷组(VG),相当于一个大的硬盘,我们可以在上面划分一些逻辑卷(LV)。当卷组的空间不够使用时,可以将新的磁盘分区加入进来。我们还可以从卷组剩余空间上划分一些空间给空间不够用的逻辑卷使用。

    LVM模型如下图:

wKiom1UCozqRFqxeAAG7GUxEGiI294.jpg

二、LVM添加硬盘和扩容

    测试环境:CentOS7 64位(KVM虚拟机)

    LVM版本:lvm2-2.02.105-14.el7.x86_64

    1、添加一块硬盘(8GB)到系统中

wKioL1UCppmhSdIjAAKV8ioaU_8847.jpg

    使用 fdisk -l 查看到这块新盘为/dev/vdb:

1
shell# fdisk -l

wKiom1UCpifTBblUAAQ82M1Bf5g201.jpg

    2、对新盘分区

    使用 fdisk 命令对新盘进行分区,这里建立了一个主分区/dev/vdb1,大小8GB,最后使用 partprobe 命令重新读取分区表:

1
2
shell# fdisk /dev/vdb
shell# partprobe

wKioL1UCp5GxyGZaAA4mZCbd6zI957.jpg

    在分区的过程中,注意设置格式为8e,这是LVM的分区格式。

    3、创建物理卷(PV)

    使用 pvcreate 命令创建物理卷,pvdisplay 查看物理卷信息:

1
2
shell# pvcreate /dev/vdb1
shell# pvdisplay

wKioL1UCqNqxGdtnAALlubh9ZfU693.jpg

    4、将PV加入卷组(VG)

    使用 vgdisplay 查看卷组信息,下图显示卷组名为centos,空闲大小为0:

1
shell# vgdisplay

wKioL1UCqauTF4K3AAHZNsqkEPU128.jpg

    使用 vgextend 命令把/dev/vdb1加入到centos:

1
shell# vgextend centos /dev/vdb1

wKioL1UCqieTRfuIAAB8vhFL7c4900.jpg

    我们重新查看一下卷组信息,发现空闲空间为8GB,说明/dev/vdb1已经成功加入进来:

wKioL1UCqqjCkyMAAAHAR-pYI4Q174.jpg

    5、创建逻辑卷(LV)

    使用 lvcreate 命令从卷组里划分一个新的逻辑卷,这里创建了名称为newlv,大小4GB的逻辑卷分区;使用 lvdisplay 查看逻辑卷信息:

1
2
shell# lvcreate -L 4G -n newlv centos
shell# lvdisplay

wKiom1UCqguxHgiGAAW2XNw9-gQ507.jpg

    我们再查看一下卷组信息,卷组剩余4GB空间了:

wKiom1UCqszySmcfAAHjPD9topM757.jpg

    6、格式化逻辑卷并挂载

    新逻辑卷经过格式化就可以挂载到系统里存储数据了。使用 mkfs.xfs 格式化为CentOS7的xfs文件系统:

1
shell# mkfs.xfs /dev/centos/newlv

wKioL1UCreviNJTmAAHP5wDGs_I570.jpg

    挂载到/mnt目录下(你可以挂载到自己需要的目录下),挂载后看到容量为4GB:

1
2
shell# mount -t xfs /dev/centos/newlv /mnt/
shell# df -Th

wKiom1UCrPijc-QwAAISB0kRF4Q420.jpg

    设置开机自动挂载,编辑 /etc/fstab 文件,加入最后一行:

1
/dev/centos/newlv       /mnt                    xfs     defaults        1 2

wKiom1UCru2h4j7zAAD5xdCy684180.jpg

    7、逻辑卷扩容

    使用 lvextend 命令进行逻辑卷扩容。我把所有剩余空间都分配给了newlv,增大到了8GB,如下图:

1
shell# lvextend -l +100%FREE /dev/centos/newlv

wKioL1UCsGmCLO6tAADG8q0WDxs285.jpg

#使用lvextend命令扩展lvdata,扩展至5G

1
2
3
[root@node01 ~]# lvextend -L 5G /dev/vgdata/lvdata
  Size of logical volume vgdata/lvdata changed from 4.00 GiB (1024 extents) to 5.00 GiB (1280 extents).
  Logical volume lvdata successfully resized.

注:如果是新增5G,则使用命令(lvextend -L +5G /dev/vgdata/lvdata)

   

 使用 xfs_growfs 命令在线调整xfs格式文件系统大小(CentOS6使用resize2fs):

1
shell# xfs_growfs /dev/centos/newlv

wKiom1UCr1OCExEnAAQhpLMXn8g840.jpg

    最后我们看到逻辑卷分区已经动态扩容到了8GB:

wKioL1UCsIbTUjAUAAHFG4bUKDE852.jpg