1

我使用 Apache Brooklyn 0.8.0-incubating 在 AWS 上使用以下蓝图创建 d2.xlarge 实例:

location: 
 jclouds:aws-ec2:
   region: eu-central-1
... 
provisioning.properties:
  imageId: eu-central-1/ami-7bcddf17 # Redhat 6.6
  hardwareId: d2.xlarge # with 2TB EBS

机器上只有 10GB 的总存储空间。经过一番研究,我发现 /dev/xvdb 下的实例卷未分区。

谁能解释我如何使用实例存储而不是在 AWS 上为机器创建新卷?

最好的问候,菲利克斯

4

1 回答 1

2

这是 AWS EC2 中虚拟机的预期行为。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/add-instance-store-volumes.html中所述:

"After you launch the instance, you must ensure that the instance
store volumes for your instance are formatted and mounted before you can use them. Note that the root
volume of an instance store-backed instance is mounted automatically."

"the instance type determines which instance store volumes are mounted for you and which are available for you to mount yourself"

对于您的实例类型,看起来实例存储卷未格式化。

EC2 文档讨论了运行lsblk、格式化和挂载实例存储卷mkfsmount

预期行为还取决于 AMI:“每个 AMI 都有一个块储存设备映射,指定从 AMI 启动实例时要附加到实例的块储存设备。亚马逊提供的 AMI 仅包括根设备。”

请注意,您在一个 AMI 上工作的内容可能不适用于所有其他 AMI(例如,由于不同的块储存设备映射)。坚持使用亚马逊自己的 AMI 通常是一个好主意,以获得合理的默认行为。


这可以在 Apache Brooklyn 中实现自动化。你有几个选择:

  • 在实体中实现它,例如,如果使用SoftwareProcess实体,那么您可以使用 config 键pre.install.command执行 bash 命令来设置卷。

  • 在该位置实施它。

    • 这可以使用 newMachineLocationCustomizer在机器上执行命令(然后在该位置进行配置)。

    • 或者,对于 jclouds 位置,您可以使用setup.script配置,该配置采用 shell 脚本的 URL 来执行。

在这些方法中,MachineLocationCustomizer为您提供了最大的功能和灵活性。

于 2016-03-08T11:18:28.860 回答