使用腻子将 EFS 安装在 red hat ec2 实例上时无法解析 EFS 的 DNS 名称

Can't resolve DNS name of EFS while mounting it on red hat ec2 instances using putty

我遇到无法使用 DNS 名称将 EFS 安装到 red hat ec2 实例上的问题。它抛出错误

mount.nfs4: Failed to resolve server us-east-1a.fs-c2aXXXX.efs.us-east-1.amazon
aws.com: Name or service not known

我正在按照 AWS 提供的说明进行操作。我尝试了以下两种方法来做到这一点,并且都抛出相同的上述错误。我可以确认 DNS 名称是正确的。

第一名:

mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-c2aXXXX.efs.us-east-1.amazonaws.com:/ efs

第二名:

mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone).fs-c2a7XXXX.efs.us-east-1.amazonaws.com:/ /efs

但是,如果我使用 IP 而不是 DNS 名称,我就可以很好地挂载它。所以下面的命令有效。

mount -t nfs4 -o 
nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 10.38.X.XX:/ /efs

只要我能够挂载它,我就可以使用 IP 而不是 DNS。

现在我的问题是,一旦我停止并再次启动实例,我的坐骑就不见了。即使在我将以下条目添加到 /etc/fstab 后,它也不会自动挂载。

10.38.X.XXX:/ /efs efs defaults,_netdev 0 0

谁能帮我解决 DNS 问题或告诉我如何使用 IP 自动挂载?

要从命令行附加到 EFS,请使用它作为模板,将 fs-12345678 替换为您的 ID:

$ sudo mount -t efs fs-12345678:/ /efs

在您的 /etc/fstab 中使用它(不要在其后添加 .efs.us-east-1.amazonaws.com

fs-12345678:/ /efs efs vers=4.1,rw,tls,_netdev,relatime,acl,nofail 0 0

fstab版本还开启了数据传输加密。查看资源以获取更多信息

资源

https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html https://docs.aws.amazon.com/efs/latest/ug/troubleshooting-efs-mounting.html#automount-fails

新的 efs-utils dns 似乎有问题。一种解决方法是挂载选定的可用区挂载目标 (this is probably still in development)。

为了解决这个问题,我尝试像这样在 /etc/hosts 文件中添加 efs 条目;

[efs-az-private-ip] [efs hostname (e.g;fs-xx.efs.us-east-1.amazonaws.com)]

如果您已经打开了所有的安全组、网络ACL,确认您在一个有效的AZ中,但仍然无法正常工作;您创建的 VPC 可能没有启用 DNS 主机名,请验证您是否具有此设置:

您的帐户附带的默认 VPC 启用了此功能,其他人没有。