![](/img/trans.png)
[英]Amazon EC2 - Convert EBS root device with instance store root device
[英]Amazon EC2 - Swap root instance store device with EBS device
我有一个EC2实例,其中“实例存储”设备作为根设备。 现在,我想将EBS卷附加到同一个实例,只是我希望它成为根设备。 那可能吗? 在这种情况下,实例存储设备会发生什么?
提前致谢
您可以将正在运行的实例迁移到EBS支持的AMI。 我是这样做的:
dd bs = 65536 if = / dev / sda1 = / dev / sdd
fsck / dev / sdd
mount / dev / sdd / root / ebs-vol
vim / root / ebs-vol / etc / fstab
umount / dev / sdd
ec2-register -s snap-12345 -a i386 -d“AMI描述”-n“图像名称”-k aki-12345 -r ari-12345
ec2-run-instances ami-54321 -t m1.small -n 1 -g default --availability-zone = eu-west-1a -k ec2-key1 -b / dev / sda1 = snap-12345:20:false
resize2fs / dev / sda1
这可以在不创建新AMI且不启动新实例的情况下完成。 完成后,原始根卷保持附加在/ dev / sda1(或最初安装的位置./ dev / sda1是许多AMI的默认值)。 原始根卷不会安装到文件系统 - 您需要通过“mount”命令自行完成。
该技术需要最近的Ubuntu内核,即在10.04和10.10版本中运行的内核。 查看alestic.com了解这些Ubuntu版本的最新AMI ID。 这些最新的内核配置为从卷标为“uec-rootfs”的任何连接设备引导。 如果您正在运行其中一个内核,则只需将当前(实例存储)根卷的卷标更改为其他内容,将新根的卷标更改为uec-rootfs,然后重新启动。 如果您没有运行其中一个内核,则无法使用此技术。
这是代码。 将它放在实例上的文件(reroot.sh)中:
#! /bin/bash
device=$1
# change the filesystem labels
e2label /dev/sda1 old-uec-rootfs
e2label $device uec-rootfs
首先,您要将要作为新根的EBS卷附加到其中一个可用设备/dev/sdf../dev/sdp。 这可以通过直接EC2 API调用,使用EC2命令行API工具 (ec2-attach-volume),或使用诸如boto之类的库,或通过AWS管理控制台UI完成。
然后,以root身份运行reroot.sh脚本,并为您添加新根卷的设备,如下所示:
sudo reroot.sh /dev/sdp
这将做脏事。 然后你只需重启:
sudo shutdown -r now
中提琴。
要测试这个,您应该创建一个您知道将正确启动的EBS卷。 我喜欢通过从上面提到的Ubuntu AMI快照EBS支持的AMI的根卷来做到这一点。 从该快照,您可以在任何可用区中创建新的可引导EBS卷。 确保您可以区分正在运行的实例的原始根卷和新的EBS根卷 - 在运行上面的reroot过程之前,您可以在旧的根卷上放入“marker”文件:
cd
touch this-is-the-original-root-volume
然后,当您重新启动并重新启动时,如果您的主目录中存在该文件,那么您仍然使用原始根卷运行。 如果它不在那里,那么reroot-and-reboot工作。
以下是此技术的两个示例用例,并提供了详尽的解释:
http://shlomoswidler.com/2011/02/play-chicken-with-spot-instances.html
http://shlomoswidler.com/2011/02/recapture-unused-ec2-minutes.html
您还可以尝试使用以下工具将实例存储AMI转换为ebs-boot AMI: https : //cloudyscripts.com/tool/show/2
AlexM
提出了很好的步骤。
您还可以查看以下链接: http : //coderslike.us/2009/12/07/amazon-ec2-boot-from-ebs-and-ami-conversion/
编辑:另一个链接: http : //www.elastician.com/2009/12/creating-ebs-backed-ami-from-s3-backed.html
我不确定转换现有实例有多容易,但亚马逊现在提供了在创建新实例时直接从EBS卷启动的功能 。
代替这里的其他长评论,我使用以下命令来执行此操作:
ec2-register --snapshot snap-9eb4ecf6 --architecture i386 --name“Zenoss Enterprise 3.0 beta 2 on centOS”--description“这是安装zenoss核心beta 1和zenoss企业beta 2,两者都是3.0版(或者内部2.5.70 217)。连接了一个ebs块设备,并且文件系统已经过了,然后ebs被快照,这是基于它的。“ --root-device-name / dev / sda1 --kernel aki-9b00e5f2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.