问题:公司自建gitlab突然卡死 ,无法启动,启动后直接卡死虚拟机。
公司使用的是一个20c16g 的pc来做服务器。
安装了一个 windows,使用vm开linux虚拟机的方式来分配。
突然在没有断电的情况下,安装了gitlab虚拟机无法启动,直接卡死。
因为一直没有问题,也没有创建自动快照,因此没有备份,只能强行进去操作。
虚拟机能开,但是过一段时间会卡死。
这里就直接说原因了: gitlab使用的是docker安装,只要docker启动gitlab,启动后几分钟,就会卡死,ssh断开连接。vm软件直接卡死。
因此 首先开启虚拟机,关闭开机启动docker,停止gitlab容器。
说明 我们的gitlab文件是外挂出来了的
我用过的解决方法:
- 我想复制gitlab文件出来,结果复制中途,直接卡死,估计文件损坏之类。
- 是有修复软件,修复结果最后卡死
- 利用软件,把vmdk镜像copy出来,结果vmdk连文件都无法查看
- 快照镜像,然后试图启动,卡死
- 复制vm的文件,中途一个文件损坏。估计就是这个文件损坏导致无法启动gitlab,
- 因此选择其他的vmdk文件启动,可以启动,但是gitlab的代码是一年前的,不是最新的,因此只是恢复了部分。
- 新建虚拟机,选择报错的vmdk文件启动,然后进行 快照
- 企图启动gitlab 卡死
- 建立新的 gitlab容器 外挂地址选择 以前的地址,结果卡死(建立新的gitlab,外挂干净地址,是可以启动的)
- 拉取新版本的镜像,进行gitlab升级,同样挂在以前的地址,依然卡死。但是有所进步。
- 企图升级内核,来解决 依然卡死
最终解决方法 把外挂地址的 git-data 文件 和 postgresql文件 复制出来,新建一个虚拟机,把文件复制进去,新建一个gitlab容器,外挂地址选择这两个文件 ,内容恢复,就此完结。
这之前:复制这两个文件出来的时候没有卡死,说明不是他们两的问题,是其他gitlab文件的问题,其实当时我也删除所有gitlab-*的文件夹,但是还是卡死,所以才选择复制出来新建一个虚拟机测试。
中途我也看了很多关于 gitlab出错如何修复的解决方法。但是都没有用。毕竟别人只是出问题,而我的是卡死。估计是硬盘出问题了。中途还发生了硬盘无法识别,真是吓死人。
1 | cd gitlab/data |
后续:
建立定时快照
虚拟机 每周定时gitlab备份
1
2crontab -e
0 0 * * 0 docker exec -it gitlab gitlab-rake gitlab:backup:create
真的是安全第一啊。。。。
windows 自动重启和关机命令 别问我如何知道的(不知道电脑重启了几百次):
1 | shutdown -r -t 5 |
2020-9-8更新
用了一段时间发现居然不能webhook,ci等功能,然后经过一堆google,发现问题了。
(其实新的项目可以webhook,但是旧的以前用过webhook,就不能了因为key不一样了,因此理论你可以把所有项目重新创建一个新的,就可以了,但是这样太麻烦了)
正常的是gitlab-secrets.json 文件丢失,而我只是没有copy,所以我就把以前的gitlab-secrets.json复制过来了,就可以了。
如果真的丢失了。
官方回答:https://gitlab.com/gitlab-org/gitlab-foss/-/issues/57690
您是否进行了备份和还原?机密文件似乎不正确,并且加密的URL字段无法解密: