我正在使用 AWS 启动 RHEL64 实例,但磁盘无法调整大小以适合我选择的卷。
场景如下:我从 Marketplace AMI ami-517eec6b(这是 RedHat 批准的 RHEL64 映像)启动一个正在运行的实例,并选择卷大小(例如 30GB)。实例启动成功,但 fdisk 和 df 输出不匹配。
即,df 显示文件系统仅报告为 8GB(默认大小)
$ df -h 文件系统大小已使用可用使用率%安装于 /dev/xvda1 5.7G 2.3G 3.4G 41% / 无 1.8G 0 1.8G 0% /dev/shm
fdisk 显示卷是正确的30gb。
$ sudo fdisk -l 磁盘 /dev/xvda:32.2 GB,32212254720 字节 4 个磁头、32 个扇区/磁道、491520 个磁柱 单位 = 128 * 512 = 65536 字节的柱面 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标识符:0x00072e87 设备启动开始结束块ID系统 /dev/xvda1 1 93750 5999984 83 Linux
我以为我可以调整这个文件系统的大小(基于我在其他文章中发现的评论),但这似乎不起作用。
$ sudo resize2fs /dev/xvda1 resize2fs 1.41.12(2010 年 5 月 17 日) 文件系统的长度已达 1499996 个块。无需执行任何操作!
这是操作系统版本
$ uname -a Linux ip-10-100-155-254 2.6.32-431.el6.x86_64 #1 SMP 2013 年 11 月 10 日星期日 22:19:54 EST x86_64 x86_64 x86_64 GNU/Linux
我猜我可以将其附加到另一个实例并调整文件系统的大小,但我更担心 AMI 无法检测到呈现给它的卷。
我认为这很可能是操作系统内核没有接收到底层音量变化,但需要一些帮助来继续解决这个问题。
发生了什么事?我该如何在启动时纠正这个问题?
提前致谢!
答案1
您无法调整文件系统大小的原因是,它已经占用了分区中的所有空间。增加磁盘大小不会改变分区表,因此您仍然拥有相同大小的分区,并在磁盘的其余部分拥有未分区的可用空间。
必要步骤如下:
- 扩大虚拟磁盘(您已经这样做了)
- 扩大分区(这是你忘记的)
- 重新启动(重新加载分区表,仅在磁盘繁忙时才需要)
- 扩大文件系统
答案2
我在挖掘过程中发现了这个,
不幸的是,这是 RHEL/CentOS 6.5 AMI 上的一个已知错误,但是有两种解决方法可以按照您的要求扩展文件系统:
您可以将卷挂载到另一个实例,并使用 parted 扩展根 FS 所在卷的分区边界,如以下链接所述: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/storage_expand_partition.html
您可以使用 dracut growroot 模块,它将生成新的 initramfs 并将分区扩展到卷的大小。这可以使用以下命令执行:
确保 EPEL 存储库已启用,如果未启用,请使用以下命令启用存储库:wgethttp://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -i epel-release-6-8.noarch.rpm
指示 dracut 使用 growroot dracut 模块重建 initramfs:
dracut --force --add growroot /boot/initramfs-$(uname -r).img
重新启动实例并使用 lsblk 和 df 确认分区大小已扩展 您还询问了为什么新的 T2 实例类型不支持 PV。这是因为 PV 在实例和硬件层之间提供了抽象,从而阻止了 T2 实例类型上的 CPU 积分工作。一般来说,由于 PV 不支持 Intel CPU 上的新指令集,HVM 现在是我们使用的更常见的虚拟化技术。
经过这一步之后,它确实按照我想要的方式在启动时调整大小。