文档

如何在线扩容ContainerOS系统盘

更新时间:

为了适应不断增长的存储需求,避免磁盘空间不足造成的系统故障,并确保应用安装与数据存储有足够的空间,您需要在系统盘容量告急时及时扩容系统盘容量。本文介绍如何在不停机的前提下,对ContainerOS的系统盘进行在线扩容。

阅读前提示

扩容系统盘前,建议您参见云盘扩容指引了解云盘(包括系统盘和数据盘,本文涉及系统盘)的以下信息:

  • 系统盘的扩容流程:包括扩容系统盘容量以及扩容分区和文件系统。

  • 系统盘的扩容上限。

  • 系统盘扩容过程中产生的费用。

步骤一:扩容云盘容量

您可以参见步骤一:扩容云盘容量,了解扩容注意事项并登录ECS管理控制台配置扩容后的系统盘容量(例如200 GiB)。推荐您在选择在线扩容的扩容方式,扩容后无需重启实例即可生效。

步骤二:扩容分区

  1. 通过云助手下发如下命令,查看节点当前的分区。

    fdisk -l

    输出如下所示。

    NVMe云盘

    Disk /dev/nvme0n1: 150 GiB, 161061273600 bytes, 314572800 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: gpt
    Disk identifier: 00000000-0000-4000-A000-000000000001
    
    Device           Start      End  Sectors  Size Type
    /dev/nvme0n1p1    2048     4095     2048    1M BIOS boot
    /dev/nvme0n1p2    4096   264191   260096  127M EFI System
    /dev/nvme0n1p3  264192  1050623   786432  384M Linux filesystem
    /dev/nvme0n1p4 1050624 19924991 18874368    9G Linux filesystem

    非NVMe云盘

    Disk /dev/vda: 120 GiB, 161061273600 bytes, 314572800 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: gpt
    Disk identifier: 00000000-0000-4000-A000-000000000001
    
    Device           Start      End  Sectors  Size Type
    /dev/vda1    2048     4095     2048    1M BIOS boot
    /dev/vda2    4096   264191   260096  127M EFI System
    /dev/vda3  264192  1050623   786432  384M Linux filesystem
    /dev/vda4 1050624 19924991 18874368    9G Linux filesystem
    说明

    请您根据自身环境中云盘格式判断后续扩容命令。本示例将以NVMe格式的系统盘nvme0n1p4举例。

  2. 通过云助手下发如下命令,扩容指定分区。

    NVMe云盘

    growpart /dev/nvme0n1 4

    非NVMe云盘

    growpart /dev/vda 4

    命令执行后会输出如下类似信息,表明磁盘分区已经扩容成功。

    CHANGED: partition=4 start=1050624 old: size=18874368 end=19924991 new: size=313522143 end=314572766

步骤三:扩容文件系统

  1. 通过云助手下发如下命令,调整分区挂载模式。

    由于ContainerOS中的/sysroot默认是以只读方式挂载的,无法直接扩容文件系统,因此您需要创建一个新的挂载命名空间,并在挂载命名空间前先将/sysroot以可写方式挂载,再扩容文件系统,从而避免对默认空间的挂载方式产生影响。

    NVMe云盘

    unshare --mount -- mount -o remount,rw /dev/nvme0n1p4 /sysroot

    非NVMe云盘

    unshare --mount -- mount -o remount,rw /dev/vda4 /sysroot
  2. 通过云助手下发如下命令,即可在新的挂载命名空间中对文件系统进行扩容。

    NVMe云盘

    unshare --mount -- resize2fs /dev/nvme0n1p4

    非NVMe云盘

    unshare --mount -- resize2fs /dev/vda4

    输出如下类似信息,表明文件系统扩容成功。

    resize2fs 1.46.0 (29-Jan-2020)
    Filesystem at /dev/nvme0n1p4 is mounted on /; on-line resizing required
    old_desc_blocks = 19, new_desc_blocks = 19
    The filesystem on /dev/nvme0n1p4 is now 39452411 (4k) blocks long.
  3. 验证节点系统盘是否扩容成功。

    通过云助手下发如下命令,查看根分区大小。

    df -h

    输出如下所示,表明根分区已扩容到指定大小,节点扩容成功。

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/root       199G  9.1G  163G   5% /sysroot
    devtmpfs        3.8G     0  3.8G   0% /dev
    tmpfs           3.8G     0  3.8G   0% /dev/shm
    tmpfs           3.8G  2.0M  3.8G   1% /run
    tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
    tmpfs           3.8G   16K  3.8G   1% /tmp
    overlay         149G  9.1G  133G   7% /var/opt
    /dev/nvme0n1p3  362M   16M  324M   5% /boot

  • 本页导读