前言
无论是在私有云还是在公有云,生产环境虚拟机分发存储空间一般不会太大,但是随着业务的发展,存储空间往往不够用,这时候就需要扩容存储空间,本文将介绍如何在私有云环境执行Linux系统上扩容存储空间。
准备工作
- 在虚拟化平台选择扩容的磁盘,点击扩容,输入扩容后的大小,点击确定,等待扩容完成。
- 执行’df -Th’检查文件系统类型。
- 登录Linux系统,安装
growpart工具
sudo yum install -y cloud-utils-growpartsudo apt install -y cloud-guest-utils初次在私有云生产环境操作,最好提前备份快照,以免操作失误导致系统崩溃。
操作前检查信息
检查根目录因程序缓存原因,磁盘使用率经常达到80%以上,频繁触发监控程序告警,需要扩容根目录。
[root@localhost ~]# df -ThFilesystem Type Size Used Avail Use% Mounted on/dev/mapper/centos-root xfs 31G 22G 9.7G 69% /devtmpfs devtmpfs 7.8G 0 7.8G 0% /devtmpfs tmpfs 7.8G 0 7.8G 0% /dev/shmtmpfs tmpfs 7.8G 43M 7.7G 1% /runtmpfs tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup/dev/vda1 xfs 1014M 145M 870M 15% /boottmpfs tmpfs 1.6G 0 1.6G 0% /run/user/0/dev/mapper/storage-data xfs 994G 724G 271G 73% /data原本根目录分配为40GB,现增加40GB,总空间为80GB,所以显示还有40GB未分配。
[root@localhost ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsr0 11:0 1 428K 0 romvda 252:0 0 80G 0 disk├─vda1 252:1 0 1G 0 part /boot└─vda2 252:2 0 39G 0 part ├─centos-root 253:0 0 31G 0 lvm / └─centos-swap 253:1 0 8G 0 lvm [SWAP]vdb 252:16 0 1000G 0 disk└─vdb1 252:17 0 994G 0 part └─storage-data 253:2 0 994G 0 lvm /data查看当前LVM物理卷信息
[root@localhost ~]# pvdisplay --- Physical volume --- PV Name /dev/vda2 VG Name centos PV Size <39.00 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 9983 Free PE 0 Allocated PE 9983 PV UUID b10ba6bb-f834-4586-b2ed-d4cd48a380e7
--- Physical volume --- PV Name /dev/vdb1 VG Name storage PV Size <994.00 GiB / not usable 2.98 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 254463 Free PE 0 Allocated PE 254463 PV UUID b2cc8a3b-f303-4aed-9e64-1d7106f8dc2f查看当前LVM卷组信息
[root@localhost ~]# vgdisplay --- Volume group --- VG Name centos System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size <39.00 GiB PE Size 4.00 MiB Total PE 9983 Alloc PE / Size 9983 / <39.00 GiB Free PE / Size 0 / 0 VG UUID 1f9a2057-a09e-4b44-9653-d9a9cdb7bf97
--- Volume group --- VG Name storage System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 6 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size <994.00 GiB PE Size 4.00 MiB Total PE 254463 Alloc PE / Size 254463 / <994.00 GiB Free PE / Size 0 / 0 VG UUID 83fd0dd2-03c7-4eb3-abf7-a8e1c8ab03ef查看LVM逻辑卷信息
[root@localhost ~]# lvdisplay--- Logical volume ---LV Path /dev/centos/swapLV Name swapVG Name centosLV UUID 6add95fe-d525-449d-9b73-9220738be6ffLV Write Access read/writeLV Creation host, time localhost, 2024-12-25 16:23:51 +0800LV Status available# open 2LV Size 8.00 GiBCurrent LE 2048Segments 1Allocation inheritRead ahead sectors auto- currently set to 8192Block device 253:1
--- Logical volume ---LV Path /dev/centos/rootLV Name rootVG Name centosLV UUID abf6ca1d-ceb0-4cec-a2a7-f510b9dce3b9LV Write Access read/writeLV Creation host, time localhost, 2024-12-25 16:23:51 +0800LV Status available# open 1LV Size <31.00 GiBCurrent LE 7935Segments 1Allocation inheritRead ahead sectors auto- currently set to 8192Block device 253:0
--- Logical volume ---LV Path /dev/storage/dataLV Name dataVG Name storageLV UUID fe6f9801-c930-4aec-9fd0-39e7b39ccfafLV Write Access read/writeLV Creation host, time localhost.localdomain, 2025-11-03 14:09:57 +0800LV Status available# open 1LV Size <994.00 GiBCurrent LE 254463Segments 1Allocation inheritRead ahead sectors auto- currently set to 256Block device 253:2执行扩容操作
扩容指定块设备大小
[root@localhost ~]# growpart /dev/vda 2CHANGED: partition=2 start=2099200 old: size=81786880 end=83886080 new: size=165672927 end=167772127[root@localhost ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsr0 11:0 1 428K 0 romvda 252:0 0 80G 0 disk├─vda1 252:1 0 1G 0 part /boot└─vda2 252:2 0 79G 0 part ├─centos-root 253:0 0 31G 0 lvm / └─centos-swap 253:1 0 8G 0 lvm [SWAP]vdb 252:16 0 1000G 0 disk└─vdb1 252:17 0 994G 0 part └─storage-data 253:2 0 994G 0 lvm /data扩容LVM物理卷
[root@localhost ~]# pvresize /dev/vda2 Physical volume "/dev/vda2" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized[root@localhost ~]# pvdisplay --- Physical volume --- PV Name /dev/vda2 VG Name centos PV Size <79.00 GiB / not usable 1.98 MiB Allocatable yes PE Size 4.00 MiB Total PE 20223 Free PE 10240 Allocated PE 9983 PV UUID b10ba6bb-f834-4586-b2ed-d4cd48a380e7
--- Physical volume --- PV Name /dev/vdb1 VG Name storage PV Size <994.00 GiB / not usable 2.98 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 254463 Free PE 0 Allocated PE 254463 PV UUID b2cc8a3b-f303-4aed-9e64-1d7106f8dc2f扩容LVM逻辑卷
[root@localhost ~]# lvextend -l +100%FREE /dev/centos/root Size of logical volume centos/root changed from <31.00 GiB (7935 extents) to <71.00 GiB (18175 extents). Logical volume centos/root successfully resized[root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/centos/swap LV Name swap VG Name centos LV UUID 6add95fe-d525-449d-9b73-9220738be6ff LV Write Access read/write LV Creation host, time localhost, 2024-12-25 16:23:51 +0800 LV Status available # open 2 LV Size 8.00 GiB Current LE 2048 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1
--- Logical volume --- LV Path /dev/centos/root LV Name root VG Name centos LV UUID abf6ca1d-ceb0-4cec-a2a7-f510b9dce3b9 LV Write Access read/write LV Creation host, time localhost, 2024-12-25 16:23:51 +0800 LV Status available # open 1 LV Size <71.00 GiB Current LE 18175 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
--- Logical volume --- LV Path /dev/storage/data LV Name data VG Name storage LV UUID fe6f9801-c930-4aec-9fd0-39e7b39ccfaf LV Write Access read/write LV Creation host, time localhost.localdomain, 2025-11-03 14:09:57 +0800 LV Status available # open 1 LV Size <994.00 GiB Current LE 254463 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2以上完成了LVM物理卷和逻辑卷的扩容,接下来需要扩容文件系统,不同的文件挂载类型不同执行的命令操作也不同,请参考如下命令。
[root@localhost ~]# xfs_growfs /dev/mapper/centos-rootmeta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=2031360 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0data = bsize=4096 blocks=8125440, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=1log =internal bsize=4096 blocks=3967, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0data blocks changed from 8125440 to 18611200sudo resize2fs /dev/mapper/centos-root查看最终扩容结果
[root@localhost ~]# df -ThFilesystem Type Size Used Avail Use% Mounted on/dev/mapper/centos-root xfs 71G 17G 55G 24% /devtmpfs devtmpfs 7.8G 0 7.8G 0% /devtmpfs tmpfs 7.8G 0 7.8G 0% /dev/shmtmpfs tmpfs 7.8G 43M 7.7G 1% /runtmpfs tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup/dev/vda1 xfs 1014M 145M 870M 15% /boottmpfs tmpfs 1.6G 0 1.6G 0% /run/user/0/dev/mapper/storage-data xfs 994G 724G 271G 73% /data