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 EC2避免误删软件包和数据的方法:取消“终止删除”默认配置