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服务器数据存储文件迁移的主要内容,如果未能解决你的问题,请参考以下文章