You need to enable JavaScript to run this app.
导航
扩容分区和文件系统(Linux)
最近更新时间:2023.07.07 20:08:27首次发布时间:2023.02.03 15:17:21

本文介绍如何扩容Linux实例云盘的分区和文件系统。当您通过控制台完成云盘扩容后,分区和文件系统不会自动扩容。因此,您需要登录边缘实例扩容分区和文件系统。

背景信息

下表列出了本文示例中使用到的资源及其配置。

资源

描述

边缘实例的镜像

CentOS 7.3 64位。

系统盘

系统盘为/dev/vda,使用MBR分区和ext4文件系统。系统盘由40GB扩容到70GB。

数据盘

第一块数据盘为/dev/vdb,使用MBR分区和ext4文件系统。该数据盘由40GB扩容到70GB。

第二块数据盘为/dev/vdc,使用GPT分区和xfs文件系统。该数据盘由40GB扩容到70GB。

本文所述操作适用于以下场景:

  • Linux实例的云盘已分区,需要将扩容的容量划分至已有分区:需执行扩容分区和文件系统。操作时,请参考步骤一 ~ 步骤三。
  • Linux实例的云盘未分区(裸设备):无需扩容分区。操作时,无需执行步骤二,请直接参考步骤一和步骤三。

云盘容量说明
通过控制台扩容的云盘容量采用的是1000进位。操作系统中显示的云盘容量采用的是1024进位。因此,数字显示上会存在差异。例如,如果您在控制台上为云盘扩容了30GB的容量,操作系统中显示的扩容容量约为28GiB。

前提条件

已通过控制台扩容了云盘容量。具体操作,请参见扩容云盘容量

注意事项

如果您在扩容云盘容量时未备份数据,强烈建议您在扩容分区和文件系统前备份数据。您可以通过创建镜像方式或其他方式备份数据。创建镜像的具体操作,请参考使用边缘实例创建镜像

操作步骤

步骤一:查看分区和文件系统信息

基于不同的分区和文件系统类型,扩容操作有所不同。因此,在您开始扩容分区和文件系统前,需要先登录边缘实例查看分区和文件系统的类型。

  1. 登录边缘实例。通过VNC登录实例的操作请参见通过VNC登录实例

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

    fdisk -l
    

    命令返回结果如下图所示。
    图片
    该示例使用系统盘/dev/vda和数据盘/dev/vdb、/dev/vdc进行说明。

    云盘

    分区

    分区形式

    系统盘/dev/vda

    /dev/vda1

    Disk label type字段的值为dos,表示系统盘/dev/vda的分区形式为MBR。

    数据盘/dev/vdb

    /dev/vdb1

    Disk label type字段的值为dos,表示数据盘/dev/vdb的分区形式为MBR。

    数据盘/dev/vdc

    /dev/vdc1

    Disk label type字段的值为gpt,表示数据盘/dev/vdc的分区形式为GPT。

    说明

    不同操作系统的分区形式显示略有不同。如果没有Disk label type字段,可通过System字段判断分区形式。System值为Linux时,表示MBR分区。System值为GPT时,表示GPT分区。

  3. 运行以下命令,查看已有分区的文件系统类型。

    df -Th
    

    命令返回结果如下图所示。 Type 表示文件系统的类型。 Mounted on 表示文件系统的挂载点。
    从命令返回结果可以看出,分区和文件系统的容量并未扩容。
    图片

    说明

    如果Filesystem的取值中不带数字后缀(例如/dev/vdd),则说明该磁盘未分区(裸设备)。这种情况下,无需扩容分区,请直接执行步骤三:扩容文件系统

步骤二:扩容分区

以下内容介绍如何扩容分区。

说明

该部分的分区名称为示例名称。请按照您的实际情况进行修改。

  1. 运行以下命令安装工具。

    • CentOS 6及以上版本

      • 安装growpart工具。

        yum install -y cloud-utils-growpart
        
      • (可选)安装gdisk工具。根据步骤一的命令返回结果,如果您的分区形式为GPT,还需运行以下命令安装gdisk工具。

        yum install -y gdisk
        
    • Debian 8及以上版本、Ubuntu14及以上版本

      • 更新apt软件源。

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

        apt-get install -y cloud-guest-utils
        
      • (可选)安装gdisk工具。根据步骤一的命令返回结果,如果您的分区形式为GPT,还需运行以下命令安装gdisk工具。

        apt-get install -y gdisk
        
  2. 运行以下命令扩容云盘分区。

    1. 扩容系统盘分区。

      LC_ALL=en_US.UTF-8 growpart /dev/vda 1
      
    2. 扩容数据盘分区/dev/vdb 1。

      LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
      
    3. 扩容数据盘分区/dev/vdc 1。

      LC_ALL=en_US.UTF-8 growpart /dev/vdc 1
      

    其中, LC_ALL=en_US.UTF-8是环境变量设置。该设置是为了兼容中文操作系统的字符编码。

    注意

    • 分区编号前需要添加空格。例如,扩容分区/dev/vda1时,需执行命令 growpart /dev/vda 1
    • 如果单块云盘有多个连续分区,扩容时只需要扩容最后一个分区即可。
      示例:数据盘/dev/vdb有三个分区/dev/vdb1、/dev/vdb2和/dev/vdb3。此时,只需运行 growpart /dev/vdb 3 ,即可完成数据盘 /dev/vdb的分区扩容。

    命令返回结果如下。当输出 CHANGED 字样时,表示分区扩容成功。
    图片

步骤三:扩容文件系统

如果云盘和文件系统正在被使用,当您采用resize2fs等工具在线扩容文件系统时,可能会触发文件系统数据问题。该问题与镜像内核版本、resize2fs工具版本相关,与云盘扩容本身无关。建议您在扩容前先备份数据。
以下内容介绍如何扩容分区的文件系统。

  1. 根据步骤一中查询到的文件系统类型,运行相应命令扩容文件系统。

    • 运行以下命令扩容ext4文件系统。
      • 扩容系统盘/dev/vda1分区的文件系统:

        resize2fs /dev/vda1
        
      • 扩容数据盘/dev/vdb1分区的文件系统:

        resize2fs /dev/vdb1
        

        说明

        • /dev/vda1和/dev/vdb1均为分区名称。您需要根据实际情况修改分区名称。
        • 如果磁盘为裸设备,直接执行命令resize2fs <device_name>。例如,磁盘为/dev/vdd时,执行resize2fs /dev/vdd
    1. 运行以下命令扩容xfs文件系统。
      • 扩容数据盘/dev/vdc1分区的文件系统:

        yum install -y xfsprogs
        xfs_growfs /mnt/datadisk2
        

        说明

        /mnt/datadisk2/dev/vdc1的挂载点。您需要根据实际情况修改挂载点。

  2. 运行以下命令,查看扩容结果。

    df -Th
    

    命令返回结果如下。扩容后的文件系统容量和通过控制台扩容后的云盘容量基本一致,表示扩容成功。

    说明

    通过控制台扩容的云盘容量采用的是1000进位。操作系统中显示的云盘容量采用的是1024进位。因此,数字显示上会存在差异。例如,如果您在控制台上将云盘扩容到70GB,操作系统中显示的扩容容量约为65GiB。

    图片