Linux LVM分区动态扩容

Linux LVM分区动态扩容

说明

本教程仅针对LVM分区扩容,普通分区无法做到LVM那样随意扩容,并且不在本教程的范围内

扩容方式有两种:

  1. 直接在原有磁盘上加空间
  2. 原有磁盘不动,新挂载一块磁盘

后面都会详细介绍,本教程的操作均无需重启服务器且不影响业务

环境

Centos8 Stream

lvm2工具(如果命令不存在的话执行yum install lvm2安装即可)

教程

在增加或扩容物理磁盘之后,Linux有可能会无法立即识别新的空间或磁盘,此时最简单的办法为重启,如果不想重启或者无法重启,可以执行以下指令立即刷新磁盘信息

echo '1' > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan 

方式一:直接在原有磁盘上加空间

说明

如下图所示,原来的硬盘1空间为20G,现直接改为25G,扩容5G

image-20231128181322488

附上一张一开始系统里磁盘信息的截图

image-20231128181823607

扩容LVM分区

进入分区指令
parted
查看所有空间使用情况
print all free

像这种一个磁盘上直接加空间,会在末尾多出一段Free Space的,然后我们需要确认Free Space的大小(Size)是否和我们加的空间差不多,如果确认无误之后就可以进入下一步操作了

image-20231128190111590

增加需要扩容的LVM分区大小
# resizepart [编号(Number)] [容量]
resizepart 2 100%

我这边就将编号为2的LVM分区,将空余容量都分配给它

查看当前的分区状态
print

此时可以看到,空闲的容量已经被分配给了Number为2的分区,增加了5G

image-20231128190149672

退出
quit

扩容lvm物理卷

扩容
# pvresize -v [LVM物理卷路径(pvdisplay命令展示的PV Name)]
pvresize -v /dev/sda2

出现如下图所示的的Resizing physical volume [xxx] from [xxx] to [xxx] extents即为扩容成功

image-20231128190355106

验证
vgdisplay

可以看到LVM卷组的空闲容量已经多出来了5G

image-20231128190611621

扩容LVM逻辑卷

查看需要扩容的逻辑卷
lvdisplay

取LV Path作为下一步的逻辑卷路径,下图中第一个为swap交换分区,第二个为我们需要扩容的root分区

其实,取df -h得到的文件系统路径也是可以的,比如我这里第二个逻辑卷df -h 拿到的就是/dev/mapper/cs-root,不过还是推荐前面一种方式来获取

image-20231128191118351

扩容逻辑卷
# lvextend -l [需要扩容的空间大小] [逻辑卷路径]
# 这里我们将所有空余空间都分配给/dev/cs/root这个逻辑卷
lvextend -l +100%FREE /dev/cs/root

出现successfully字样即为扩容成功

image-20231128190809639

刷新文件系统大小

查看文件系统类型
df -hT

找到你刚刚扩容的逻辑卷 并查看第二列的类型

image-20231128192300253

我这边为xfs文件系统,也有ext4的,两种文件系统刷新指令不一样,这里都给出

  1. xfs

    # xfs_growfs [逻辑卷路径]
    xfs_growfs /dev/cs/root
  2. ext4

    # resize2fs [逻辑卷路径]
    resize2fs /dev/cs/root

出现如下图data blocks changed from [xxx] to [xxx]即为扩容成功

image-20231128191959520

确认扩容结果

输入df -h确认扩容结果,可以看到根目录已经多了5个G

image-20231128192315746

方式二:原有磁盘不动,新挂载一块磁盘

说明

如下图所示,我们往虚拟机中增加了一块5GB的硬盘,原来的25G硬盘不变,这种方式一般是物理机扩容最常见的方式,因为物理机往往都是再插一块硬盘这样的扩容方式

image-20231128202919028

下图是挂载之后的截图,可以看到我们什么操作都没有做,系统就已经识别了这块5G的新磁盘

image-20231128203315632

查询新挂载的磁盘信息

fdisk -l
lsblk

image-20231128203719090

通过上面两个命令可以看到,新挂载的磁盘大小为5G,并且磁盘路径为/dev/sdb

将新盘标记为物理卷

# pvcreate [磁盘路径]
pvcreate /dev/sdb

image-20231128204047411

此时/dev/sdb已经成为了物理卷

添加新物理卷到需要扩容的LVM卷组

查看LVM卷组
vgdisplay

拿到需要扩容的VG Name卷组名称

image-20231128204221542

添加物理卷至卷组
# vgextend [卷组名称] [物理卷路径]
vgextend cs /dev/sdb

image-20231128204458673

再次执行vgdisplay可以看到LVM卷组的空闲容量已经多了5G

image-20231128204539423

扩容LVM逻辑卷

查看需要扩容的逻辑卷
lvdisplay

取LV Path作为下一步的逻辑卷路径,下图中第一个为swap交换分区,第二个为我们需要扩容的root根目录分区

image-20231128204826090

扩容逻辑卷
# lvextend -l [需要扩容的空间大小] [逻辑卷路径]
# 这里我们将所有空余空间都分配给/dev/cs/root这个逻辑卷
lvextend -l +100%FREE /dev/cs/root

image-20231128204916153

刷新文件系统大小

查看文件系统类型
df -hT

找到你刚刚扩容的逻辑卷 并查看第二列的类型

image-20231128205017876

我这边为xfs文件系统,也有ext4的,两种文件系统刷新指令不一样,这里都给出

  1. xfs

    # xfs_growfs [逻辑卷路径]
    xfs_growfs /dev/cs/root
  2. ext4

    # resize2fs [逻辑卷路径]
    resize2fs /dev/cs/root

出现如下图data blocks changed from [xxx] to [xxx]即为扩容成功

image-20231128205044855

确认扩容结果

输入df -h确认扩容结果,可以看到根目录已经多了5个G

image-20231128205105400

附录 指令大全

df -hT 查看文件系统类型、容量、挂载点等,也是日常查看磁盘信息最常用的一个命令

fdisk -l 查看磁盘分区表

lsblk 查看设备挂载点信息

lvscan 扫描系统中存在的所有的LVM逻辑卷

vgdisplay 查看物理卷组信息

pvdisplay 查看物理卷信息

pvcreate [磁盘路径] 将磁盘标记为物理卷

pvresize -v [LVM物理卷路径] 扩容LVM物理卷

vgextend [卷组名称] [物理卷路径] 向LVM卷组添加物理卷

xfs_growfs [逻辑卷路径] 刷新xfs分区

resize2fs [逻辑卷路径] 刷新ext4分区

parted 进入分区指令(更多用法自行百度)

评论区
头像
文章目录