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

我有一个服务器运行最近的 Ubuntu AMI 从 Canonical。EBS 引导卷的大小为8GB。我知道我可以通过快照、创建一个新卷并展开其上的分区来调整 EBS 卷的大小。在机器运行时,如何增加卷的大小?如果这是不可能的,什么是首选的方法来增加引导卷大小与最小的停机时间?

65876 次浏览

不幸的是,在 亚马逊 EC2实例运行时,不可能增加 亚马逊电子商务系统根设备存储容量的大小—— Eric Hammond 已经写了一篇关于 在正在运行的 EBS 引导 EC2实例上调整根磁盘的大小的详细文章(我倾向于说“规范”;) :

只要您对 EC2实例的一点停机时间没有问题(很少) 分钟) ,则可以使用 更大的副本,无需启动新实例。

如果您正确地准备了他所描述的步骤(我强烈建议首先使用一个抛弃的 EC2实例来测试它们,以便熟悉这个过程) ,那么您应该能够在几分钟的停机时间内完成这个过程。

祝你好运!

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

如果需要,我最近使用的 S3方法有一个备份和部署到其他系统的媒介。例如,您已经运行了现有的系统。.设置一个脚本,每 N 分钟/小时/天将数据上传到 s3。.然后编写一个脚本,在启动新实例下载该数据时使用。如果您的数据不是不断更新的,那么这样做应该没问题(对于我来说,我使用这种方法分发代码库的更新版本,而数据本身是在 ec2数据库服务器上管理的)。

希望能帮上忙。

对于 xfs 文件系统,只需运行这个命令 xfs_growfs /即可

您只需要首先创建它的快照,然后从该快照创建另一个卷,一旦新卷就绪,就将旧卷与实例分离,并附加新卷。确保在启动此进程之前停止实例,并在完成之后重新启动实例。

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

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

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

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

回答这个五年前的问题

AWS 刚刚发布了一个名为 弹性体积的新 EBS 特性,它允许您在使用卷时增加卷大小、调整性能或更改卷类型。

您可以在 AWS Blog 给你上阅读更多关于它的内容。

我们可以增加与新的 EBS 功能弹性卷的卷大小,后,我们需要遵循以下步骤来使用增加的大小。

假设你的容量是16G,你增加到32G。

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

要将 xvda1从16GB 扩展到32GB,我们需要 growpart.成长作为 云雾的一部分提供。

sudo apt install cloud-utils

在安装 cloud-utils 之后,执行 growth part 命令:

sudo growpart /dev/xvda 1
 

现在,伊斯布尔克,将显示:

$ 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 的最后一个命令是:

  • 对于 ext4文件系统:

    sudo resize2fs /dev/xvda1
    
  • 对于 XFS 文件系统:

    apt-get install xfsprogs
    sudo xfs_growfs /dev/xvda1