You need to enable JavaScript to run this app.
导航
扩容分区和文件系统(Linux)
最近更新时间:2025.05.20 16:37:04首次发布时间:2023.02.03 15:17:21
我的收藏
有用
有用
无用
无用

本文介绍如何扩容Linux实例云盘的分区和文件系统。您在控制台扩容云盘后,云盘的分区和文件系统不会自动扩容。这意味着增加的云盘容量还无法使用。您必须在边缘实例的操作系统中扩容分区和文件系统后才能使用增加的云盘容量。

适用场景

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

  • 场景1:您在云盘上创建了分区和文件系统。
    该场景下,您需要扩容分区和文件系统。详细操作,请参考后文中的步骤一 ~ 步骤三。
  • 场景2:您在云盘上没有创建任何分区,仅创建了一个文件系统。
    该场景下,您仅需扩容文件系统。详细操作,请参考后文中的步骤一和步骤三。

背景信息

示例所用资源

下表列出了本文示例中所使用到的资源的信息。

资源

描述

边缘实例的镜像

边缘实例使用公共镜像,镜像名称为“CentOS 7.6 64位”。

系统盘

系统盘的设备名称为/dev/vda。系统盘由40GB扩容到70GB。系统盘上仅有一个MBR分区(/dev/vda1),该分区采用ext4文件系统。

数据盘

第一块数据盘的设备名称为/dev/vdb。该数据盘由40GB扩容到70GB。该数据盘上仅有一个MBR分区(/dev/vdb1),该分区采用ext4文件系统。

第二块数据盘的设备名称为/dev/vdc。该数据盘由40GB扩容到70GB。该数据盘上仅有一个GPT分区(/dev/vdc1),该分区采用XFS文件系统。

云盘容量说明

控制台显示的磁盘容量使用十进制单位表示。Linux操作系统中显示的磁盘容量可能以二进制或十进制单位表示,这取决于您所使用的具体命令或工具。因此,控制台显示的磁盘容量的数值与操作系统中显示的数值可能会有差异。例如,您在控制台将云盘扩容到70GB,但是操作系统中显示的扩容后总容量可能为“66G”(指的是66GiB)。这是因为1GB = 1,000,000,000字节,而1GiB = 1,073,741,824字节。

前提条件

您已在控制台扩容云盘。具体操作,请参见扩容云盘

注意事项

为防止误操作导致数据丢失,强烈建议您在扩容分区和文件系统前备份数据。

操作步骤

对于不同的操作系统,配置方法可能存在差异。以下内容以CentOS 7.6 64位操作系统为例进行说明。

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

扩容操作根据分区表格式和文件系统类型的不同而有所差异。因此,在开始扩容分区和文件系统前,需要先查看分区和文件系统的类型。

  1. 登录边缘实例。具体操作,请参见通过VNC登录实例使用第三方客户端工具登录实例

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

    fdisk -l
    

    返回结果如下图所示。
    Image
    下表以系统盘/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。

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

    df -Th
    

    返回结果如下图所示。Type字段表示文件系统的类型。Mounted on字段表示文件系统的挂载点。
    Image

    说明

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

步骤二:扩容分区

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

说明

以下内容中的分区设备名称为示例值。实际场景中,请将示例值修改为实际值。

  1. 安装分区扩容工具。
  1. 运行以下命令安装growpart工具:

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

    yum install -y gdisk
    
  1. 扩容云盘分区。

    1. 运行以下命令扩容系统盘分区:

      LC_ALL=en_US.UTF-8 growpart /dev/vda 1
      
    2. 运行以下命令扩容数据盘分区/dev/vdb1:

      LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
      
    3. 运行以下命令扩容数据盘分区/dev/vdc1:

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

    在以上命令中, LC_ALL=en_US.UTF-8代表环境变量设置。该设置是为了确保字符编码的一致性以及命令输出格式正确。

    注意

    • 分区编号前需要添加一个空格。例如,使用命令 growpart /dev/vda 1扩容分区/dev/vda1。
    • 如果单块云盘有多个连续分区,只需要扩容最后一个分区即可。
      示例:数据盘/dev/vdb有三个分区/dev/vdb1、/dev/vdb2和/dev/vdb3。该情形下,运行growpart /dev/vdb 3命令,将增加的容量分配给最后一个分区/dev/vdb3。

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

步骤三:扩容文件系统

注意

在文件系统正在被使用的情况下,使用resize2fs等工具进行在线文件系统扩容可能存在风险。这种操作可能导致文件系统数据损坏或数据一致性问题。这些问题主要由操作系统内核和resize2fs工具的兼容性问题导致,而非扩容操作本身导致。建议您在扩容前先备份数据,并在系统负载较低的时间窗口中进行扩容操作。

以下内容介绍如何扩容分区的文件系统。

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

    运行resize2fs命令扩容ext4文件系统。

    1. 扩容系统盘上/dev/vda1分区的文件系统:

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

      resize2fs /dev/vdb1
      

      说明

      • /dev/vda1和/dev/vdb1均为分区设备名称的示例值。实际场景中,请将示例值修改为实际值。
      • 如果云盘上没有划分分区,运行命令resize2fs <disk_device_name>。例如,云盘的设备名称为/dev/vdd时,运行resize2fs /dev/vdd
  2. 运行以下命令,查看扩容结果。

    df -Th
    

    说明

    • 控制台显示的云盘容量使用十进制单位表示,df -Th命令输出结果中显示的云盘容量使用二进制单位表示。因此,控制台显示的云盘容量的数值与操作系统中显示的数值会有差异。
    • 文件系统类型不同,操作系统中显示的文件系统的扩容后容量可能会有差异。这主要是因为不同的文件系统在空间分配和元数据存储方面的策略不同。

    Image