最近一次飞牛NAS系统更新后,我发现运行在Docker中的 GitLab CE 无法访问。
浏览器打开gitlab页面时,出现502访问错误。
进入容器检查gitlab状态,显示postgresql和redis都挂了。同时CPU持续发热严重,占用率90%+(容器不断地尝试读取和重启)。
最终确认是最近更新的windows ACL权限导致的该问题。
如何判断是不是同一个问题?
如果你的环境满足:
- 使用飞牛NAS(fnOS)
- Docker运行GitLab、数据库等服务
- 最近升级过NAS系统
- 更新内容涉及Windows ACL权限管理
- 容器突然出现权限错误
大概率和我一样中招了。
登录ssh,执行:
getfattr -d -m- 异常应用的文件路径
例如:
getfattr -d -m- /vol3/docker-appdata/gitlab/opt/postgresql/data/server.crt
如果看到系统ACL管控:
system.trim\_acl=xxxx
说明该文件被飞牛NAS添加了Windows ACL扩展权限。
如何解决问题?
注意:不建议没有动手能力的、数据没有备份的、多人共享数据的兄弟们执行以下操作。 弄坏了我不负责。
确保你拥有root权限
su root
删除整个目录的ACL:
find 你自己的待删除的目录 \
-exec sh -c 'setfattr -x system.trim_acl "$1" 2>/dev/null' _ {} \;
这个过程可能会比较耗时,取决于目录下子目录的数量。
随后,检查是否清理完成。执行:
getfattr -R -m system.trim_acl 你自己的待删除的目录
如果看不到 system.trim_acl,说明已经清理成功了。
随后,建议重启nas,让所有服务自然启动即可。