博客 / Others/ AWS EC2 实例根卷(EBS)扩容后如何扩展文件系统使用全部空间

AWS EC2 实例根卷(EBS)扩容后如何扩展文件系统使用全部空间

问题描述

在使用 AWS AMI 创建 EC2 实例时,虽然为根卷(EBS)设置了 20GB 的大小(AWS 免费套餐包含 30GB EBS),但通过 SSH 登录实例后,使用 df -h 命令查看,发现 /dev/xvda1 分区仍然只显示默认的 8GB 可用空间。

原因分析

这是因为 AWS 的 AMI 镜像通常预配置了一个较小的根分区。虽然您为 EBS 卷分配了更大的容量(例如 20GB),但操作系统内的文件系统并未自动扩展以使用所有可用空间。您可以使用 fdisk -llsblk 命令来验证底层块设备(如 /dev/xvda)的实际大小,确认其已扩容至 20GB。

解决方案:扩展根文件系统

要使用 EBS 卷上新增的空间,需要扩展根分区上的文件系统。对于常见的 Linux 发行版(如 Amazon Linux 2, Ubuntu, CentOS),如果根分区使用的是 ext2/ext3/ext4 文件系统,可以按以下步骤操作:

  1. 确认设备与文件系统类型
    sudo fdisk -l /dev/xvda
    sudo lsblk -f
  2. 扩展文件系统

    使用 resize2fs 命令(适用于 ext 系列文件系统)在线扩展文件系统,使其填满整个分区:

    sudo resize2fs /dev/xvda1

    注意:如果您的实例使用较新的 AMI(如 Amazon Linux 2023),根卷可能使用 XFS 文件系统。对于 XFS,扩展命令为:

    sudo xfs_growfs /
  3. 验证结果

    再次运行 df -h 命令,检查 /dev/xvda1 的可用空间是否已更新为扩容后的大小。

    df -h

其他扩容方式:挂载新的 EBS 卷

如果根卷空间已用尽或您希望分离数据,可以采用挂载额外 EBS 卷的方式扩容:

  1. 在 AWS 控制台创建并附加一个新的 EBS 卷到实例。
  2. 登录实例,使用 lsblk 识别新设备(如 /dev/xvdf)。
  3. 对新设备进行分区(例如使用 fdiskparted)、格式化(如 mkfs -t ext4 /dev/xvdf1)。
  4. 创建挂载点(如 /mnt/data)并挂载新卷。
  5. 如需开机自动挂载,需将配置写入 /etc/fstab

重要提示:操作前建议为 EBS 卷创建快照备份。对于生产环境,建议先在测试实例上验证操作步骤。

发表评论

您的邮箱不会公开。必填项已用 * 标注。