我正在执行一个实例来托pipe一个Cassandra节点,并且正在testing一些closures和启动脚本。 这个例子是从datastax PV AMI'ami-8932ccfe'发起的。 我为root添加了8GB的SSD EBS存储并启动了它。 在初始启动时,Instance Store(临时驱动器)被连接,一切都很好。 我停止了实例并重新启动它,并且实例存储库不见了,login时显示以下错误消息:
ERROR mount -a:
接下来,我终止了实例,重新启动了相同的AMI并进行了设置,然后创build了一个快照AMI,并在其中添加了实例存储以尝试将其“烘焙”到实例中。 然而,停下来开始,我得到同样的问题。
我的问题是,我只有权限停止和启动实例,我不能自己创build它们,所以我必须不停地打扰大学帮我启动它们。 我希望能够在一天结束时停止实例,并在早上再次启动,即在工作时间内降低成本。 有问题的服务器只是一个开发实例,所以我不担心数据丢失,所有我需要在启动时运行的是一些脚本来创build表。 但是,因为实例商店没有自动附加启动Cassandra不会安装。
任何人都可以告诉我如何创build一个实例,以便在停止和启动后自动连接实例存储?
在开始实例之后,我使用下面的代码获取一些元数据(如果有帮助的话):
curl http://169.254.169.254/latest/meta-data/block-device-mapping/ ami ephemeral0 root curl http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0 sdb
干杯,阿列克谢蓝。
每当实例停止时,实例存储卷都将被删除。 我不确定什么分配datastax正在运行,但正确的方法是创build一个init脚本,将会:
如果你不想制作一个init脚本来完成它,你可以在/etc/rc.local
插入一些行来实现。 就像是:
mount | awk '{print $3}' | grep -sq /mnt test $? && exit 0 curl -s http://169.254.169.254/latest/meta-data/block-device-mapping/ | grep -sq ephemeral0 test $? && DEV=`curl -s http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0` test -n "$DEV" && mkfs -t ext4 /dev/$DEV test $? && mount /dev/$DEV /mnt
这个脚本在rails上是非常多的,不能因为任何错误而偏离。 你可能想写一个更强大的。
@ dialtOne的脚本引导我进行一些新的研究,并在github上find了这个脚本 。
本质上,我的实例使用不同的设备模式约定xvdb
有一件事我不得不改变这个脚本是第62行:
mdadm --create --verbose /dev/md0 --level=0 -c256 --raid-devices=$ephemeral_count $drives
太多了:
mdadm --create --verbose /dev/md0 --level=0 -c256 --force --raid-devices=$ephemeral_count $drives
如果你的实例有一个像我这样的短暂驱动器,你必须使用--force
命令来运行。
剧本结束后,我很高兴看到这一点:
df -h ... /dev/md0 30G 173M 28G 1% /mnt
再次感谢您的回答@dialtOne。
干杯,阿列克谢蓝