我有一个带有“实例存储”设备的EC2实例作为根设备。现在,我想将EBS卷附加到同一个实例,只是希望它成为根设备。那可能吗?在这种情况下,实例存储设备会发生什么?
发布于 2018-05-17 14:02:36
可以将正在运行的实例迁移到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
发布于 2018-05-17 15:22:09
这可以在不创建新的AMI并且不启动新的实例的情况下完成。完成后,原来的根卷保持连接在/ dev / sda1上。原始根卷不会被挂载到文件系统 - 需要通过“mount”命令自行完成。
该技术需要最新的Ubuntu内核,即在10.04和10.10版本中运行的内核。查看alestic.com以获取这些Ubuntu版本的最新AMI ID。这些最新的内核被配置为从卷标为“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调用
然后,以root身份运行reroot.sh脚本,并提供附加新根卷的设备,如下所示:
sudo reroot.sh /dev/sdp
然后你只需重新启动:
sudo shutdown -r now
要测试这个,你应该创建一个EBS卷,你知道会正确启动。我喜欢通过从上面提到的Ubuntu AMI中快照EBS支持的AMI的根卷来做到这一点:
cd
touch this-is-the-original-root-volume
然后,当重新启动时,如果该文件存在于主目录中,仍然使用原始根卷运行。如果它不在那里,那么重新启动和重新启动工作。
https://stackoverflow.com/questions/-100008514
复制相似问题