Linux分区动态扩容lvm

Linux分区主要分为主分区、扩展分区、逻辑分区,主分区最多支持4个分区,扩展分区也算主分区中的一个。

只有LVM格式的逻辑分区支持在线动态扩容,不用重启机器,方法如下: (vmware虚拟机进行演示)

首先登陆linux服务器,可以看到默认的根分区和swap都是lvm格式的逻辑分区,除此之外没有其他分区

现在我们新增一个硬盘,将其挂载到data分区下,并且让data分区支持在线扩容。

如上图,我们新增了一块硬盘,大小为20G。

通过命令fdisk –l查看到已经添加的磁盘,但是还没有进行分区,下面执行命令进行分区

  1. 先执行fdisk  /dev/sdb进行分区,如图:

2. 输入m可以查看到命令对应的功能,如图:

3. 输入n添加一个新分区,然后输入p,添加主分区:

4. 下面输入分区编号以及大小值,直接默认即可,如图:

5. 然后输入t表示更改分区类型,然后输入8e 表示改为逻辑分区,最后输入w保存即可,如图:

6. 分区后再次执行fdisk –l 查看分区后的磁盘情况,发现已经分区完 成,并且是lvm格式的,如图:

7. 在新的硬盘上创建物理卷,用pvcreate命令:

创建完成后可以直接使用pvs或者pvdisplay查询当前存在的pv信息,如图:

8. 创建卷组,使用vgcreate命令(在物理卷的基础上创建卷组),创建后将刚才创建的物理卷加入到这个卷组vg1中 ,如图:

9. 创建完成后可以使用vgs或者vgdisplay来查看创建的卷组,可以查看到卷组中的pv数量是一个,如图:

注:也可以通过vgs/vgdisplay  + 卷组来查看指定卷组信息

10. 创建逻辑卷,使用lvcreate命令,命令有三种格式:

第一种:lvcreate  –L 逻辑卷大小 –n  逻辑卷名称  卷组名称
第二种:  lvcreate  -l  PE数    -n  逻辑卷名称   卷组名称
第三种: lvcreate -l +100%FREE -n 逻辑卷名称 卷组名称 #如果要把整个卷组都使用来创建lvm,就用这个命令

11. 如上图中的卷组vg1的空间大小为20G    PE数为5119,先用第一种方法创建逻辑卷lv1  设置大小为5G,方法如下:

 lvcreate  -L 5G    -n   lv1   vg1  #这里要是大写的L

由上图可知,创建后的逻辑卷lv1的大小为5G,所用的PE数为1280(Current Le的值),每个PE的大小为4MB,1280个刚好为5G.

再次查询卷组vg1的大小(vgs/vgdisplay),发现剩余空间为15G, 所剩余的PE数量3839,此时我们使用第二种方法来创建第二个逻辑卷lv2,大小为5G

lvcreate  -l   1280  -n  lv2    vg1  #这里的是小写的l

格式化逻辑卷lv1并挂在到data目录下(如果要开机自动挂载需要写入到/etc/fstab文件中),如图:

12. 根据上面可知lv1的大小为5G ,卷组vg1的剩余空间还有10G , 现在要对lv1进行扩容,将其增加到15G,此时可以使用命令 lvextend,命令格式也有两种方法:

1、lvextend   -L   +新增的空间大小  逻辑卷名称
2、lvextend   -l    +PE数           逻辑卷名称

    13. 现在采用第一种方法给lv1扩容5G,如下命令:

     lvextend   -L  +5G   /dev/vg1/lv1

    14. 现在用第二种方法给lv1扩容5G ,如下命令 (卷组vg1剩余5G,可通过vgdisplay查询):

     lvextend   -l   +1280   /dev/vg1/lv1

    如果全部空间都扩容进入也可使用命令

    lvextend -l +100%FREE  /dev/vg1/lv1

    15. 逻辑卷lv1扩容后实际上data目录并没有变大还需要执行最后一步命令 xfs_growfs   /dev/vg1/lv1   让扩容生效

    至此,linux动态扩容完成!!!

    总结几个步骤:

    • fdisk /dev/sdb #格式化磁盘
    • pvcreate /dev/sdb1 #创建物理卷
    • vgextend 卷组名 /dev/sdb1 #将物理卷加入到卷组中
    • lvextend -l +100%FREE /dev/mapper/centos-root # 扩容lvm
    • xfs_growfs /dev/mapper/centos-root # 使扩容生效

    说明:

    删除逻辑卷lv2命令: lvremove    /dev/vg1/lv2

    如果卷组的空间不足了那就无法继续创建逻辑卷,此时需要添加硬盘然后创建物理卷,然后将物理卷加入到卷组中,例如,当前的卷组vg1的空间为5G左右,现在给卷组加5G空间步骤(添加硬盘—fdisk分区—创建pv—vgextend添加),添加硬盘以及分区省略(上面有),我们从创建PV开始

    第一步:创建PV,   pvcreate   /dev/sdc1

    第二步:将PV加入到卷组vg1中,使用命令vgextend  卷组名 PV

    删除卷组的命令是vgremove   删除物理卷的命令是pvremove

    删除卷组的顺序是:首先卸载逻辑卷—–然后删除卷组上的所有逻辑卷—然后删除卷组

    从卷组vg1中移除物理卷 /dev/sdc1,执行命令 vgreduce  vg1    /dev/sdc1

    执行删除命令后就剩下一个PV了

    上面扩容文件系统大小的时候用的命令是xfs_growfs命令,因为此时的文件系统是xfs,如果用的文件系统是ext2/ext3/ext4,那么此时需要用另一个命令resize2fs来扩容文件系统空间。

    第一步:如果在创建逻辑卷的时候采用的mkfs.ext4的方法来格式化逻辑卷,那么格式化后的文件系统即为ext4,如图:

    执行命令lvextend   -L +5G   /dev/vg1/lv1

    然后执行命令resize2fs   /dev/vg1/lv1

    完成!!!!

    附加:

    逻辑卷快照功能:

    lvcreate -L 120M -s -n SNAP /dev/storage/lv1

    使用-s 参数生成一个快照卷,使用-L 参数指定切割的大小。另外,还需要在命 令后面写上是针对哪个逻辑卷执行的快照操作

    逻辑卷还原:先卸载再还原

    umount /dev/lv1

    lvconvert –merge /dev/storage/SNAP

    如果卷组中的物理卷丢失,那么在通过命令vgdisplay -v查看的时候将会显示unknown,如图:

    此时可以通过命令vgreduce –removemissing centos清除掉丢失的物理卷。

    磁盘如果空间没有了,执行命令会提示:

    Couldn't create temporary archive name

    标签