极狐GitLab Git LFS(大文件存储)如何管理?

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channel=content&utm_source=csdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。

极狐GitLab 在 5 月 28 日正式发布了 AI 产品驭码CodeRider。现已开启免费试用,登录官网:https://coderider.gitlab.cn/ 即可申请试用。

更多关于极狐GitLab :https://gitlab.cn 或者 DevOps 的最佳实践,可以关注文末的极狐GitLab 公众号。

学习极狐GitLab 的相关资料:

  1. 极狐GitLab 官网:https://gitlab.cn
  2. 极狐GitLab 官网文档:https://docs.gitlab.cn
  3. 极狐GitLab 论坛:https://forum.gitlab.cn/
  4. 极狐GitLab 安装配置:https://gitlab.cn/install
  5. 极狐GitLab 资源中心:https://resources.gitlab.cn/
  6. AI 产品驭码CodeRider:https://coderider.gitlab.cn/

搜索【极狐GitLab】公众号,后台输入加群,备注gitlab,即可加入官方微信技术交流群。

此页面包含有关在私有化部署实例中配置 Git LFS 的信息。
有关 Git LFS 的用户文档,请参阅 Git 大文件存储。
先决条件:

  • 用户需要安装 Git LFS 客户端 1.0.1 或更高版本。

启用或禁用 LFS

默认情况下启用 LFS。要禁用它:

Omnibus

  1. 编辑 /etc/gitlab/gitlab.rb
# Change to true to enable lfs - enabled by default if not defined
gitlab_rails['lfs_enabled'] = false
  1. 保存文件并重新配置极狐GitLab:
sudo gitlab-ctl reconfigure

Kubernetes

  1. 导出 Helm 值:
helm get values gitlab > gitlab_values.yaml
  1. 编辑 gitlab_values.yaml
global:appConfig:lfs:enabled: false
  1. 保存文件并应用新值:
helm upgrade -f gitlab_values.yaml gitlab gitlab/gitlab

Docker

  1. 编辑 docker-compose.yml
version: "3.6"
services:gitlab:environment:GITLAB_OMNIBUS_CONFIG: |gitlab_rails['lfs_enabled'] = false
  1. 保存文件并重启极狐GitLab:
docker compose up -d

源安装

  1. 编辑 /home/git/gitlab/config/gitlab.yml
production: &baselfs:enabled: false
  1. 保存文件并重启极狐GitLab:
# For systems running systemd
sudo systemctl restart gitlab.target# For systems running SysV init
sudo service gitlab restart

更改本地存储路径

Git LFS 对象可以很大。默认情况下,它们存储在安装极狐GitLab 的服务器上。

NOTE:对于 Docker 安装实例,您可以更改装载数据的路径。 对于 Helm chart 安装实例,请使用对象存储。

要更改默认的本地存储路径位置:

Omnibus

  1. 编辑 /etc/gitlab/gitlab.rb
# /var/opt/gitlab/gitlab-rails/shared/lfs-objects by default.
gitlab_rails['lfs_storage_path'] = "/mnt/storage/lfs-objects"
  1. 保存文件并重新配置极狐GitLab:
sudo gitlab-ctl reconfigure

源安装

  1. 编辑 /home/git/gitlab/config/gitlab.yml
# /home/git/gitlab/shared/lfs-objects by default.
production: &baselfs:storage_path: /mnt/storage/lfs-objects
  1. 保存文件并重启极狐GitLab:
# For systems running systemd
sudo systemctl restart gitlab.target# For systems running SysV init
sudo service gitlab restart

在远程对象存储中存储 LFS 对象

您可以将 LFS 对象存储在远程对象存储中。这使您可以减少对本地磁盘的读取和写入,并释放磁盘空间。

NOTE:在 13.2 及更高版本,您应该使用整合对象存储设置。

迁移到对象存储

您可以将 LFS 对象从本地存储迁移到对象存储。处理在后台完成,不需要停机。

  1. 配置对象存储。

  2. 迁移 LFS 对象:

Omnibus
sudo gitlab-rake gitlab:lfs:migrate

Docker

sudo docker exec -t <container name> gitlab-rake gitlab:lfs:migrate

源安装

sudo -u git -H bundle exec rake gitlab:lfs:migrate RAILS_ENV=production
  1. 可选。使用 PostgreSQL 控制台跟踪进度并验证所有作业 LFS 对象是否已成功迁移。

    1. 打开 PostgreSQL 控制台:
Omnibus
sudo gitlab-psql
Docker
sudo docker exec -it <container_name> /bin/bash
gitlab-psql
源安装
sudo -u git -H psql -d gitlabhq_production
  1. 使用以下 SQL 查询验证所有 LFS 文件是否已迁移到对象存储。objectstg 的数量应与 total 相同:
gitlabhq_production=# SELECT count(*) AS total, sum(case when file_store = '1' then 1 else 0 end) AS filesystem, sum(case when file_store = '2' then 1 else 0 end) AS objectstg FROM lfs_objects;total | filesystem | objectstg
------+------------+-----------2409 |          0 |      2409
  1. 验证 lfs-objects 目录中的磁盘上没有文件:
Omnibus
sudo find /var/opt/gitlab/gitlab-rails/shared/lfs-objects -type f | grep -v tmp | wc -l
Docker

假设您将 /var/opt/gitlab 挂载到 /srv/gitlab

sudo find /srv/gitlab/gitlab-rails/shared/lfs-objects -type f | grep -v tmp | wc -l
源安装
sudo find /home/git/gitlab/shared/lfs-objects -type f | grep -v tmp | wc -l

迁移回本地存储

NOTE:对于 Helm chart,您应该使用对象存储。

要迁移回本地存储:

Omnibus
  1. 迁移 LFS 对象:
sudo gitlab-rake gitlab:lfs:migrate_to_local
  1. 编辑 LFS 对象的 /etc/gitlab/gitlab.rb 和禁用对象存储:
gitlab_rails['object_store']['objects']['lfs']['enabled'] = false
  1. 保存文件并重新配置极狐GitLab:
sudo gitlab-ctl reconfigure

Docker

1.迁移 LFS 对象:

sudo docker exec -t <container name> gitlab-rake gitlab:lfs:migrate_to_local
  1. 编辑 docker-compose.yml 并禁用 LFS 对象的对象存储:
version: "3.6"
services:gitlab:environment:GITLAB_OMNIBUS_CONFIG: |gitlab_rails['object_store']['objects']['lfs']['enabled'] = false
  1. 保存文件并重启极狐GitLab:
docker compose up -d
源安装
  1. 迁移 LFS 对象:
sudo -u git -H bundle exec rake gitlab:lfs:migrate_to_local RAILS_ENV=production
  1. 编辑 /home/git/gitlab/config/gitlab.yml 并禁用 LFS 对象的对象存储:
production: &baseobject_store:objects:lfs:enabled: false
  1. 保存文件并重启极狐GitLab:
# For systems running systemd
sudo systemctl restart gitlab.target# For systems running SysV init
sudo service gitlab restart

故障排除

缺少 LFS 对象

在以下任何一种情况下,都可能会出现有关丢失 LFS 对象的错误:

  • 将 LFS 对象从磁盘迁移到对象存储时,出现以下错误消息:
ERROR -- : Failed to transfer LFS object
006622269c61b41bf14a22bbe0e43be3acf86a4a446afb4250c3794ea47541a7
with error: No such file or directory @ rb_sysopen -
/var/opt/gitlab/gitlab-rails/shared/lfs-objects/00/66/22269c61b41bf14a22bbe0e43be3acf86a4a446afb4250c3794ea47541a7

(为了便于阅读,添加了换行符。)

  • 使用 VERBOSE=1 参数运行 LFS 对象的完整性检查。

数据库可以有不在磁盘上的 LFS 对象的记录。数据库条目可能会阻止推送对象的新副本。要删除这些引用:

  1. 启动 Rails 控制台。

  2. 查询 rails 控制台报错的对象,返回文件路径:

lfs_object = LfsObject.find_by(oid: '006622269c61b41bf14a22bbe0e43be3acf86a4a446afb4250c3794ea47541a7')
lfs_object.file.path
  1. 检查磁盘或对象存储是否存在:
ls -al /var/opt/gitlab/gitlab-rails/shared/lfs-objects/00/66/22269c61b41bf14a22bbe0e43be3acf86a4a446afb4250c3794ea47541a7
  1. 如果文件不存在,通过 rails 控制台删除数据库记录:
# First delete the parent records and then destroy the record itself
lfs_object.lfs_objects_projects.destroy_all
lfs_object.destroy

LFS 命令在 TLS v1.3 服务器上失败

如果您将极狐GitLab 配置为禁用 TLS v1.2,并且仅启用 TLS v1.3 连接,则 LFS 操作需要 Git LFS 客户端 2.11.0 或更高版本。如果您使用低于 2.11.0 版本的 Git LFS 客户端,极狐GitLab 会显示错误:

batch response: Post https://username:***@gitlab.example.com/tool/releases.git/info/lfs/objects/batch: remote error: tls: protocol version not supported
error: failed to fetch some objects from 'https://username:[MASKED]@gitlab.example.com/tool/releases.git/info/lfs'

在 TLS v1.3 配置的极狐GitLab 服务器上使用 CI 时,您必须升级到极狐GitLab Runner 13.2.0 或更高版本才能接收更新 Git LFS 客户端版本通过包含的 Runner Helper 镜像。
要检查已安装的 Git LFS 客户端的版本,请运行以下命令:

git lfs version

查看 PDF 文件时出错

当 LFS 配置了对象存储并将 proxy_download 设置为 false 时,您在从 Web 浏览器预览 PDF 文件时可能会看到错误:

An error occurred while loading the file. Please try again later.

这是由于跨源资源共享 (CORS) 限制造成的:浏览器尝试从对象存储加载 PDF,但对象存储提供程序拒绝请求,因为极狐GitLab 域名与对象存储域名不同。
要解决此问题,请将对象存储提供商的 CORS 设置配置为允许极狐GitLab 域名。有关详细信息,请参阅以下文档:

  1. AWS S3
  2. Google Cloud Storage
  3. Azure Storage

已知限制

仅与 Git LFS 客户端版本 1.1.0 及更高版本或 1.0.2 兼容。
存储统计为每个链接到它的项目计算每个 LFS 对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/873401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决xshell连接不上ubuntu首次安装的虚拟机问题

首次安装完虚拟机&#xff0c;主机和虚拟机之间互ping都没问题&#xff0c;但是xshell登不上去&#xff0c;基本上原因就是虚拟机没有安装ssh服务。 1、关闭防火墙 sudo ufw disable 2、开发22端口 sudo ufw allow 22 3、最后安装ssh sudo apt-get install openssh-serve…

日文医学文献pdf怎么翻译

翻译日文医学文献的PDF可以通过以下几个步骤进行&#xff1a; 1、提取文本&#xff1a; 如果PDF文档是扫描版或者图片格式&#xff0c;可以使用OCR&#xff08;光学字符识别&#xff09;软件提取文本。常用的OCR工具有Adobe Acrobat、ABBYY FineReader等。 如果PDF文档已经是…

多层全连接神经网络(四)---简单的前向网络

神经网络神经元概念部分有需要会单独再讲 激活函数 1. Sigmoid Sigmoid 非线性激活函数的数学表达式是 σ(z) &#xff0c;其图形如图 3.14所示。目前我们知道 Sigmoid 激活函数是将一个实数输入转化到 0~1 之间的输出&#xff0c;具体来说也就是将越大的负数转化到越靠近 0…

C/C++蓝屏整人代码

文章目录 &#x1f4d2;程序效果 &#x1f4d2;具体步骤 1.隐藏任务栏 2.调整cmd窗口大小 3.调整cmd窗口屏幕颜色 4.完整代码 &#x1f4d2;代码详解 &#x1f680;欢迎互三&#x1f449;&#xff1a;程序猿方梓燚 &#x1f48e;&#x1f48e; &#x1f680;关注博主&a…

笔记 7 :linux 011 注释,函 bread () , get_hash_table () , find_buffer ()

&#xff08;57&#xff09;接着介绍另一个读盘块的函数 bread&#xff08;&#xff09;&#xff1a; &#xff08;58&#xff09;因为 函数 get_blk&#xff08;&#xff09;大量调用了其它函数&#xff0c;一版面列举不完&#xff0c;故对其调用的函数先行注释&#xff1a;ge…

【Linux】服务器安装SSH

【Linux】服务器安装SSH 【创作不易&#xff0c;求点赞关注收藏】&#x1f600; 在Ubuntu服务器上安装并配置SSH非常简单。你可以按照以下步骤进行操作&#xff1a; 1、更新软件包列表 sudo apt-get update2、安装OpenSSH服务器: sudo apt-get install openssh-server3、启…

鲁大师2024半年报电动车智能排行:九号继续霸榜,极核本田乘胜追击

鲁大师2024年半年报正式发布&#xff0c;本次季报包含电动车智能排行&#xff0c;测试的车型为市面上主流品牌的主流车型&#xff0c;共计30款&#xff0c;全部按照评测维度更广、更专业的鲁大师电动车智慧评测2.0进行评分&#xff0c;测试的成绩均来自于鲁大师智慧硬件实验室。…

口袋奇兵游戏攻略:云手机辅助战锤入侵策略指南!

在《口袋奇兵》中&#xff0c;战锤入侵是一个重要的游戏环节&#xff0c;了解如何有效地参与战锤入侵能够帮助玩家获取更多的资源和提升自己的战力。本文将详细介绍战锤入侵的策略和技巧&#xff0c;帮助玩家在战锤入侵活动中取得更好的成绩。除了找到强力的游戏辅助&#xff0…

粉尘传感器助力面粉厂安全生产

在面粉加工行业中&#xff0c;粉尘问题一直是一个不容忽视的难题。从原料的破碎、研磨到成品的包装&#xff0c;整个生产流程中都会伴随着大量的粉尘产生。这些粉尘不仅影响生产环境&#xff0c;更对工作人员的健康、设备的安全运行以及环境保护构成严重威胁。因此&#xff0c;…

食堂采购系统开发:从需求分析到上线实施的完整指南

本篇文章&#xff0c;笔者将详细介绍食堂采购系统从需求分析到上线实施的完整过程&#xff0c;旨在为开发团队和管理者提供一个系统化的指南。 一、需求分析 1.用户需求 常见的需求包括&#xff1a; -采购计划管理 -供应商管理 -库存管理 -成本控制 -报表生成 2.系统功…

PyTorch使用细节

model.eval() &#xff1a;让BatchNorm、Dropout等失效&#xff1b; with torch.no_grad() &#xff1a; 不再缓存activation&#xff0c;节省显存&#xff1b; 这是矩阵乘法&#xff1a; y1 tensor tensor.T y2 tensor.matmul(tensor.T)y3 torch.rand_like(y1) torch.matm…

初步认识HTML

目录 一. HTML概述 二. HTML基本语法 1. HTML的基本框架 2. 标签 2.1 标签分类 2.2 标签属性 三. 基本常用标签 3.1 标题标签 3.2 段落标签 3.3 换行标签 3.4 列表 3.5 超链接 四. 特殊符号转义 五. 表格 5.1 表格的基本构成标签 5.2 表格的基本结构 5.3 表格属…

js reduce 的别样用法

let mergedItems list.reduce((accumulator, currentItem) > {let existingItem accumulator.find((item) > item.manObject_name currentItem.manObject_name);if (existingItem) {existingItem.laborCostHand currentItem.laborCostHand; //劳务费existingItem.wor…

增量预训练和微调的区别

文章目录 前言一、增量预训练和微调的区别二、代码示例1. 增量预训练示例2. 微调示例3. 代码的区别 三、数据格式1. 增量预训练2. 微调3. 示例4. 小结 四、数据量要求1. 指导原则2. 示例3. 实际操作中的考虑4. 小结 前言 增量预训练是一种在现有预训练模型的基础上&#xff0c…

有了这5个高效视频剪辑工具,你一定会爱上剪辑

如果你是个剪辑新手&#xff0c;不知道如何挑选剪辑视频的工具&#xff0c;又或者是自己目前使用的剪辑工具不理想&#xff0c;想寻找新的剪辑软件&#xff1b;那就请你看看这篇文章&#xff0c;这里介绍的5款剪辑软件都是专业&#xff0c;简单&#xff0c;又高效的剪辑工具。 …

顺序表<数据结构 C版>

目录 线性表 顺序表 动态顺序表类型 初始化 销毁 打印 检查空间是否充足&#xff08;扩容&#xff09; 尾部插入 头部插入 尾部删除 头部删除 指定位置插入 指定位置删除 查找数据 线性表 线性表是n个相同特性的数据元素组成的有限序列&#xff0c;其是一种广泛运…

解决警告Creating a tensor from a list of numpy.ndarrays is extremely slow.

我的问题是创建一个列表x[]&#xff0c;然后不断读入数据使用x.append(sample)&#xff0c;chatgpt说这样转化比较低效&#xff0c;如果预先知道样本个数&#xff0c;可以用numpy来创建数组&#xff0c;再用索引x[i]sample赋值第二种方法更快&#xff0c;直接用numpy转化一下np…

04 Git与远程仓库

第4章&#xff1a;Git与远程仓库 一、Gitee介绍及创建仓库 一&#xff09;获取远程仓库 ​ 使用在线的代码托管平台&#xff0c;如Gitee&#xff08;码云&#xff09;、GitHub等 ​ 自行搭建Git代码托管平台&#xff0c;如GitLab 二&#xff09;Gitee创建仓库 ​ gitee官…

Gitee使用教程2-克隆仓库(下载项目)并推送更新项目

一、下载 Gitee 仓库 1、点击克隆-复制代码 2、打开Git Bash 并输入复制的代码 下载好后&#xff0c;找不到文件在哪的可以输入 pwd 找到仓库路径 二、推送更新 Gitee 项目 1、打开 Git Bash 用 cd 命令进入你的仓库&#xff08;我的仓库名为book&#xff09; 2、添加文件到 …

Spring-Boot基础--yaml

目录 Spring-Boot配置文件 注意&#xff1a; YAML简介 YAML基础语法 YAML:数据格式 YAML文件读取配置内容 逐个注入 批量注入 ConfigurationProperties 和value的区别 Spring-Boot配置文件 Spring-Boot中不用编写.xml文件&#xff0c;但是spring-Boot中还是存在.prope…