减少 EC2 上“EBS 启动”AMI 的根磁盘大小

dar*_*tch 5 cloud hard-drive disk-space-utilization amazon-ami amazon-ec2

所以我在这里关注了 Eric 的精彩文章:http : //alestic.com/2009/12/ec2-ebs-boot-resize

这基本上是帮助我增加AMI 的默认大小的代码:

 ec2-run-sintances ami-ID -n 1 --key keypair.pem --block-device-mapping "/dev/sda1=:250"
Run Code Online (Sandbox Code Playgroud)

运行 Ubuntu 11.10 之后我什至不需要重新调整磁盘大小,它立即是一个 250GB 的驱动器。

如何减小 AMI 的默认大小???

我试过:

 ec2-run-sintances ami-ID -n 1 --key keypair.pem --block-device-mapping "/dev/sda1=:100"
Run Code Online (Sandbox Code Playgroud)

显然……但有人告诉我:

Client.InvalidBlockDeviceMapping:大小为 100GB 的卷小于快照 ####### <250>

cyb*_*x86 13

我减少 EBS 根卷的方法如下:

停止(而不是终止)目标实例,并分离根 EBS 卷。或者,您可以快照根卷(或使用现有快照)并从中创建新的 EBS 卷。(例如 /dev/xvda1)

注意:您在上述步骤中使用的卷将被更改 - 因此,如果您还没有拍摄快照,则可能需要拍摄快照。

  1. 创建一个所需大小的新 EBS 卷(例如 /dev/xvdg)
  2. 启动一个实例,并将两个 EBS 卷附加到它

  3. 检查文件系统(原始根卷的):(例如) e2fsck -f /dev/xvda1

  4. 最大限度地缩小原始根卷:(例如 ext2/3/4) resize2fs -M -p /dev/xvda1

  5. 用 dd 复制数据:

    1. 选择块大小(我喜欢 16MB)
    2. 计算块数(使用 resize2fs 输出中的块数): blocks*4/(chunk_size_in_mb*1024) - round up a bit for safety

    3. 复制数据:(例如) dd if=/dev/xvda1 ibs=16M of=/dev/xvdg obs=16M count=80

  6. 在新的(较小的)EBS 卷上调整文件系统的大小:(例如) resize2fs -p /dev/xvdg

  7. 检查文件系统(原始根卷的):(例如) e2fsck -f /dev/xvdg

  8. 分离您的新 EBS 根卷,并将其附加到您的原始实例


Eri*_*ond 6

减小大小的最佳方法是创建一个空的新(小)卷并从旧(大)卷复制文件系统。

EBS 启动 AMI 基于快照。如果您拥有 AMI,那么您可以从快照创建一个卷来复制它。将两个卷附加到正在运行的副本实例。

我在 Ubuntu 上最喜欢的 rsync 选项是:

rsync -PaSHAX /bigvol/ /smallvol/
Run Code Online (Sandbox Code Playgroud)

这些选项会保留所有权、权限、链接等内容。

分离卷并创建新的较小卷的快照。

将新的(小)快照注册为 AMI,确保指定与原始 AMI 相同的架构和 AKI(内核)。