启动Amazon EC2 Linux实例时自动挂载EBS卷

use*_*494 42 amazon-ec2 amazon-ebs automount amazon-web-services

我有一个EBS卷(例如/dev/sdf)已连接到EC2实例(从不同的EBS卷启动),我已经安装了卷(通过mount /dev/sdf /data).当我停止并重新启动实例时,卷仍然连接但不再安装,我必须再次手动安装它.

有没有办法在启动实例时/dev/sdf自动挂载卷/data

chr*_*arx 31

似乎官方的ec2文档现在推荐使用nofail的普通旧fstab条目 -

/dev/xvdf       /data   ext4    defaults,nofail        0       2
Run Code Online (Sandbox Code Playgroud)

ref - http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html

  • ... Debian/Ubuntu用户要注意的事项:_Debian衍生产品,比如Ubuntu,还必须添加`nobootwait`挂载选项. (3认同)
  • `nobootwait` 在 ubuntu 16.04 中被删除 https://askubuntu.com/questions/786928/ubuntu-16-04-fstab-fails-with-nobootwait (2认同)

San*_*ngi 28

进入 /etc/fstab

参赛作品如下:

/dev/sdf    /data   ext3    defaults    1 1
Run Code Online (Sandbox Code Playgroud)

这将在重新引导期间自动安装卷.

  • 虽然这有效,但亚马逊支持此事的说法:_I我建议使用RC init脚本而不是为此目的使用fstab(对于EC2实例).如果fstab中列出的设备无法安装,那么这将暂停启动过程,您将无法进入实例.相反,使用RC脚本可能会发生"软故障",因此您仍然可以进入ssh然后修复问题._请参阅此处的完整主题:https://forums.aws.amazon.com/message.jspa ?MESSAGEID = 304528#304528 (31认同)
  • 两个世界中最好的 - 使用fstab条目但指定默认值,noauto告诉它不要在启动时自动挂载.然后使用rc脚本挂载文件系统.这解决了挂载失败停止启动的问题,并将驱动器挂载点保留在fstab中. (3认同)

Abd*_*BIB 8

我建议使用/ etc/init conf文件来执行此操作:

  • 用root登录
  • 创建一个新文件(不可执行)命名如下:mountec2vol.conf
  • 粘贴到这个代码:
# /etc/init/mountec2vol.conf
#
# description: Mounts the EBS Volume
#
start on net-device-up
exec mount /dev/xvdf1 /myVolume`
Run Code Online (Sandbox Code Playgroud)
  • 如果要测试,请重新启动

这就是你要做的一切!


小智 5

可证明的证据是官方文档

您需要一段代码,例如:

DEVICE=/dev/$(lsblk -rno NAME | awk 'FNR == 3 {print}')
MOUNT_POINT=/data/

cp /etc/fstab /etc/fstab.orig
UUID=$(blkid | grep $DEVICE | awk -F '\"' '{print $2}')
echo -e "UUID=$UUID     $MOUNT_POINT      xfs    defaults,nofail   0   2" >> /etc/fstab
umount /data
mount -a
Run Code Online (Sandbox Code Playgroud)

如果您要使用 Terraform 来启动实例、EBS 以及附加和安装,您可以使用我的AWS-EBS-Attach-Mount备忘单中的所有代码