前言
真是无巧不成书,白天刚刚讨论了一天SVN
服务器迁移事情,晚上突然被告知 gitlab
服务无法访问了,赶紧连接到服务器上查看,好家伙,磁盘还剩下可怜的 98K
,SVN
不管了,先把 gitlab
搞定吧,毕竟第二天的游戏更新包都打不出来了,确认是磁盘不足问题后已经是9点半了,月亮都升起老高了,赶紧开始修复吧。
修复过程
关于修复过程,网上有很多文章写了具体的步骤,都非常的相似,基本来自于官方文档的翻译,不过抄来抄去的内容产生了一些错误,甚至是在关键的步骤上出错,所以在看这些文章是要特别注意,如果你的英文还不错的话,建议看一下官方文档
为了记录过程我也不免俗套的把这些步骤写一写,方便日后拿来即用,关于每步的作用我会进行简述,并且提一下注意事项。
总体步骤:在配置文件中把存放数据的路径改一个新目录,把原数据移动到新的目录,重启gitlab服务即可
备份数据
虽然只是做数据迁移,不涉及切换物理机,也不会更换服务版本,但是为了保险起见,还是先把数据备份一份,现在遇到的问题是 gitlab
是默认安装的,数据存放在 /var/opt/gitlab/git-data
目录下,仓库存放在子目录 repositories
里面,这个目录一般空间都不大,很容易出现磁盘满的情况,目录结构如下:
1 | git-data |
真正的仓库数据就在 @hashed
目录下众多子目录下,再往下走就是一个个 .git
目录了,结构与我们本地的 .git
目录一致。
备份的命令需要记录一下:
1 | gitlab-rake gitlab:backup:create |
备份的路径可以在配置文件 /etc/gitlab/gitlab.rb
中修改:
1 | [root@code-server ~]# vim /etc/gitlab/gitlab.rb |
备份从21:30开始一直到凌晨1点左右结束,200G
数据用时3个半小时,真是太慢了,大部分的时间都卡在备份了 Dumping lfs objects
了
1 | [root@gitlab-server ~]# gitlab-rake gitlab:backup:create |
修改存放目录
这一步注意创建新目录后修改权限,并修改配置文件
1 | [root@gitlab ~]# mkdir -p /data/gitlab-data |
/data/gitlab-data
是新挂载的目录,目标路径和其子路径必须不能为软链接。
关闭服务
迁移数据前关闭服务主要是怕别人再使用,其实已经凌晨应该没有人用了,为了保险起见还是先关了吧
1 | gitlab-ctl stop |
关闭时会自动关闭多个服务项
1 | [root@gitlab-server gitlab]# gitlab-ctl stop |
迁移数据
1 | rsync -av /var/opt/gitlab/git-data/repositories /data/gitlab-data/ |
末尾的/
要有,这一点很多文章都提到了,但是它们给的例子中有没有,很容易造成迷惑,这一步其实就是把 repositories
完整的拷贝到 /data/gitlab-data/
目录下,并保留原文件和目录的属性,不加 /
就少了一级目录,不过也有文章让使用 cp
或者 mv
命令迁移数据,虽然也能达到目的,但是不如 rsync
合适,他们无法保留原属性。
200G 数据拷贝了半小时,比备份操作快多了
刷新配置
1 | gitlab-ctl reconfigure |
这一步我在执行前以为瞬间就能完成,运行后才发现这个命令检查了很多数据,在控制台输出了一大堆内容,可以注意一下有没有报错信息。
启动服务
1 | gitlab-ctl start |
启动之后需要等大概一分钟才能访问,否则会报服务器内部错误,应该是有些服务还没完全开始工作吧
1 | [root@gitlab-server gitlab]# gitlab-ctl start |
总结
gitlab
服务器配置文件是/etc/gitlab/gitlab.rb
gitlab
配置文中设置备份目录gitlab_rails['manage_backup_path']
,存储目录git_data_dirs
gitlab-rake gitlab:backup:create
用于备份gitlab
关闭组件gitlab-ctl stop
,开启组件gitlab-ctl start
,重启组件gitlab-ctl restart
gitlab-ctl reconfigure
用于刷新配置gitlab
迁移数据命令rsync -av /var/opt/gitlab/git-data/repositories /data/gitlab-data/
曾经幅员辽阔,东征西讨的元朝占据了欧亚大陆,但持续时间不过百年,在历史长河中只是星星点点,若要在这长河中留下痕迹,必然要做出影响全人类的重大成就,而你我绝大多数都是普通人,承认自己是普通人的那一刻你已经成长了~
2022-7-30 16:59:18