简短的问题:我怎么知道一个实例是否有附加的临时存储? 我是否必须在Linux上使用“lsblk”来查看挂载?
由于临时存储在实例停止时会丢失,因此您需要知道临时驱动器是否已连接。 首先要检查的是实例的“根设备types”,如果它是EBS,则不必担心丢失数据(除非EBS卷设置为“终止时删除”)。 但是,如果是“实例存储”,实例启动时将丢失该驱动器上的数据。 然后查看“根设备”和“块设备”,看看它们是否都与EBS卷相关联。 这很容易。 在什么地方变得浑浊,是当你将一个短暂的驱动器附加到一个实例(在启动时),但是控制台并不像它为一个额外的EBS卷那样表示。 此外,您可能需要自行手动安装驱动器…如何轻松地从AWS控制台得知是否连接了临时驱动器?
不是你想听到的答案,但是你不能从控制台上说出这个答案。 正如你所指出的,有两件事情需要发生的数据写入临时驱动器
1)你需要真正安装这个开发。 没有办法从控制台告诉任何开发者2)你需要通过在AMI中的块映射将该开发暴露给实例。
您可以假设大多数(但不是全部)公共AMI将映射所有可能的临时驱动器(尽管hi1.8xl有24个这样的驱动器),因此您只需检查实例类型实际上是否支持临时驱动器许多不。
如果希望避免使用临时驱动器,则应将部署限制为已创建的AMI,并从块设备映射中删除任何临时驱动器。
在任何ec2实例上,您都可以调用http服务来查询实例详细信息,例如查看附加的块设备映射:
curl http://169.254.169.254/latest/meta-data/block-device-mapping/
查看有关特定设备的详细信息:
curl http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral2
你会得到这个设备的映射,例如: /dev/xvdb
看看/etc/cloud/cloud.cfg – 临时应该在那里列出,如:
mounts: - [ ephemeral0, /media/ephemeral0, auto, "defaults" ] - [ swap, none, swap, sw, "0", "0" ]
然后在fstab你应该看到一个条目,如:
/dev/sda2 /media/ephemeral0 auto defaults,comment=cloudconfig 0 2