阿里云 ECS 扩容后怎么扩展磁盘:分区、ext4 与 XFS
区分 ECS 控制台云盘扩容与 Linux 文件系统扩容,按设备、分区和文件系统类型完成新增空间使用。
控制台变大了,系统里还没变
ECS 购买云盘扩容空间后,Linux 的原分区和文件系统可能仍是旧容量。整个过程分为云盘容量、分区容量、文件系统容量三层。
以下示例用于常见 Linux 普通分区,目标必须是磁盘的最后一个分区。操作前保存快照;LVM、Btrfs 或没有分区的整盘文件系统,按阿里云对应流程处理,不套用本篇分区命令。
在线扩容前先核对实例系统版本。CentOS 6 及以下、Debian 8 及以下和 OpenSUSE 42.3,按阿里云的离线扩容流程操作,不直接套用后面的在线步骤。
如果扩容前云盘大于 16 TiB、容量又不是 8 GiB 的整数倍,并且使用 ext4,先运行 `uname -r`,对照阿里云文档的受影响内核表。命中受影响版本时,在线扩容可能覆盖业务数据;必须按对应系统要求先迁移操作系统或升级内核,再执行下面的扩容命令。
先看设备和文件系统
lsblk
lsblk -f
df -Th记录目标磁盘、分区、文件系统及挂载点。例如磁盘是 /dev/vda,分区 /dev/vda1,文件系统 ext4,挂载到 /。这个示例还要求 /dev/vda1 是磁盘的最后一个分区,其后是扩容新增的空闲空间;多分区磁盘先确认最后一个分区的实际编号。设备也可能是 NVMe 命名,先确认再改示例。
磁盘本身仍显示旧容量时,查看控制台扩容是否完成。离线扩容还需要按平台文档从控制台启动或重启实例,先让系统识别新增容量。
普通分区用 growpart 扩展
sudo apt update
sudo apt install -y cloud-guest-utils
type sgdisk || sudo apt-get install -y gdisk
sudo growpart /dev/vda 1
lsblk安装命令按 Ubuntu/Debian 编写。GPT 分区表需要 gdisk 提供的 sgdisk;第三行先检查,缺少时再安装。/dev/vda 与 1 分别代表磁盘和第一分区,中间有空格;只有确认第一分区就是最后一个分区时,才使用这里的 1。growpart 修改分区边界;看到 CHANGED 后,再检查分区容量。
提示 NOCHANGE 时,检查磁盘容量是否更新、目标分区是否已经占满可用空间。不要为了扩容删除并重新创建已有数据的分区。
ext4 与 XFS 用不同命令
sudo resize2fs /dev/vda1上面的命令仅用于已确认的 ext4 分区。resize2fs 参数是设备或分区路径,不是挂载目录。
sudo xfs_growfs /如果目标文件系统是挂载在 / 的 XFS,使用第二条命令;数据盘则把 / 改成它实际的挂载点。两条命令选择与文件系统匹配的一条执行。
确认应用可以使用空间
df -Th
lsblk -f对比目标文件系统容量和可用空间,新增容量可能因元数据略有差异。再检查原网站、数据库和文件目录。
只加系统盘,不会把位于另一块数据盘的文件库一起扩大。Docker 数据目录在独立挂载点时,扩容对应磁盘。
