You need to enable JavaScript to run this app.
导航

扩容云盘(Linux)

最近更新时间2024.01.18 15:09:52

首次发布时间2021.07.09 13:31:09

操作说明

现有一台Linux云服务器ECS-1,其系统盘为40 GiB,数据盘为70 GiB,已完成格式化分区和挂载文件系统操作。
扩容系统盘和数据盘的操作相似,本文档以扩容数据盘为例,指导您如何扩容云盘。

注意事项

  • 云盘扩容后会进入“扩容中”状态,待该状态结束即扩容生效。
  • 如果您的操作系统为Centos 6.9,在首次创建并自动扩容后必须要重启系统,否则会导致扩容失效。
  • 如果磁盘中有多个分区,仅最后一个分区能扩容到云盘增加的容量,前几个分区只能扩容到预留的磁柱,如没有预留,将无法扩容。
  • 为了避免因误操作等原因造成数据损坏或丢失,强烈建议您提前做好备份工作。

步骤一:在控制台扩容云盘

若在云服务器实例“已停止”状态下扩容云盘,请在重启云服务器实例后执行mount命令将分区重新挂载到文件系统。

您可以通过以下两种方式在控制台扩容云盘。

在实例列表扩容

  1. 登录云服务器控制台

  2. 在顶部导航栏,选择目标实例所属的项目和地域。

  3. 在左侧导航树中单击“实例”。

  4. 在“实例”页面,单击目标实例的名称。

  5. 单击“云盘”页签。

  6. 在目标云盘右侧“操作”列下单击“...>扩容”。

  7. 在“扩容云盘”页面,确认当前配置信息,在“新容量”输入框输入70 GiB。

  8. 单击“提交订单”。
    扩容完成后,单击“去控制台”,在“扩容云盘”页面,单击“下一步”,单击“返回云盘列表”,在云盘列表页面单击目标云盘的名称,即可在“概览”页签下,查看扩容后的云盘容量。

在云盘列表扩容

  1. 登录云服务器控制台

  2. 在顶部导航栏,选择目标云盘所属的项目和地域。

  3. 在左侧导航树中单击“云盘”。

  4. 在云盘列表页面,在目标云盘“操作”列单击“... > 扩容”。

  5. 在“扩容”页面,确认当前配置信息,在新容量输入框输入70 GiB。

  6. 单击“提交订单”。
    扩容完成后,单击“去控制台”,在“扩容云盘”页面,单击“下一步”,单击“返回云盘列表”,在云盘列表页面单击目标云盘的名称,即可在“概览”面板,查看扩容后的云盘容量。

步骤二:查看分区和文件系统情况

  1. 登录Linux实例

  2. 以root用户执行以下命令,查看系统盘和数据盘情况。

    fdisk -l
    

    回显类似如下信息。表示当前云服务器有两块磁盘:“/dev/vda” 和“/dev/vdb”。

    • /dev/vda是系统盘,存在两个分区/dev/vda1/dev/vda2。其中,/dev/vda1用于安装操作系统驱动程序等内容,无法扩容。
    • /dev/vdb是数据盘,存在两个分区/dev/vdb1/dev/vdb2
    • Disklabel type取值为dos,表示为MBR分区。若Disklabel type取值为gpt,则表示为GPT分区。
      alt
  3. 执行以下命令,查看已有分区的文件系统类型。

    df -Th
    

    回显类似如下信息。其中,Mounted on表示文件系统的挂载点。

alt

步骤三:扩容分区和文件系统

  1. 在步骤二的回显信息中,若您的分区类型为GPT,请首先执行yum install gdisk -y命令,再执行以下步骤。若您的分区类型为MBR,请忽略本步骤,直接执行以下步骤。

  2. 根据操作系统的不同,执行以下命令安装growpart工具。

    • CentOS 7及以上版本:

      yum install -y cloud-utils-growpart
      
    • Debian 9及以上版本、Ubuntu14及以上版本:

      1. 更新apt软件源。

        apt-get update
        
      2. 安装cloud-guest-utils工具。

        apt-get install -y cloud-guest-utils
        
  3. 执行以下命令扩容vdb2。

    说明

    vdb1 和 vdb2 之间没有预留磁柱,本次只能扩容最后一个分区,即vdb2。

    LC_ALL=en_US.UTF-8 growpart /dev/vdb 2
    
    • LC_ALL=en_US.UTF-8:设置字符编码为UTF-8。
    • /dev/vdb表示云盘名称。
    • 2表示分区号。
    • /dev/vdb2之间需要有空格。

    回显信息如下,表示扩容分区成功。
    alt

  4. 根据文件系统的不同,执行以下命令扩容文件系统。本例为ext4文件系统。

    • 扩容ext*(例如ext4)文件系统,/dev/vdb2表示需要扩容的分区:

      resize2fs /dev/vdb2
      
    • 扩容xfs文件系统,/media/vdc表示文件系统的挂载点:

      xfs_growfs /media/vdc
      

    回显信息如下,表示扩容文件系统成功。
    alt

  5. 执行以下命令,查看扩容结果。

    df -Th
    

    回显信息如下,表示vdb2扩容成功。
    alt

常见问题

  • 执行 growpart 命令扩容分区报错 failed [pt_update:1]pt_update /dev/vdb 5 怎么办?
    alt
    针对以上报错,您需要执行 partprobe 命令,重读系统中全部设备的分区表信息,然后再执行 growpart 命令扩容分区。

  • 分区扩容后,执行 df -Th 命令无法看到云盘扩容后的新容量?

    如果操作系统内核版本小于 3.6.0,例如 CentOS 6、Debian 7 和 SUSE Linux Enterprise Server 11 SP4 等发行版,则分区扩容的操作需要重启系统后才会生效。
    您需要执行 uname -a 命令检查系统内核版本是否小于 3.6.0,如果内核版本小于 3.6.0,执行 reboot 命令重启系统。

  • 在 CentOS 7.X 系统中扩容系统后,使用 fdisk -l 命令查看磁盘分区,发现磁盘分区由原来的 2 个变成 1 个?
    扩容系统盘默认使用 GTP 进行分区,由于 fdisk 对 GPT 存在兼容性问题,导致显示异常。
    您需要执行 parted <系统盘名称> print 命令,例如 parted /dev/vda print,然后根据提示两次输入 Fix 命令,即可修复该问题。
    alt