【问题标题】:Amazon OpsWorks not mounting EBS volumes after instance reboot?Amazon OpsWorks 在实例重启后没有挂载 EBS 卷?
【发布时间】:2014-04-15 10:13:37
【问题描述】:

我已经配置了一个 OpsWorks 堆栈并设置了我的层,以便将一个 50 GB 的卷附加到我启动的每个实例。

一个新的 EBS 卷被正确地创建、附加并挂载到新启动的实例。这是我在第一次启动后立即看到的:

[root@biscotti ec2-user]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.9G  1.9G  5.9G  25% /
tmpfs           298M     0  298M   0% /dev/shm
/dev/xvdi        50G   33M   50G   1% /srv/www          <---------
[root@biscotti ec2-user]# mount
/dev/xvda1 on / type ext4 (rw,noatime)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/xvdi on /srv/www type xfs (rw,noatime)             <---------

但是,如果我重新启动实例,该卷将不会自动重新挂载:

[root@biscotti ec2-user]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.9G  1.9G  5.9G  25% /
tmpfs           298M     0  298M   0% /dev/shm
[root@biscotti ec2-user]# mount
/dev/xvda1 on / type ext4 (rw,noatime)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

如果我输入

sudo mount -a

一切都会恢复正常:

[root@biscotti ec2-user]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.9G  1.9G  5.9G  25% /
tmpfs           298M     0  298M   0% /dev/shm
/dev/xvdi        50G   33M   50G   1% /srv/www
[root@biscotti ec2-user]# mount
/dev/xvda1 on / type ext4 (rw,noatime)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/xvdi on /srv/www type xfs (rw,noatime)

如何让 OpsWorks 为我自动重新挂载 EBS 卷?

提前致谢。

【问题讨论】:

  • 您是否将卷添加到 /etc/fstab?如果 mount -a 有效,那么我猜是的,但是应该在重新启动期间安装它。

标签: amazon-web-services aws-opsworks


【解决方案1】:

我向 AWS 支持提出了问题,结果证明是 OpsWorks 的问题。要重现该错误,一件关键的事情是我通过在命令行上键入sudo reboot 来重新启动实例。如果我改为通过 API 或 AWS 控制台停止并重新启动实例,则该卷将正确安装。从字面上引用 AWS 支持:

OpsWorks 是一项非常程序化的服务。如果可能的话,它喜欢在没有人工干预的情况下管理自己的资源。也许手动重新启动操作系统会覆盖 OpsWorks 进程的某些部分。

有人告诉我 OpsWorksdev 团队正在解决这个问题。也可以通过使用自定义 Chef 配方将 auto 选项添加到 /etc/fstab 文件中的 EBS 设备来解决此问题。

我希望这会帮助那些遇到同样问题的人。

【讨论】:

    【解决方案2】:

    我们不得不使用的一种解决方法是自定义 opsworks_initial_setup 说明书 (original) 的默认属性。

    使用以下customize.rb:

    default[:opsworks_initial_setup][:bind_mounts][:mounts] = {}
    

    当然,亚马逊的建议是使用symlink

    【讨论】: