🌑

Mocha's Blog

目录
  1. 前置条件
  2. 拓展分区
    1. 扩大已有MBR分区(内核版本高于3.6.0)
    2. 扩大已有MBR分区(内核版本低于3.6.0)
    3. 报错解决

拓展vps硬盘

发布时间:2021年7月28日

之前在使用一些云服务商提供的虚拟主机时,经常会碰到默认分配的磁盘空间不足的情况,实际上是因为 VPS 提供的硬盘空间未能完全分配到默认的 /dev/vda1 分区导致,本文章内容就是解决这个问题并以作记录,再次遇到该问题时开箱即用

前置条件

  • 清楚当前 linux kernel 版本,3.6.0版本的内核拓展方式与之前的不同

  • 安装 cloud-utils-growpart

    可以用growpart命令检查当前系统是否已安装growpart扩容工具,若回显为工具使用介绍,则表示已安装,无需重复安装。

  • 内核在 3.6.0 以下时需要额外安装 cloud-utils-growpart

拓展分区

扩大已有MBR分区(内核版本高于3.6.0)

以“CentOS 7.4 64bit”操作系统为例,系统盘“/dev/vda”原有容量40GB,只有一个分区“/dev/vda1”。将系统盘容量扩大至100GB,本示例将新增的60GB划分至已有的MBR分区内“/dev/vda1”内。

  1. 执行以下命令,查看系统盘“/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
  2. 执行以下命令,查看系统盘分区“/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
  3. 执行以下命令,指定系统盘待扩容的分区,通过growpart进行扩容。

    growpart 系统盘 分区编号
    =>
    growpart /dev/vda 1

    回显类似如下信息:

    CHANGED: partition=1 start=2048 old: size=83884032 end=83886080 new: size=209713119,end=209715167
  4. 执行以下命令,扩展磁盘分区文件系统的大小。

    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.
  5. 执行以下命令,查看扩容后系统盘分区“/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

扩大已有MBR分区(内核版本低于3.6.0)

当操作系统内核低于3.6.0时,扩大已有MBR分区需要reboot重启,扩展分区和文件系统才会生效,会中断业务。

以“CentOS 6.5 64bit”操作系统为例,系统盘“/dev/vda”原有容量40GB,只有一个分区“/dev/vda1”。将系统盘容量扩大至100GB,本示例将新增的60GB划分至已有的MBR分区内“/dev/vda1”内。

  1. 执行以下命令,重新生成initramfs文件

    dracut -f
  2. 执行以下命令,查看系统盘“/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
  3. 执行以下命令,查看系统盘分区“/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
  4. 执行以下命令,指定系统盘待扩容的分区,通过growpart进行扩容。

    growpart 系统盘 分区编号
    =>
    growpart /dev/vda 1

    回显类似如下信息:

    CHANGED: partition=1 start=2048 old: size=83884032 end=83886080 new: size=209710462,end=209712510
  5. 重启服务器

  6. 执行以下命令,扩展磁盘分区文件系统的大小。

    resize2fs 磁盘分区
    =>
    resize2fs/dev/vda1

    回显类似如下信息:

    resize2fs 1.41.12 (17-May-2010)
    The filesystem is already 26213807 blocks long.  Nothing to do!
  7. 执行以下命令,查看扩容后系统盘分区“/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

报错解决

  1. growpart 命令 syntax error: operand expected 错误

    该错误由语言设置导致,执行以下命令即可解决 export LANG="en_US.UTF-8"

Powered By Hexo.js Hexo and Minima. Support By Oracle & Docker-Compose.

友情链接: 相随