如何增加正在运行的实例的EBS卷大小?[关闭]


72

我有一台服务器,从Canonical运行最近的Ubuntu AMI。EBS引导卷的大小为8GB。我知道我可以通过拍摄快照,创建新卷并在其上扩展分区来调整EBS卷的大小。在机器运行时如何增加卷的大小?如果无法做到这一点,那么在最小的停机时间内增加启动卷大小的首选方法是什么?


我知道已经回答了,但是前几天我找到了这个很棒的简单教程。这是我周末要遵循/使用的内容。tekgoblin.com/2012/08/27/...
leen3o

以及适用于我且易于遵循的linux版本:cloud.tekgoblin.com/2013/04/29/…– Carasel
2015年

这是指向该过程的最新说明(2015年)的链接
维尔

如果有人在2019年之后来到这里,那么停机时间为零:hackernoon.com/…–
Atul,

Answers:


40

不幸的是,在运行Amazon EC2实例时,不可能增加Amazon EBS根设备存储卷的大小-Eric Hammond写了一篇有关调整根磁盘大小的详细(我倾向于说“规范”;)文章。在正在运行的EBS引导EC2实例上

只要您对EC2实例的停机时间感到满意(几分钟),就可以使用更大的副本来更改根EBS卷,而无需启动新实例。

如果您正确地准备了他描述的步骤(我强烈建议您先使用一个废弃的EC2实例对其进行测试以熟悉该过程),那么您实际上应该只能在几分钟的停机时间内完成该过程。

祝好运!


2
更好的是,您可以编写脚本来执行操作。使用测试实例对其进行测试,然后在生产服务器上运行该测试,以减少忘记步骤的风险。
bwight 2012年


69

我们可以使用新的EBS Feature Elastic卷来增加卷的大小,然后发布,我们需要按照以下步骤使用增加的大小,如下所示

假设您的容量为16G,并将其增加到32GB。

    $lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  32G  0 disk
└─xvda1 202:1    0  16G  0 part /

要从16GB t0 32GB扩展xvda1,我们需要growpart。growpart可作为cloudutils的一部分使用

sudo apt install cloud-utils

安装cloud-utils后,执行growpart命令

sudo growpart /dev/xvda 1

现在,lsblk将显示

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

但df -h仅显示16GB

将xvda1扩展到32GB的最终命令是

sudo resize2fs /dev/xvda1

如果是XFS文件系统,

sudo xfs_growfs /dev/xvda1 谢谢鸡蛋


它的工作。谢谢。
穆拉利

这真是太了不起了,像一个魔术一样工作-非常感谢:-)
Peter T.

可以很好地从
AWS

1
这个应该被接受的答案!
异常

2
如果您使用的是XFS文件系统,则最终命令应为sudo xfs_growfs /dev/xvdal而不是resize2fs

22

这个已有5年历史的问题的最新答案

AWS刚刚宣布了一项名为Elastic Volumes的新EBS功能,该功能使您可以在使用卷时增加卷大小,调整性能或更改卷类型。

您可以在此处的AWS Blog上阅读有关它的更多信息。


1
这太棒了,但请注意,某些旧版卷可能不受支持。我跑aws ec2 modify-volume --region us-west-2 --volume-id vol-0123456789 --size 20了出来An error occurred (InvalidParameterValue) when calling the ModifyVolume operation: Volume type EBS Magnetic is not supported.
看到

@runamok:是的。如所陈述在这里,通过上述的方法前一代的磁容量类型不受支持。在这种情况下,将快照还原到配置不同的EBS卷将是解决方案。
哈立德T.



-1

我发现,当尝试增加根分区/ dev / sda1时(在centos6上报告为/ dev / xvda1),我无法卸载卷以扩展分区。

通过将原始卷安装为/ dev / sda1并将快照安装为/ dev / sdb来解决此问题。然后,我重新启动映像并使用parted调整了/ dev / sdb1分区的大小。

调整了分区/ dev / sdb1的大小后,我分离了两个卷并将新卷重新附加到/ dev / sda1并运行resize2fs / dev / xvda1。


-2

你不能做这个。但是,如果您更关注停机时间而不是成本,那么您也许可以克隆主实例,将更大的EBS存储设备安装到系统中,复制数据,然后将流量重定向到新实例。

如果需要,我最近使用S3的一种方法是备份和部署到其他系统。因此,例如,您有一个现有系统在运行。.设置脚本以每N分钟/小时/天将数据上传到s3。然后编写一个脚本,以在启动新实例下载该数据时使用。如果您的数据不是像不断更新的东西,那应该可以正常工作(对我来说,当数据本身在ec2数据库服务器上进行管理时,我可以使用它来分发代码库的更新版本)。

希望能有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.