Gitlab服务器数据存储文件迁移

Posted 张侦毅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gitlab服务器数据存储文件迁移相关的知识,希望对你有一定的参考价值。

文章目录

起因

  周一早上,发现Gitlab无法访问,进入Linux服务器,在使用【Tab】文件补全命令时,出现了以下提示:

cd -bash: 无法为立即文档创建临时文件:设备上没有空间

  在我记忆中,Linux服务器上的磁盘空间有好几个T,平时我们顶多使用一些docker外加Gitlab,预估其在硬盘上占用的空间顶多也就几十个G,根本不会导致系统磁盘空间不够用,后来使用磁盘命令查看:

df -lh

  此时我终于明白了问题产生的原因。其实在服务器上,至少有7T的剩余空间没有被使用,其剩余空间位于:

文件系统                  容量  已用  可用 已用% 挂载点
/dev/mapper/centos-home  7.2T   46G  7.2T    1% /home

  而系统使用空间为:

文件系统                   容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G   50G  0G   100% /

  换言之,也就是说尽管现在系统中还有7.2T可用空间未被使用,而由于系统盘本身初始规划比较小,很多应用,之前在安装时本身并没有考虑磁盘分区问题,结果导致后续安装应用产生的数据直接存放到了系统磁盘下,最终导致系统磁盘空间被耗尽,很多系统应用也就被迫宕机了。

解决方案

  知道了上述问题产生的原因,那么我们就不难想到解决办法。

  方法一:重新磁盘分区

  正常情况下,一台电脑,应该保证系统盘保底不少于100G,而磁盘空间较大的话,应该确保系统盘空间的大小占总磁盘空间大小的10%-20%比较合适,而我们的笔记本电脑,现在C盘空间都很少有少于100G的了,更何况是公司服务器。因而很明显,我们的服务器磁盘空间划分十份不合理,所以重新对磁盘分区就可为了一种有效的解决方案。

  不过由于是公司服务器,因而操作必须非常谨慎,根据以往的操作管理流程,我们要更改某些应用时,比如说修改应用的配置文件,通常做法是将该被修改文件先行备份,然后再修改,如果修改错误,那么可以及时通过备份进行恢复。

  同理,如果要是移动应用的数据,那么也会先行将该数据打包备份,然后再移动。

  而由于现在所操作的是磁盘分区,根据以往的流程,我们需要对整个服务器进行数据备份,那么这就牵扯的面太多了,其中还会涉及到很多历史遗留的应用,文件及数据,单靠个人能力没有办法一次性全部备份完毕,而这个又不是我本地的虚拟机,要是在本地虚拟机中操作,那自然也是很简单的事情,直接在操作前,做一次系统快照,而我们的服务器本身并没有系统快照,这就使得,这么做的成本非常高昂,不得已最好不要这么做。

  方法二:针对热点应用进行数据迁移

  虽然说我们的服务器中安装了不少软件,但是使用频率高的热点应用也就那么几个,其中由于公司现在正在推行应用docker化,而很多docker中的应用可以直接归类到docker中,因而我们的应用总结起来一共分为两大类,其一是系统安装应用,这里包含通过yum指令以及离线软件的安装,而另一类则是docker应用。这里,我们最终选择了优先使用方案二。

  通过yum指令以及离线软件的安装,在公司应用docker化的背景下,很多应用就这么在系统中呆着,被使用的越来越少,其中少部分仍在被使用的,比如说Gitlab,则属于热点应用,针对这种应用,我们需要进行数据迁移操作。

  而随着公司在推行应用docker化,因而越来越多的应用被存放到了本地的docker仓库中,这就使得docker仓库变得越来越臃肿,因而迁移docker仓库也就势在必行。

数据迁移

Gitlab数据迁移

前期准备

  Gitlab的相关指令:

  • 启动:gitlab-ctl start
  • 停止:gitlab-ctl stop
  • 使配置文件生效:gitlab-ctl reconfigure

  文件压缩与解压缩:

  • 压缩指令:tar -cvf [文件名].tar [压缩目录]
  • 解压缩指令:tar -xvf [文件名].tar

  Gitlab默认的相关文件位置:

  • Gitlab默认仓库存储位置:/var/opt/gitlab/git-data/
  • 默认配置文件位置:/etc/gitlab/gitlab.rb

迁移

  停掉Gitlab

gitlab-ctl stop

  备份Gitlab仓库

tar -cvf repositories.tar repositories/

  迁移Gitlab仓库到新的存储位置:

cp -r /var/opt/gitlab/git-data/* /home/gitlab/data

  编辑Gitlab配置文件,将仓库位置定位到新的存储目录:

vim  /etc/gitlab/gitlab.rb

  在如下注释下

# git_data_dirs(
#   "default" => 
#     "path" => "/mnt/nfs-01/git-data"
#    
# )

  添加如下配置:

git_data_dirs(
   "default" => 
     "path" => "/home/gitlab/data"
    
)

  使配置生效:

gitlab-ctl reconfigure

  启动Gitlab

gitlab-ctl start

Gitlab402错误的解决办法

  当Gitlab启动后,我们就能够正常访问Gitlab了,但是在我们访问其中的项目时,此时项目报402错误,在初步确认了Gitlab配置无误后,判定该问题是由于权限所导致的,因而我们需要给Gitlab赋予相应的权限:

chown -R git:git /home/gitlab/data/repositories

  至此,问题成功解决!

以上是关于Gitlab服务器数据存储文件迁移的主要内容,如果未能解决你的问题,请参考以下文章

gitlab 数据目录迁移

gitlab 存储仓库目录设置及数据迁移

gitlab 12.9 的存储库的迁移路径是啥。到 gitlab 14.2?

gitlab服务器迁移

gitlab完整迁移

gitlab 502问题解决