Ubuntu GitLab服务器git-data中tmp_pack_xxx文件占满磁盘

news/2024/5/20 22:52:07

Ubuntu GitLab服务器git-data中tmp_pack_xxx文件占满磁盘

目录

  • Ubuntu GitLab服务器git-data中tmp_pack_xxx文件占满磁盘
    • 一、问题发现
    • 二、查找原因
    • 三、解决方法

服务器版本:

cat /proc/version:Linux version 4.15.0-142-generic (buildd@lgw01-amd64-039) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)) #146~16.04.1-Ubuntu SMP Tue Apr 13 09:27:15 UTC 2021

GitLab:gitlab-ce_13.10.5-ce.0_amd64

一、问题发现

此服务器上搭建了SVN和GitLab服务器。

使用SVN上传文件时报错“SVN Couldn’t perform atomic initialization”,网上很多人说是由于Linux系统的磁盘空间满了所导致的,因此登录到服务器查看磁盘情况。

没想到是GitLab导致磁盘撑爆的!

二、查找原因

使用sudo df -h发现根目录1.1T的空间全部占满(下图是解决问题后的截图,将git-data迁移到了/home目录下)

在这里插入图片描述

再使用sudo du /* -sh查找根目录下哪个目录占的空间大,发现/var占1.1T

在这里插入图片描述

逐级查找,最终确定是/var/opt/gitlab中git-data目录占用1.1T,但是无法进入此文件夹继续查看

在这里插入图片描述

使用sudo chmod 777 -R git-data后可以进入git-data文件,最终确定是“/var/opt/gitlab/git-data/repositories/@hashed/e6/29/e629fa6598d732768f7c726b4b621285f9c3b85303900aa912017db7617d8bdb.git/objects/pack”路径下有很多17、18G大小的“tmp_pack_XXX”文件,总共占用磁盘1.1T;

使用ls -altr按时间顺序查看文件,发现很有规律,3月15号搭建完GitLab服务器,从3月22号开始晚上20点10分左右生成了第一个大小17G“tmp_pack_XXX”文件,往后每一天差不多相同时间生成一个大小也差不多的“tmp_pack_XXX”文件……持续两个月最终撑爆1.1T磁盘!连Linux下一些基本的Bash都无法使用,例如TAB自动补全功能,所以SVN也收到磁盘的影响!

在这里插入图片描述

三、解决方法

先尝试将git-data迁移到另一个空间大的目录,方法是直接将git-data拷贝到目标目录,然后更改sudo vim /etc/gitlab/gitlab.rb内容:

取消下面注释
# git_data_dirs({
#   "default" => {
#     "path" => "/mnt/nfs-01/git-data"
#    }
# })更改为自己目标路径下的git-data
git_data_dirs({"default" => {"path" => "/home/codemgr/git-data/git-data"}
})

在这里插入图片描述

然后顺序执行下面命令

sudo gitlab-ctl stop (停止GitLab服务,防止用户写入数据)
sudo gitlab-ctl reconfigure (使其修改配置生效)
sudo gitlab-ctl start (启动所有gitlab组件)

但是由于磁盘满,很可以sudo gitlab-ctl reconfigure很可能无法执行成功,因此尝试删除“/var/opt/gitlab/git-data/repositories/@hashed/e6/29/e629fa6598d732768f7c726b4b621285f9c3b85303900aa912017db7617d8bdb.git/objects/pack”目录下代码没有更改的那几天的新增“tmp_pack_XXX”文件,于是有几十G的空间就可以顺利执行sudo gitlab-ctl reconfigure了(也可以顺利上传SVN和使用TAB自动补全了!)

将git-data迁移之后GitLab就可以正常使用了,但是此方法治标不治本,日积月累也会将28T空间撑爆,因此尝试将原git-data路径下所有“tmp_pack_xxx”文件删除,再次将git-data指向回原路径,再次执行上面3条命令,经过实测,删除"tmp_pack_XXX"文件并不影响GitLab的正常使用,重新拉去的代码及log也都是正常的!

因此解决方法是:删除“/var/opt/gitlab/git-data/repositories/@hashed/e6/29/e629fa6598d732768f7c726b4b621285f9c3b85303900aa912017db7617d8bdb.git/objects/pack”路径中的所有"tmp_pack_XXX"文件!

但是目前尚未了解清楚为什么每天会产生1个17G左右的“tmp_pack_XXX”文件,当前采取手动删除“tmp_pack_XXX”文件,或者写一个Bash脚本定期删除“tmp_pack_XXX”文件,后期找到原因再作补充,欢迎大佬指教!


http://wed.xjx100/news/212710.html

相关文章

用数据讲故事:十大统计学/机器学习魔法指数

统计学和机器学习为数据分析提供理论基础,入门时我看过很多统计学相关书籍,复杂的公式和推导过程让我一度陷入迷茫。对于数据科学/分析师来说,如何使用统计学知识并应用到我们的分析场景中更为重要。本文主要基于数据分析工作中的实际应用场景…

学习Java,可以从事哪些岗位?

不难发现,在互联网的影响下,这几年,中国的互联网行业进入了高速发展的阶段,同时IT行业,也成为了热门,备受追捧和关注的行业。在全球云计算和移动互联网的产业环境下,Java工程师为何会如此火爆&a…

SSM_jsp游戏-账-号-装-备虚拟物品交易系统

开发语言:Java 框架:ssm 前端框架:jsp/Bootstrap JDK版本:JDK1.8 服务器:tomcat8 数据库工具:Navicat 开发软件:idea 支持eclipse 游戏账号交易系统主要是为了提高工作人员的工作效率和更方便快捷的满足用户…

要做存储业务,我解析了一个项目的源码

最近在做存储相关的业务,更具体的来说是存储相关的研发,于是就上网查了一下相关的资料,思虑再三打算从最简单的 Json 数据交换格式开始研究。 JSON是独立于编程语言的数据交换格式,几乎所有与网络开发相关的语言都有JSON函数库&am…

小白畅玩免费支持ChatGPT3和4,一键定制自己专属AI

AI爆炸时代。你不用AI,别人就会用AI,当别人用AI,为自己给工作生活赋能时候。生活自在,工作高效,AI正在潜移默化改变我们生活 基于OPEN AI平台 轻松让AI 为你的生活赋能. 总之我现在生活已经离不开AI,帮助了。 不管是工作上问题…

第十二章 Productions最佳实践 - 命名约定

文章目录 第十二章 Productions最佳实践 - 命名约定命名约定业务服务路由进程路由规则集业务操作数据转换 自定义架构类别 第十二章 Productions最佳实践 - 命名约定 命名约定 本主题解释命名约定的重要性并提供示例。 通常,将逐步开发产品,一次开发一…

JavaScript 简介

起源 JavaScript诞生于1995年,它的出现主要是用于处理网页中的前端验证。所谓的前端验证,就是指检查用户输入的内容是否符合一定的规则。比如:用户名的长度,密码的长度,邮箱的格式等。 简史 JavaScript 是由网景公司…

2.git

二.git 1.git原理 2.git的使用 3.git其他功能 二.git 1.git简介 ①git用于版本控制 git可以管理版本并且恢复到以前的版本工作区 暂存区 版本提交 暂存区可以add部分文件。。然后提交。。(暂存区记录了工作区的文件变动)②