发布时间:2021年7月28日
之前在使用一些云服务商提供的虚拟主机时,经常会碰到默认分配的磁盘空间不足的情况,实际上是因为 VPS 提供的硬盘空间未能完全分配到默认的 /dev/vda1 分区导致,本文章内容就是解决这个问题并以作记录,再次遇到该问题时开箱即用
清楚当前 linux kernel 版本,3.6.0版本的内核拓展方式与之前的不同
安装 cloud-utils-growpart
可以用growpart命令检查当前系统是否已安装growpart扩容工具,若回显为工具使用介绍,则表示已安装,无需重复安装。
内核在 3.6.0 以下时需要额外安装 cloud-utils-growpart
以“CentOS 7.4 64bit”操作系统为例,系统盘“/dev/vda”原有容量40GB,只有一个分区“/dev/vda1”。将系统盘容量扩大至100GB,本示例将新增的60GB划分至已有的MBR分区内“/dev/vda1”内。
执行以下命令,查看系统盘“/dev/vda”的总容量。
fdisk -l
回显类似如下信息:
Disk /dev/vda: 107.4 GB, 107374182400 bytes, 209715200 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
Disklabel type: dos
Disk identifier: 0x18d59027
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 83886079 41942016 40G 83 Linux
执行以下命令,查看系统盘分区“/dev/vda1”的容量。
df -TH
回显类似如下信息:
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 957M 0 957M 0% /dev
tmpfs tmpfs 195M 20M 175M 11% /run
/dev/vda1 ext4 43G 4.3G 38.7G 10% /
tmpfs tmpfs 974M 25k 974M 1% /dev/shm
tmpfs tmpfs 5.3M 0 5.3M 0% /run/lock
tmpfs tmpfs 974M 0 974M 0% /sys/fs/cgroup
tmpfs tmpfs 195M 0 195M 0% /run/user/0
执行以下命令,指定系统盘待扩容的分区,通过growpart进行扩容。
growpart 系统盘 分区编号
=>
growpart /dev/vda 1
回显类似如下信息:
CHANGED: partition=1 start=2048 old: size=83884032 end=83886080 new: size=209713119,end=209715167
执行以下命令,扩展磁盘分区文件系统的大小。
resize2fs磁盘分区
=>
resize2fs /dev/vda1
回显类似如下信息:
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 5, new_desc_blocks = 13
The filesystem on /dev/vda1 is now 26214139 blocks long.
执行以下命令,查看扩容后系统盘分区“/dev/vda1”的容量。
df -TH
回显类似如下信息:
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 106G 4.3G 101.7G 4% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.0M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs tmpfs 398M 0 398M 0% /run/user/0
当操作系统内核低于3.6.0时,扩大已有MBR分区需要reboot重启,扩展分区和文件系统才会生效,会中断业务。
以“CentOS 6.5 64bit”操作系统为例,系统盘“/dev/vda”原有容量40GB,只有一个分区“/dev/vda1”。将系统盘容量扩大至100GB,本示例将新增的60GB划分至已有的MBR分区内“/dev/vda1”内。
执行以下命令,重新生成initramfs文件
dracut -f
执行以下命令,查看系统盘“/dev/vda”的总容量。
fdisk -l
回显类似如下信息:
Disk /dev/vda: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004e0be
Device Boot Start End Blocks Id System
/dev/vda1 * 1 5222 41942016 83 Linux
执行以下命令,查看系统盘分区“/dev/vda1”的容量。
df -TH
回显类似如下信息:
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 43G 1.7G 39G 5% /
tmpfs tmpfs 2.1G 0 2.1G 0% /dev/shm
执行以下命令,指定系统盘待扩容的分区,通过growpart进行扩容。
growpart 系统盘 分区编号
=>
growpart /dev/vda 1
回显类似如下信息:
CHANGED: partition=1 start=2048 old: size=83884032 end=83886080 new: size=209710462,end=209712510
重启服务器
执行以下命令,扩展磁盘分区文件系统的大小。
resize2fs 磁盘分区
=>
resize2fs/dev/vda1
回显类似如下信息:
resize2fs 1.41.12 (17-May-2010)
The filesystem is already 26213807 blocks long. Nothing to do!
执行以下命令,查看扩容后系统盘分区“/dev/vda1”的容量。
df -TH
回显类似如下信息:
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 106G 1.7G 99G 2% /
tmpfs tmpfs 2.1G 0 2.1G 0% /dev/shm
growpart
命令 syntax error: operand expected
错误
该错误由语言设置导致,执行以下命令即可解决 export LANG="en_US.UTF-8"