扩容分区及文件系统(Linux)

最近更新时间:2025-05-28 16:18:43

我的收藏

操作场景

在完成 扩容云硬盘容量 后,需要按照情况扩容分区和文件系统后,实例才能识别新增容量。您可参考本文进行 Linux 系统下的相关操作。

前提条件

实例状态为运行中。
云硬盘状态为使用中。
系统盘使用率未达到 100%。
注意:
为确保扩容操作顺利进行,请登录实例并执行 df -h 命令,以确认根分区的使用率未达到100%。
Linux 云服务器内核不低于 3.6.0 版本,可使用 uname -a 命令查看内核版本。
注意:
若内核版本低于3.6.0,可参见 低内核版本系统离线扩展分区及文件系统(Linux) 进行操作。
已扩容云硬盘容量,且该盘已挂载至云服务器。详情请参见 扩容云硬盘容量

准备工作

扩容文件系统操作不慎可能影响已有数据,因此强烈建议您在操作前手动 创建快照 备份数据。

示例环境

资源
说明
操作系统
TencentOS Server 4 for x86_64
云硬盘
/dev/vda:系统盘,已通过控制台由 50 GiB 扩容到 60 GiB。
/dev/vdb:数据盘,初始化时未分区且创建了 XFS 文件系统,已通过控制台由 70 GiB 扩容到 100 GiB。(初始化的相关步骤可参考:初始化云硬盘(Linux)
/dev/vdc:数据盘,初始化时创建了 GPT 分区 /dev/vdc1 且创建了 EXT4 文件系统,已通过控制台由 100 GiB 扩容到 150 GiB。(初始化的相关步骤可参考:初始化云硬盘(Linux)

操作步骤

步骤一:确认云硬盘是否分区

1. 登录云服务器,详情请参见 使用标准登录方式登录 Linux 实例(推荐)
2. 执行以下命令,查询需要扩容的云硬盘的分区信息。
sudo fdisk -l
返回结果有如下图类似信息:



其中:
若 Disk /dev/vdx 下没有同名前缀的形如 /dev/vdx1/dev/vdx2 等的 Device,则表示该云硬盘是裸设备没有分区。
若 Disk /dev/vdx 下有同名前缀的形如 /dev/vdx1/dev/vdx2 等的 Device,则表示该云硬盘有分区
注意:系统盘都有形如 /dev/vda1的分区。

步骤二:若有分区,确认分区表格式(无分区时无需进行此步骤)

在步骤一 sudo fdisk -l 的返回结果中,查看 Disklabel type 字段来确定分区表的格式。
Disklabel type 值为 dos,表示分区表为 MBR 格式。
Disklabel type 值为 gpt,表示分区表为 GPT 格式。
注意:
不同操作系统的显示略有不同。如果没有展示 Disklabel type 字段,可通过 System 字段判断。System 值为 Linux 表示 MBR 格式,值为 GPT 表示 GPT 格式。

步骤三:查看文件系统类型

执行以下命令,查询步骤一中需要扩容的裸设备或分区的文件系统类型。
sudo file -s 裸设备名(如/dev/vdb)或分区名(如/dev/vda1)
返回结果有如下图类似信息:

其中:
XFS filesystem 表示文件系统为 XFS
ext4 filesystem表示文件系统为 EXT4
ext3 filesystem 表示文件系统为 EXT3

综上,经过步骤一至步骤三,在本示例中可获取以下信息:
/dev/vda 系统盘,包含 MBR 分区 /dev/vda1,文件系统为 XFS。
/dev/vdb 数据盘无分区,文件系统为 XFS。
/dev/vdc 数据盘有分区 /dev/vdc1,文件系统为 EXT4。

步骤四:根据步骤一至步骤三获得的信息,判断后续操作

分区和文件系统形式
后续操作
无分区的裸设备,无文件系统
无分区的裸设备,有文件系统
有分区,分区格式为 GPT,有文件系统
有分区,分区格式为 MBR 且扩容后的容量小于等于 2 TiB,有文件系统
有分区,分区格式为 MBR 且扩容后的容量大于 2 TiB,有文件系统
请注意,MBR 格式分区支持的磁盘最大容量为 2 TiB。如果您的硬盘分区为 MBR 格式,且需要扩容到超过 2 TiB 时,需要先将分区表格式改为 GPT。

步骤五:扩容分区

1. 请依照 步骤四:根据步骤一至步骤三获得的信息,判断后续操作,确认云硬盘是否需要执行扩容分区操作。
2. 根据实际情况执行命令,安装 gdisk 工具。
若分区类型为 MBR,无需安装此工具,直接执行下一步安装 growpart 工具。
若分区类型为 GPT,则请对应云服务器操作系统类型,执行以下命令安装工具。
CentOS
Ubuntu 或 Debian
sudo yum install gdisk -y
sudo apt-get install gdisk -y
3. 对应云服务器操作系统类型,执行以下命令,安装 growpart 工具。
CentOS
Ubuntu 或 Debian
sudo yum install -y cloud-utils-growpart
sudo apt-get install -y cloud-guest-utils
4. 执行以下命令,使用 growpart 工具扩容分区。
注:本示例以扩容系统盘 /dev/vda1 分区为例,命令中 /dev/vda1 间需使用空格分隔。您需要按需修改命令。
sudo LC_ALL=en_US.UTF-8 growpart /dev/vda 1
扩容分区前(系统盘已扩容至 60 GiB,分区仍只有 50GiB):

返回结果如下图所示,则表示分区扩容成功。

扩容数据盘分区/dev/vdc1的步骤一致,不再赘述。
说明:
请注意,若返回结果如下图所示,则表示分区扩容失败,根据提示信息需要重启机器,重启机器后再重新执行上述命令查看是否扩容成功。

如果仍然失败,可能是因为分区未对齐导致的,执行fdisk -l /dev/vdb查看分区是否按照2048扇区对齐,如下图所示,如果第1个分区是从第34扇区开始,非2048对齐,则需要按照 扩展 GPT 分区及文件系统(大于2TB)来重新扩展分区。


步骤六:扩容文件系统

1. 根据 步骤三:查看文件系统类型 获取到的文件系统类型,执行对应命令扩容文件系统:
说明:
EXT 文件系统具备以下容量限制:
EXT3 文件系统最大支持16TB,单个文件2TB。
EXT4 文件系统最大支持1EB,单个文件16TB。
扩容 ext 文件系统
扩容 xfs 文件系统
执行以下命令,扩容 ext 文件系统。
resize2fs 裸设备名(如/dev/vdb)或分区名(如/dev/vdb1)
本示例中数据盘分区 /dev/vdc1为 EXT4 文件系统,因此执行 resize2fs /dev/vdc1,执行过程中按照系统提示,可能需要执行esfsck相关指令。执行返回结果如下图所示:

执行以下命令,扩容 xfs 文件系统。其中文件系统的挂载点可以通过命令 df -TH查看。
xfs_growfs <挂载点>
本文示例为/dev/vda1 挂载至 / /dev/vdb 挂载至 /data1,则执行以下命令。
xfs_growfs /
xfs_growfs /data1
返回结果如下图所示:


2. 执行以下命令,查看扩容结果。
df -TH
本示例返回结果如下图所示,系统盘(/dev/vda1)和数据盘(/dev/vdb/dev/vdc1)均已完成扩容。

3. 扩容成功后请检查数据完整性,观察云服务器中的业务是否正常运行。 如果有异常可以使用回滚快照的方式进行数据恢复,详情请参见 从快照回滚数据