Loading
0

Linux系统通过LVM扩容逻辑卷方法

技术小学生微信公众号
腾讯云服务器大促销。
华为服务器
前言:之前教程讲过如何将磁盘创建LVM逻辑卷分区方法,本文介绍了linux如何通过LVM(Logical Volume Manager)扩容一个逻辑卷LV(Logical Volume)的详细方法。
提醒:数据无价,操作前,务必做好备份,以免误操作数据丢失。
创建LVM逻辑卷分区方法:https://blog.tag.gg/showinfo-3-36251-0.html
1、使用以下命令查看ECS实例中已经创建的逻辑卷LV信息

lvdisplay

查询结果如下,表示已经创建了/dev/lvm_01/lv01逻辑卷,拥有19 GiB空间

[root@blog.tag.gg~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/lvm_01/lv01
  LV Name                lv01
  VG Name                lvm_01
  LV UUID                Fli6Tf-uv01-6l9Y-CzNc-mgzu-y2Zr-35QotA
  LV Write Access        read/write
  LV Creation host, time blog.tag.gg, 2022-12-04 13:56:33 +0800
  LV Status              available
  # open                 0
  LV Size                19.00 GiB
  Current LE             4864
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           252:0

2、使用以下命令扩容物理卷PV(Physical Volume)。
命令格式:

pvresize <物理卷名称>

以下示例为扩容物理卷(/dev/vdc),您需要根据实际情况修改物理卷名称

pvresize /dev/vdc

执行结果如下:

[root@blog.tag.gg~]# pvresize /dev/vdc
  Physical volume "/dev/vdc" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

使用以下命令查看物理卷(PV)使用情况

pvs

显示如下:

[root@blog.tag.gg~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/vdc   lvm_01 lvm2 a--  <35.00g <16.00g

注意:如果之前对每个磁盘单独做了分区后再创建的逻辑卷则扩容是有区别的,例如之前分了vdb1 、vdc1等,用这个方法是无法扩容成功,请参考最后说明处理。如果没有则忽略这个情况。
3、使用以下命令扩容逻辑卷。

命令格式:

lvextend [-L <逻辑卷大小>] <逻辑卷名称>

以下示例为扩容逻辑卷容量。

lvextend -L +15G /dev/lvm_01/lv01

注意:15G是指这块磁盘新增加的容量,比如原来我磁盘是20G,我将磁盘扩容到了35G,所以35-20=15G
本示例中变量说明如下,您需要根据实际情况修改。
+15G:增减容量,卷组VG(Volume Group)必须有剩余容量时才可以执行扩容逻辑卷操作。
/dev/lvm_01/lv01:逻辑卷名称。
执行结果如下:

[root@blog.tag.gg~]# lvextend -L +15G /dev/lvm_01/lv01
  Size of logical volume lvm_01/lv01 changed from 19.00 GiB (4864 extents) to 34.00 GiB (8704 extents).
  Logical volume lvm_01/lv01 successfully resized.

4、使用以下命令扩容逻辑卷文件系统
您需要根据逻辑卷的文件系统类型执行不同的扩容命令,以下以ext4和xfs文件系统为例:
说明 如果您不清楚逻辑卷的文件系统类型,可以通过df -Th命令查询。
如果是ext4文件系统,使用以下命令扩容。

resize2fs /dev/lvm_01/lv01

如果是xfs文件系统,使用以下命令扩容。

xfs_growfs /dev/lvm_01/lv01

执行结果如下:

[root@blog.tag.gg~]# resize2fs /dev/lvm_01/lv01
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/lvm_01/lv01 is mounted on /media/lv01; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 5
The filesystem on /dev/lvm_01/lv01 is now 8912896 blocks long.

5、扩容完成后执行命令查看扩容后的信息。

df -Th

[root@blog.tag.gg~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 461M     0  461M   0% /dev
tmpfs                    471M     0  471M   0% /dev/shm
tmpfs                    471M  564K  471M   1% /run
tmpfs                    471M     0  471M   0% /sys/fs/cgroup
/dev/vda1                 40G  2.1G   36G   6% /
tmpfs                     95M     0   95M   0% /run/user/0
/dev/mapper/lvm_01-lv01   34G   48M   32G   1% /media/lv01


如果之前单独对每个磁盘做了分区,比如分别对磁盘vdb、vdc、vdd做了分区为vdb1 、vdc1、vdd1.则在扩容时参考如下处理
查看是否之前对磁盘做了分区。(磁盘后面有个数字则表示之前单独有做分区)

[root@blog.tag.gg~]# pvs
  PV         VG     Fmt  Attr PSize   PFree   
  /dev/vdb1  lvm_01 lvm2 a--  <25.00g       0
  /dev/vdc1  lvm_01 lvm2 a--  <30.00g       0
  /dev/vdd1  lvm_01 lvm2 a--  <55.00g       0
  /dev/vde1  lvm_01 lvm2 a--  <20.00g 1008.00m

此时执行命令 pvresize /dev/vde1 提示成功,但实际上执行命令 pvs 无法看到vde1 新增加的容量,例如:<20.00g 1008.00m
这种情况,如果我们对 /dev/vde1磁盘做了扩容,从20G扩容到了60G,则参考如下处理。
1、执行如下命令查看原来磁盘分区

[root@blog.tag.gg~]# fdisk -l

Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0002b49c

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    83886046    41941999+  83  Linux
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/vde: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/vde1               1    41943039    20971519+  ee  GPT

Disk /dev/mapper/lvm_01-lv01: 138.5 GB, 138512695296 bytes, 270532608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

vde1是gpt分区则执行如下命令(显示gpt就是gpt分区)

type growpart || yum install -y cloud-utils-growpart
type sgdisk || yum install -y gdisk
LC_ALL=en_US.UTF-8 growpart /dev/vde 1

显示如下:显示 CHANGED 则说明成功

[root@blog.tag.gg~]# LC_ALL=en_US.UTF-8 growpart /dev/vde 1
CHANGED: partition=1 start=2048 old: size=62910464 end=62912512 new: size=146798558 end=146800606

如果vde1 是mbr分区,执行如下命令:(显示dos或linux就是mbr分区)

type growpart || yum install -y cloud-utils-growpart
LC_ALL=en_US.UTF-8 growpart /dev/vde 1

2、此时可以执行如下命令扩容逻辑卷
pvresize /dev/vde1
3、此时执行如下命令可以看到vde1分区可以识别到新增加的40G了,如下。

[root@blog.tag.gg~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/vdb1  lvm_01 lvm2 a--  <25.00g     0
  /dev/vdc1  lvm_01 lvm2 a--  <30.00g     0
  /dev/vdd1  lvm_01 lvm2 a--  <55.00g     0
  /dev/vde1  lvm_01 lvm2 a--  <60.00g 40.98g

4、执行如下命令增加容量

lvextend -L +40G /dev/lvm_01/lv01

显示如下成功:

[root@blog.tag.gg~]#     lvextend -L +40G /dev/lvm_01/lv01
  Size of logical volume lvm_01/lv01 changed from 129.00 GiB (33024 extents) to 169.00 GiB (43264 extents).
  Logical volume lvm_01/lv01 successfully resized.

5、执行如下命令扩容

resize2fs /dev/lvm_01/lv01

显示如下成功。

[root@blog.tag.gg~]#     resize2fs /dev/lvm_01/lv01
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/lvm_01/lv01 is mounted on /mnt; on-line resizing required
old_desc_blocks = 17, new_desc_blocks = 22
The filesystem on /dev/lvm_01/lv01 is now 44302336 blocks long.

此时,执行命令df -Th可以看到成功了。

[root@blog.tag.gg~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  461M     0  461M   0% /dev
tmpfs                   tmpfs     471M     0  471M   0% /dev/shm
tmpfs                   tmpfs     471M  568K  471M   1% /run
tmpfs                   tmpfs     471M     0  471M   0% /sys/fs/cgroup
/dev/vda1               ext4       40G  2.3G   36G   7% /
tmpfs                   tmpfs      95M     0   95M   0% /run/user/0
/dev/mapper/lvm_01-lv01 ext4      167G   60M  159G   1% /mnt


题外话:
自己本地本地镜像导入到阿里云ECS后发现容量不对,原因是没有扩容。但本地系统也是逻辑卷,应该怎么操作呢,可以参考如下
现象:本地镜像是20G的磁盘容量,ECS是40G容量,导入到ECS后发现df命令只能看到20G,而不是40G。
原因:剩下的容量没扩容,但查看是逻辑分区,应该怎么扩容,可参考如下。
看下现在默认显示:

右上得知,确定是没扩容导致容量不一致,并且是逻辑卷,mbr分区格式,且是xfs文件系统。
扩容步骤:
执行命令 pvs如下,可以看到可增加的容量为0

[root@blog-tag-gg ~]# pvs
  PV         VG  Fmt  Attr PSize   PFree
  /dev/vda2  uos lvm2 a--  <19.00g    0

执行如下命令查看卷名:

lvdisplay

显示如下:

[root@blog-tag-gg ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/uos/swap
  LV Name                swap
  VG Name                uos
  LV UUID                J91uIC-mq9o-sWMd-3jKY-b3be-GOUI-KgVvCM
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2023-12-03 15:39:59 +0800
  LV Status              available
  # open                 2
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1
   
  --- Logical volume ---
  LV Path                /dev/uos/root
  LV Name                root
  VG Name                uos
  LV UUID                pfDJbq-4Qux-xNWC-OF0j-6rt8-GQcv-tFJW6R
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2023-12-03 15:39:59 +0800
  LV Status              available
  # open                 1
  LV Size                <37.00 GiB
  Current LE             9471
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0


1、截图看系统盘本身是有分区为vda1和vda2,vda2是系统挂在分区。则需要先针对vda2扩容
安装扩容命令:

type growpart || yum install -y cloud-utils-growpart
LC_ALL=en_US.UTF-8 growpart /dev/vda 2

显示如下:

[root@blog-tag-gg ~]# LC_ALL=en_US.UTF-8 growpart /dev/vda 2
CHANGED: partition=2 start=2099200 old: size=39843840 end=41943040 new: size=81786847 end=83886047

再执行命令扩容物理卷:

pvresize /dev/vda2

执行如下命令增加容量:

lvextend -L +20G /dev/uos/root

显示:Logical volume uos/root successfully resized. 则表示成功。
此时执行命令 pvs 可以看到能识别到增加的容量。

[root@blog.tag.gg~]# pvs
  PV         VG  Fmt  Attr PSize   PFree
  /dev/vda2  uos lvm2 a--  <39.00g 20.00g

扩容文件系统:

xfs_growfs  /dev/uos/root


再执行命令 df -Th 看容量增加到了。


 
技术小学生微信公众号
华为服务器
腾讯云服务器大促销。

声明:站长码字很辛苦啊,转载时请保留本声明及附带文章链接:https://blog.tag.gg/showinfo-3-36252-0.html
亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?
上一篇:Linux系统创建LVM逻辑卷分区方法
下一篇:Kubernetes/k8s入门教程及常见问题知识总结-持续更新