为什么我的 Amazon EFS 文件系统为只读?

上次更新时间:2021 年 2 月 1 日

我的 Amazon Elastic File System (Amazon EFS) 文件系统可用,并且正确挂载在我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上,但我无法写入它。如何解决此问题?

简短描述

下面是阻止您写入文件系统的两种常见问题:

  • /etc/fstab 文件中的挂载选项设置为只读访问权限。
  • 关联的 AWS Identity and Access Management (IAM) 策略指示只读访问权限,或者根访问权限被禁用。

解决方法

注意:此解决方法使用 Amazon EFS 挂载帮助程序。Amazon EFS 挂载帮助程序已预安装在 Amazon Linux 上。如果您使用的是其他分发,请参阅在其他 Linux 分发上安装 amazon-efs-utils 软件包

验证 /etc/fstab 文件中的挂载选项正确无误

1.    运行以下命令以检查文件系统的当前挂载选项:

$ mount -t nfs4

在以下示例输出中,变量 ro 表示文件系统当前允许只读访问。

file-system-id.efs.region.amazonaws.com:/ on /efs type nfs4 (ro,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.0.2.0,local_lock=none,addr=192.0.0.0)

2.    使用 vi 之类的编辑工具将 /etc/fstab 文件中的挂载参数更改为 rw(读/写访问):

注意:file-system-id 替换为您的文件系统的 ID。

file-system-id:/ efs-mount-point efs rw,_netdev 0 0

3.    运行以下命令以卸载并重新挂载文件系统。

$ sudo mount -o remount,rw /efs -t efs && mount -t nfs4
file-system-id.efs.region.amazonaws.com:/ on /efs type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=190.0.2.0,local_lock=none,addr=190.0.2.0)

4.    在文件系统中创建或编辑文件以确认您可以写入该文件系统。

验证权限设置正确

1.    打开 Amazon EFS 控制台

注意:请确保您与 Amazon EFS 文件系统处于同一个区域中。

2.    选择要检查的文件系统,然后选择 View details(查看详细信息)

3.    在 File system policy(文件系统策略)选项卡上,选择 Edit(编辑)。

4.    如果已选中了以下选项,请取消选择:
Prevent root access by default(默认情况下阻止根访问)
Enforce read-only access by default(默认情况下强制实施只读访问)

5.    选择 Set policy(设置策略)

6.    选择 Save policy(保存策略)

7.    运行 umount 命令卸载文件系统。

$ sudo umount /efs

8.    运行 mount 命令重新挂载文件系统以应用更改。

注意:file-system-id 替换为您的文件系统的 ID。

$ sudo mount -t efs -o iam fs-file-system-id /efs

9.    使用 vi 之类的编辑工具将以下行添加到 /etc/fstab,以使新挂载在重新启动后持久有效:

使用 IAM 授权对拥有实例配置文件的实例进行挂载:

file-system-id:/ efs-mount-point efs _netdev,iam 0 0

使用 IAM 授权对使用凭证文件的 Linux 实例进行挂载:

file-system-id:/ efs-mount-point efs _netdev,iam,awsprofile=namedprofile 0 0

使用 EFS 接入点挂载:

file-system-id efs-mount-point efs _netdev,accesspoint=access-point-id 0 0

有关更多信息,请参阅使用 /etc/fstab 自动挂载

10.    在文件系统中创建或编辑文件以确认您可以写入该文件系统。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?