在EC2实例上自动安装EFS

时间:2018-09-28 15:02:50

标签: amazon-web-services amazon-ec2 autoscaling efs aws-elasticfilesystem

我创建了一个EC2实例和一个EFS,并且能够在该实例上正确安装EFS。

如果服务器重新引导,我需要自动安装。

根据documentation,我在/etc/fstab

中执行以下操作
fs-xxxxxxxx:/ /mnt/efs efs defaults,_netdev 0 0

使用EFS文件系统ID代替xxxxxxxx

但是当我重新启动服务器时,EFS没有挂载,我保存以重新挂载

我该怎么办?还是我想念东西

4 个答案:

答案 0 :(得分:5)

我将在此处发布更详细的解决方案,因为该线程似乎显示在搜索引擎相关查询的顶部附近。

有两种安装Amazon EFS的方法:“ Amazon EFS安装帮助器”( amazon-efs-utils )和“ NFS客户端”( nfs-utils

以下示例显示了如何使用每种方法手动和自动安装。在使用之前,将文本 [value] 替换为您自己的值。

===============

要手动使用“ Amazon EFS挂载帮助器”进行挂载,请发出以下命令格式:

sudo mount -t efs [fs-XXXXXXXX]:/ /path/to/mount/dir

=====

要自动使用“ Amazon EFS挂载助手”进行挂载,请将以下行插入/ etc / fstab

[fs-XXXXXXXX]:/ /path/to/mount/dir efs defaults,_netdev 0 0

=====

要手动安装“ NFS客户端”,请发出以下两种命令格式之一:

在单击以在EFS Web控制台下查看有问题的弹性文件系统ID时,请使用“ Amazon EC2安装指令(来自本地VPC)”中给出的命令指令。

sudo mount -t nfs4 -o nfsvers=4.1,rsize=XXXXXXX,wsize=XXXXXXX,hard,timeo=XXX,retrans=X,noresvport [fs-XXXXXXXX].efs.[REGION].amazonaws.com:/ /path/to/mount/dir

OR

sudo mount -t nfs4 -o defaults,_netdev [fs-XXXXXXXX].efs.[REGION].amazonaws.com:/ /path/to/mount/dir

=====

要自动安装“ NFS客户端”,请将以下行插入/ etc / fstab

[fs-XXXXXXXX].efs.[REGION].amazonaws.com:/ /path/to/mount/dir nfs4 defaults,_netdev 0 0

===============

鉴于上述示例格式,您注意到问题了吗?

考虑,您已经安装了“ Amazon EFS挂载帮助器”,但是根据您在第一条评论回复中发布的手动挂载命令格式(而不是开头的帖子),您实际上只有“ NFS”客户”安装在您的系统上。您正在/ etc / fstab中使用“ Amazon EFS挂载帮助器”格式自动挂载,但是对您有用的手动挂载命令是“ NFS客户端”格式。由于您的系统未安装“ Amazon EFS挂载助手”,因此它无法理解/ etc / fstab中的自动挂载格式,因此自动挂载对您不起作用。

您上面发布的对您有用的手动安装命令仅适用于“ NFS客户端”,而不适用于“ Amazon EFS安装帮助器”。

mount -t nfs4 -o nfsvers = 4.1 ...

请注意,上面的-t参数是nfs4,它是“ NFS客户端”的格式。如果您使用的是“ Amazon EFS挂载助手”,则-t参数应为efs

要解决此问题,您可以使用Amazon EFS挂载助手( amazon-efs-utils )或NFS客户端( nfs-utils ),但是命令格式(在CLI或/ etc / fstab中),并且所使用的安装客户端应保持一致。

换句话说:

CLI和/ etc / fstab中的

“ Amazon EFS挂载助手” <=> efs

CLI和/ etc / fstab中的

“ NFS客户端” <=> nfs4

===============

安装客户端软件的安装说明:

=====

如果要使用“ Amazon EFS挂载帮助器”,请按照以下针对Amazon Linux和其他发行版的安装说明进行操作:

https://docs.aws.amazon.com/efs/latest/ug/using-amazon-efs-utils.html

=====

如果要使用“ NFS客户端”,请在EC2实例上使用以下安装说明:

在Red Hat Enterprise Linux或SUSE Linux实例(包括Amazon Linux)上,使用以下命令:

sudo yum install -y nfs-utils

在Ubuntu实例上,使用以下命令:

sudo apt-get install nfs-common

=====

一旦安装了安装客户端软件,请使用上面发布的相应安装说明。

答案 1 :(得分:0)

为了使用efs文件系统类型,我相信您需要安装amazon-efs-utils软件包。这将安装其他依赖项。

答案 2 :(得分:0)

要使用NFS4解决此问题,请按照以下说明进行操作:

在您的AWS账户上,注意以下事项:

1)转到EFS管理屏幕,您应该在EFS_WHATEVER ...旁边有一个小三角形,单击向下以展开。

2)注意,在屏幕中间有一个“ DNS名称”,它会显示类似“ fs-1234567c.efs.us-west-1.amazonaws.com”的内容,请注意,是您稍后将使用的安装点。

3)默认情况下,如果您刚刚创建了新实例,则必须允许服务器看到它,由于防火墙阻止了您的连接,因此尝试连接将冻结。允许向下滚动直到看到安全组,这就像sg-abcdef

4)进入EC2服务器,选择要其访问EFS的服务器,然后单击其“安全组”,它将带您进入安全组管理屏幕,记下其安全组ID(这是sg-12345)

4)现在,清除VPC管理屏幕的筛选器以查看所有SG ...

5)输入您的EFS安全组(即sg-abcdef),然后单击搜索按钮,这将弹出EFS ACL

6)单击“入站规则”->“编辑”。

7)单击“添加”,然后从列表中选择“ EFS”,输入服务器的SG(即sg-12345),并根据需要将其描述为“服务器XXX访问权限”。

8)现在服务器应该可以看到EFS挂载了,

9)进入您的服务器并通过以ROOT身份运行来安装必要的组件:

apt-get install nfs-common

10)现在,要测试MOUNT,请创建一个新目录...类似于:mkdir / mnt / heider

11)使用以下命令挂载FS:

mount -t nfs4 -o nfsvers = 4.1,rsize = 1048576,wsize = 1048576,hard,timeo = 600,retrans = 2,noresvport fs-1234567c.efs.us-west-1.amazonaws.com:/ / mnt / heider

请注意,如上所述,您的fs-12345c .....来自您的DNS名称。

12)如果这项工作很好,请转到下一步,否则请修改以上内容以查看是否遗漏了任何内容。

13)现在要自动安装它,您需要:

14)编辑/ etc / fstab

15)添加以下内容:

fs-1234567c.efs.us-west-1.amazonaws.com:/ / mnt / heider nfs4默认值,_netdev 0 0

16)保存文件并退出

17)在Linux命令shell中输入: 挂载-a

这将测试安装,如果安装成功,那么重新启动会自动安装。

18)这将自动安装。

19)重新启动以进行测试,所有内容均应存在。

我希望这会有所帮助。

答案 3 :(得分:-1)

遇到此问题的任何人

代替

masterseq

使用

fs-xxxxxxxx:/ /mnt/efs efs defaults,_netdev 0 0

这对我来说很好,它会自动挂载在新创建的实例上