因此我关注了 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"
运行 Ubuntu 11.10 时我甚至不需要重新调整磁盘大小,它立即就变成了 250GB 的驱动器。
我该如何减少 AMI 的默认大小???
我试过:
ec2-run-sintances ami-ID -n 1 --key keypair.pem --block-device-mapping "/dev/sda1=:100"
显然...但我被告知:
Client.InvalidBlockDeviceMapping:大小为 100GB 的卷小于快照 ####### <250>
答案1
减少尺寸的最佳方法是创建一个空的新(小)卷并从旧(大)卷复制文件系统。
EBS 启动 AMI 基于快照。如果您拥有 AMI,则可以从快照创建卷以进行复制。将两个卷都附加到正在运行的实例以进行复制。
我在 Ubuntu 上最喜欢的 rsync 选项是:
rsync -PaSHAX /bigvol/ /smallvol/
这些选项保留所有权、权限、链接等内容。
分离卷并创建新的较小卷的快照。
将新的(小)快照注册为 AMI,确保指定与原始 AMI 相同的架构和 AKI(内核)。
答案2
我采取的减少 EBS 根卷的方法如下:
停止(而不是终止)目标实例,并分离根 EBS 卷。或者,您可以对根卷进行快照(或使用现有快照)并从中创建新的 EBS 卷。(例如 /dev/xvda1)
注意:您在上述步骤中使用的卷将被更改 - 因此,如果您还没有拍摄快照,则可能需要拍摄快照。
创建所需大小的新 EBS 卷(例如 /dev/xvdg)
启动一个实例,并将两个 EBS 卷附加到该实例
检查文件系统(原始根卷):(例如)
e2fsck -f /dev/xvda1
最大限度地缩小原始根卷: (例如 ext2/3/4)
resize2fs -M -p /dev/xvda1
使用 dd 复制数据:
选择块大小(我喜欢 16MB)
计算块的数量(使用来自 resize2fs 输出的块数):
blocks*4/(chunk_size_in_mb*1024) - round up a bit for safety
复制数据:(例如)
dd if=/dev/xvda1 ibs=16M of=/dev/xvdg obs=16M count=80
调整新的(较小的)EBS 卷上的文件系统大小:(例如)
resize2fs -p /dev/xvdg
检查文件系统(新的根卷):(例如)
e2fsck -f /dev/xvdg
分离新的 EBS 根卷,并将其附加到原始实例