问题描述
在使用 AWS AMI 创建 EC2 实例时,虽然为根卷(EBS)设置了 20GB 的大小(AWS 免费套餐包含 30GB EBS),但通过 SSH 登录实例后,使用 df -h 命令查看,发现 /dev/xvda1 分区仍然只显示默认的 8GB 可用空间。
原因分析
这是因为 AWS 的 AMI 镜像通常预配置了一个较小的根分区。虽然您为 EBS 卷分配了更大的容量(例如 20GB),但操作系统内的文件系统并未自动扩展以使用所有可用空间。您可以使用 fdisk -l 或 lsblk 命令来验证底层块设备(如 /dev/xvda)的实际大小,确认其已扩容至 20GB。
解决方案:扩展根文件系统
要使用 EBS 卷上新增的空间,需要扩展根分区上的文件系统。对于常见的 Linux 发行版(如 Amazon Linux 2, Ubuntu, CentOS),如果根分区使用的是 ext2/ext3/ext4 文件系统,可以按以下步骤操作:
- 确认设备与文件系统类型:
sudo fdisk -l /dev/xvda sudo lsblk -f - 扩展文件系统:
使用
resize2fs命令(适用于 ext 系列文件系统)在线扩展文件系统,使其填满整个分区:sudo resize2fs /dev/xvda1注意:如果您的实例使用较新的 AMI(如 Amazon Linux 2023),根卷可能使用 XFS 文件系统。对于 XFS,扩展命令为:
sudo xfs_growfs / - 验证结果:
再次运行
df -h命令,检查/dev/xvda1的可用空间是否已更新为扩容后的大小。df -h
其他扩容方式:挂载新的 EBS 卷
如果根卷空间已用尽或您希望分离数据,可以采用挂载额外 EBS 卷的方式扩容:
- 在 AWS 控制台创建并附加一个新的 EBS 卷到实例。
- 登录实例,使用
lsblk识别新设备(如/dev/xvdf)。 - 对新设备进行分区(例如使用
fdisk或parted)、格式化(如mkfs -t ext4 /dev/xvdf1)。 - 创建挂载点(如
/mnt/data)并挂载新卷。 - 如需开机自动挂载,需将配置写入
/etc/fstab。
重要提示:操作前建议为 EBS 卷创建快照备份。对于生产环境,建议先在测试实例上验证操作步骤。