在Linux EC2实例中使用Cloud Formation自动挂载EBS卷?

6
编写了一个 CFT,用于创建连接了两个 EBS 卷的 Red Hat 实例。需要从 CFT 自身自动挂载或格式化 EBS 卷。
CFT:(指的是 CloudFormation 模板)
"BlockDeviceMappings": [
    {
        "DeviceName": "/dev/sda1",
        "Ebs": {
            "DeleteOnTermination": "true",
            "VolumeSize": "150",
            "VolumeType": "standard"
        }
    },
    {
        "DeviceName": "/dev/sdm",
        "Ebs": {
            "DeleteOnTermination": "true",
            "VolumeSize": "1000",
            "VolumeType": "standard"
        }
    }
]

需要自动挂载此卷:"DeviceName":"/dev/sdm"
2个回答

9

您需要在与此BlockDeviceMappings相关的实例或启动配置的UserData属性中添加一个小脚本。 UserData将在实例首次启动时执行。当实例使用/etc/fstab重新启动时,设备将自动被重新挂载。

    "UserData" : { "Fn::Base64" : { "Fn::Join" : [ "", [
      "#!/bin/bash -v\n",
      "mkfs -t ext4 /dev/xvdm\n",
      "mkfs -t ext4 /dev/xvda1\n",
      "mkdir /opt/mount1 /opt/mount2\n",
      "mount /dev/xvdm /opt/mount1\n",
      "mount /dev/xvda1 /opt/mount2\n",
      "echo \"/dev/xvdm /opt/mount1 ext4 defaults,nofail 0 2\" >> /etc/fstab\n"
      "echo \"/dev/xvda1 /opt/mount2 ext4 defaults,nofail 0 2\" >> /etc/fstab\n"
    ]]}}

更多信息: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html

3

我更喜欢以下方法,而不是在用户数据脚本中显式挂载:

"UserData" : { "Fn::Base64" : { "Fn::Join" : [ "", [
  "#!/bin/bash -v\n",
  "mkfs -t ext4 /dev/xvdm\n",
  "echo \"/dev/xvdm /opt/mount1 ext4 defaults,nofail 0 2\" >> /etc/fstab\n",
  "mount -a\n"
]]}}

"

mount -a

"会尝试挂载/etc/fstab中的所有条目,并依次验证之前的追加操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接