修改GitLab-CE容器镜像仓库存储路径后503错误排查求助
你的问题大概率是外置SSD路径的权限或挂载问题,按以下步骤逐一排查:
先查路径权限与归属
Omnibus GitLab的Registry服务以git用户运行,新的存储路径必须让这个用户拥有读写权限。执行以下命令检查:ls -ld /path/to/registry/storage输出的所有者和组必须是
git git,权限至少是drwxr-xr-x(755)。如果不符,执行:chown -R git:git /path/to/registry/storage chmod -R 755 /path/to/registry/storage之后重新执行
gitlab-ctl reconfigure和gitlab-ctl restart registry。确认SSD挂载状态
先检查SSD是否正常挂载:mount | grep /path/to/registry/storage如果没有输出,说明fstab配置有问题(比如UUID写错、文件系统损坏)。可以先手动挂载测试:
mount /path/to/registry/storage看是否报错,若有错误用
fsck检查SSD文件系统完整性。另外,挂载选项避免用noexec/nodev这类可能限制服务运行的参数,优先用defaults。查看Registry日志找具体报错
直接拉取Registry的实时日志:gitlab-ctl tail registry里面会明确给出错误原因——比如权限不足无法写入、路径不存在、存储初始化失败等,这是最快定位问题的方法。
验证配置是否生效
检查Registry的实际配置文件:cat /var/opt/gitlab/registry/config.yml | grep rootdirectory确认
rootdirectory的值是你设置的新路径。如果不是,说明gitlab.rb里的配置写错了(比如引号缺失、路径拼写错误),修正后重新执行gitlab-ctl reconfigure。手动测试路径可访问性
切换到git用户,尝试在新路径下创建文件:su - git touch /path/to/registry/storage/test_file如果提示权限不足,直接回到第一步修正权限;如果提示路径不存在,检查挂载或路径拼写。
另外提醒:修改存储路径后,旧镜像不会自动迁移到新SSD。如果需要保留旧镜像,先停掉Registry服务,把旧路径(/var/opt/gitlab/gitlab-rails/shared/registry)的文件完整复制到新路径,再启动服务。
内容的提问来源于stack exchange,提问作者crblake

