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

我有一台运行Canonical最新Ubuntu AMI的服务器。 EBS启动卷的大小是8GB。 我知道我可以通过拍摄快照来调整EBS卷的大小,创build一个新卷并在其上扩展分区。 如何在机器运行时增加音量大小? 如果这是不可能的,什么是最小的停机时间增加启动卷大小的首选方法?

不幸的是,在Amazon EC2实例正在运行时,不可能增加Amazon EBS根设备存储卷的大小 – Eric Hammond已经写了一篇关于调整根磁盘大小的详细(我倾向于说'规范')的文章在运行EBS启动EC2实例上 :

只要您在EC2实例上有一点停机时间(几分钟),就可以用更大的副本更改根EBS卷,而无需启动新的实例。

如果你准备好了他所描述的步骤(我强烈build议先用一个扔掉的EC2实例来testing它们,以便熟悉这个过程),那么你应该只需要几分钟的停机时间就能完成这个过程。

祝你好运!

我们可以使用新的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 / 

为了将xdda1从16GB扩展到32GB,我们需要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 

这个5岁的问题迟到了

AWS刚刚发布了一个名为Elastic Volumes的新EBSfunction,允许您在卷使用时增加卷大小,调整性能或更改卷types。

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

您只需要先创build其快照,然后从该快照创build另一个卷,一旦新的卷准备就绪,将旧卷从实例中分离出来并附加新卷。 确保在启动此过程之前停止实例,并在完成后重新启动实例。

请参阅http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html

这将适用于xfs文件系统,只需运行此命令xfs_growfs /

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

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

一旦分区/ dev / sdb1被resize,我将这两个卷分开,并将新卷重新挂接到/ dev / sda1,并运行resize2fs / dev / xvda1。

你不可以做这个。 但是,如果您更关注停机时间,那么您可能会克隆主实例,将更大的EBS存储设备安装到系统中,复制数据并将stream量redirect到新实例。

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

希望有所帮助。