/ etc / fstab

时间:2016-07-07 16:23:03

标签: amazon-web-services automount

我正在尝试在AWS中使用弹性文件系统(EFS)...我的目标是使用/ etc / fstab自动安装它

由于EC2实例在可用区域之间自动扩展,因此EFS根据实例的区域安装IP的更改。目前AWS提供此命令将其安装到正确的区域......

sudo mount -t nfs4 -o nfsvers=4.1 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).fs-xxxx.efs.us-east-1.amazonaws.com:/ efs

但是,EFS DNS网址存在一些问题,我只能通过提供的EFS IP进行连接。所以我创建了一个bash脚本来获取与区域有关的正确IP ...

nano /efsmount.sh

#!/bin/sh

CURR_ZONE=$(/usr/bin/curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)

if [ "$CURR_ZONE" == "us-east-1e" ];then
    echo "172.xx.xx.xx"
fi
... more if statements to cover all zones

我可以使用此脚本挂载

sudo mount -t nfs4 -o nfsvers=4.1 $(/efsmount.sh):/ /efs

现在我的问题是......如何使用fstab自动挂载?

像这样的东西不起作用

$(/efsmount.sh):/  /efs   nfs      auto,noatime,nolock,bg,nfsvers=4.1,intr,tcp,actimeo=1800 0 0

由于

3 个答案:

答案 0 :(得分:1)

对我来说,当我手动停止并启动我的EC2实例时,使用fstab(作为亚马逊推荐)不起作用。这对我来说是自动化的原因 - 我需要一个灾难恢复方案的解决方案,冷启动和离线扩展时(例如,当手动将RAM添加到EC2实例时,你需要'停止'添加内存'然后启动它')。对我而言,这是有用的

 crontab -e

然后添加行

@reboot sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-123ddddd.efs.us-east-1.amazonaws.com:/ /data

答案 1 :(得分:0)

我能够在启动时使用init.d脚本自动挂载EFS。以下是我遵循的说明:http://www.archisoft.ca/ami/lemp/#setting-up-efs-with-auto-mounting

此init.d脚本在引导时启动并循环执行函数,直到网络可用,然后尽快安装EFS。

EFS在Web服务器启动之前就已经安装,因此NGINX Web服务器可以识别驻留在EFS中的站点目录而不会出现问题。

我认为这可能有助于某人!

答案 2 :(得分:0)

更新目前,EFS已允许您使用不依赖于可用区的通用URL(它始终指向正确的可用点)。

您只需要使用像这样的fstab条目:

'file-system-id'.efs.'aws-region'.amazonaws.com:/  /path/to/dir  nfs4  nfsvers=4.1  0  0

旧回复:

我在/etc/fstab中独立于可用区域安装EFS卷时遇到了同样的问题。

来自experoinc.com - Amazon’s Elastic File System: Kicking the Tires

  

最后,当机器重新启动时EFS消失并不好玩,因此请考虑将EFS安装添加到机器映像的/ etc / fstab中。不幸的是,每个可用区域有不同的挂载点,因此通常会像往常一样烘烤到每个区域的AMI。在配置脚本中配置以在引导时运行可能是明智的。

目前,我使用的解决方案是创建一个挂载帮助程序(/sbin/mount.efs-nfs4)并使用它来挂载我的EFS卷。

此助手的代码和说明在此Github Gist中:https://gist.github.com/rarylson/9095c56137a60a7fdb7bb2b420f0ad04

简而言之,使用它,您可以在/etc/fstab中添加这样的行,而无需在网址中指定可用区域并使用efs-nfs4"假的"文件系统类型:

'file-system-id'.efs.'aws-region'.amazonaws.com:/  /path/to/dir  efs-nfs4  nfsvers=4.1  0  0

然后跑步:

mount /path/to/dir

EFS文件系统也将在重新启动后的引导时挂载。