AWS ec2 根卷增加:在 aws ubuntu 实例上扩展弹性根卷不起作用

Posted

技术标签:

【中文标题】AWS ec2 根卷增加:在 aws ubuntu 实例上扩展弹性根卷不起作用【英文标题】:AWS ec2 root volume increase: Expanding elastic root volume on aws ubuntu instance not working 【发布时间】:2017-07-16 21:22:26 【问题描述】:

我关注了aws doc for expanding elastic root volume 我的根卷大小从 8 GB 增加到 20 GB,我使用 lsblk 确认了这一点。

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 20G 0 disk └─xvda1 202:1 0 8G 0 part /

但更新后的大小并未反映在df -h 命令中,即使在我使用sudo resize2fs /dev/xvda1 命令显式调整设备大小后,因为我的文件系统类型是ext4,我使用sudo file -s /dev/xvd* 命令检查了它。 sudo resize2fs /dev/xvda1 命令给出以下输出:-

sudo resize2fs /dev/xvda1 resize2fs 1.42.12(2014 年 8 月 29 日) 文件系统已经有 2096635 (4k) 个块长。无事可做!

让我知道,我需要做什么才能让操作系统拾取我的卷中的大小。

谢谢

【问题讨论】:

docs.aws.amazon.com/AWSEC2/latest/UserGuide/… 嗨阿米特,你是如何解决这个问题的。我现在面临着完全相同的问题。你能帮我解决吗? 【参考方案1】:

你输出的原因是因为你少了一个步骤。

resize2fs 程序不操纵分区的大小。如果你想扩大一个文件系统,你必须确保你可以先扩大底层分区的大小......https://linux.die.net/man/8/resize2fs

一旦您通过使用 AWS 控制台 (UI) 或使用命令行 aws ec2 modify-volume --volume-id ID_OF_DEVICE --size NEW_SIZE (modify volume command line documentation) 增加了卷的大小

您仍然需要告诉操作系统您要分配更多空间到分区(在本例中为根分区/) 所以让它工作的正确顺序如下所示:

扩展分区表中的分区以填充可用空间

(1) sudo growpart /dev/xvda 1 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/expand-linux-partition.html

扩展一个 ext2、ext3、ext4 文件系统

(2)sudo resize2fs /dev/xvda1

更多关于AWS recognizing expanded volume

【讨论】:

这应该是接受的解决方案,因为您缺少的命令是 sudo growpart /dev/xvda 1, @Amit Khandelwal 就我而言,resize2fs 正在抛出 Bad magic number in super-block while trying to open /dev/xvda1。但是当我使用xfs_growfs 时,它运行良好。 上面的答案与ext文件系统有关。在您的情况下,文件系统是XFS,这就是它起作用的原因。更多信息:docs.aws.amazon.com/AWSEC2/latest/UserGuide/… 这对我有用。【参考方案2】:

我的解决方案

我不了解你们,但我能够将 30GB 添加到我原来的 8GB Ubuntu EC2 实例,然后我进入 EC2 控制台管理器并右键单击我的 Instance,然后按 重启。

在我重新启动并通过 SSH 连接回服务器后,我输入了 df -h,发现我的根分区 (/dev/xvda1) 大小为 38GB。

【讨论】:

请仅在答案中添加答案,如果您有其他问题,请使用提问界面提问。 同样的事情发生在我身上。当我的服务器崩溃时,我距离放弃并阅读所有 AWS 文档以增加我的根目录还有几天的时间。我重新启动它,突然我已经添加到实例中的额外 GB 已添加到我的根分区。我遇到过的最好的服务器崩溃。 对我来说也一样 - 重新启动并获得额外的 GB。 我也面临同样的问题。刚刚重新启动,它对我有用 这里相同 - 我尝试按照所有步骤操作,但它们不起作用。直到我重新启动,我才看到增加。【参考方案3】:

/dev/xvda1 是 20 GiB 设备上的 8 GiB 分区,卷上没有其他分区。在这种情况下,分区必须是 resized 才能使用卷上的剩余空间。

调整分区大小后,您可以扩展文件系统(通过sudo resize2fs /dev/xvda1)以占用分区上的所有空间。

【讨论】:

我浏览了你提到的文档,但是过程非常复杂,如果有任何易于遵循的命令/文档,它将很有用。我相信很多人都面临过这个问题并且迷失在复杂的文档中。 我同意现阶段根分区的过程可能很复杂。甚至 AWS 也承认:“如果您需要调整大小的分区是实例的根分区,则过程会变得更加复杂......”。不过,我确实希望 AWS 将来能让我们的流程变得更简单。 希望如此,接受这个答案,因为这是目前最好的答案。 程序的复杂性与 AWS 完全无关。使用根卷对引导磁盘进行重新分区——除了通常是错误的解决方案之外——本质上是一项复杂的任务。【参考方案4】:

玩得开心 9 步............

分离根卷并为更安全的一面拍摄根卷的快照并调整其大小。调整大小后,将此卷挂载到 /dev/sda1 下的 your_instance 通过运行“lsblk”和“df -h”命令确保文件系统完全扩展到根卷。 如果更改没有反映运行,“resize2fs -f”

更多细节参考,

Steps to increase the root volume

【讨论】:

也许您可以总结您在此处提供的链接中的步骤。这样,如果链接失效,您的答案仍然有用。 感谢您的 cmets 斯蒂芬。我认为现在它很有用。

以上是关于AWS ec2 根卷增加:在 aws ubuntu 实例上扩展弹性根卷不起作用的主要内容,如果未能解决你的问题,请参考以下文章

aws相关知识

AWS EC2 Ubuntu 根目录扩大空间

AWS EC2避免误删软件包和数据的方法:取消“终止删除”默认配置

AWS云计算助手级架构师认证之EC2-存储类型

从本地机器上的 ubuntu (AWS EC2) 读取文件?

无法从我的ubuntu EC2计算机连接到AWS DocumentDB