EC2挂载的EFS文件系统无法写入,配置权限策略后仍未生效如何解决?
EFS无法写入问题排查及ASG适配方案
无法写入的常见原因及修复
1. Linux本地文件权限问题(概率最高)
EFS挂载完成后默认根目录的所有者为root:root,权限为755,非root用户默认没有写入权限。可以先执行sudo touch /mnt/efs/fs1/test.txt验证root用户是否可写,如果可以写入即可确认是该问题。
修复方式二选一:
- 开放所有用户写入权限:
sudo chmod 777 /mnt/efs/fs1 - 赋予指定用户所有权(以Amazon Linux默认的ec2-user为例):
sudo chown ec2-user:ec2-user /mnt/efs/fs1
2. 挂载参数配置错误
检查挂载配置是否设置了只读参数:
- 查看/etc/fstab中的EFS挂载条目,确认没有
ro只读标记,正确配置示例:fs-02cdc4adbb7c75b71:/ /mnt/efs/fs1 efs defaults,_netdev 0 0 - 如果是手动临时挂载,检查挂载命令是否误加了
ro参数
3. EC2实例IAM角色权限缺失
你当前配置的EFS资源策略是正确的,但需要确认EC2实例绑定的IAM角色包含以下权限,且没有对应Deny规则:
{ "Effect": "Allow", "Action": [ "elasticfilesystem:ClientRootAccess", "elasticfilesystem:ClientWrite", "elasticfilesystem:ClientMount" ], "Resource": "arn:aws:elasticfilesystem:us-east-1:198516420706:file-system/fs-02cdc4adbb7c75b71" }
4. 安全组规则拦截
检查EFS挂载目标关联的安全组,是否允许EC2实例所在安全组的2049端口(NFS协议)入站访问,流量被拦截也会导致读写异常。
自动扩缩容组适配配置
要实现ASG新启动的实例自动挂载现有EFS,只需要在启动模板/启动配置的用户数据(User Data)中添加如下脚本即可:
#!/bin/bash # 安装efs-utils(非Amazon Linux系统需要执行,Amazon Linux2/2023默认已预装可跳过) # apt update && apt install -y amazon-efs-utils # Ubuntu系统执行 # yum install -y amazon-efs-utils # CentOS等RPM系系统执行 # 创建挂载目录 mkdir -p /mnt/efs/fs1 # 写入fstab配置实现开机自动挂载 echo "fs-02cdc4adbb7c75b71:/ /mnt/efs/fs1 efs defaults,_netdev 0 0" >> /etc/fstab mount -a # 统一配置挂载目录权限,避免新实例手动调整 chmod 777 /mnt/efs/fs1
内容的提问来源于stack exchange,提问作者Casey
相关产品推荐
相关产品推荐

