24.06.2026

Обслуживание Gitlab

Регулярное обслуживание GitLab критически важно для обеспечения стабильности, производительности и безопасности системы. Ниже представлен чек-лист операций, разделенный по категориям.

Диагностика и общие проверки (health check)

Эти команды не удаляют данные, а лишь сообщают о проблемах. Их рекомендуется выполнять перед любой очисткой, чтобы убедиться, что система находится в рабочем состоянии.

Комплексная проверка конфигурации GitLab. Проверяет подключение к БД, права доступа к файлам, наличие необходимых фоновых миграций, статус очередей Sidekiq и доступность внешних сервисов (Gitaly, Redis).

gitlab-rake gitlab:check SANITIZE=true

Сводка по окружению: версия GitLab, версия базы данных, тип хранилища репозиториев, настройки очередей.

gitlab-rake gitlab:env:info

Проверка файлов секретов (db_key_base, secret_key_base, otp_key_base) на целостность и валидность. Поврежденные или утерянные секреты приводят к невозможности расшифровки переменных окружения CI/CD, OTP-токенов и сессий пользователей.

gitlab-rake gitlab:doctor:secrets

Проверка ключей шифрования, используемые для защиты чувствительных данных в базе данных (например, токенов интеграций). Если в /etc/gitlab/gitlab-secrets.json были изменения, эта команда укажет, какие записи в БД не могут быть расшифрованы и требуют ручного вмешательства.

gitlab-rake gitlab:doctor:encryption_keys

—trace Расширенное отображение ошибок и предупреждений и расшифровки ключей. Полезно для отладки, если стандартная команда не дала ответа

gitlab-rake gitlab:doctor:encryption_keys --trace

Очистка данных

Этот блок отвечает за удаление «мусора» — файлов, которые больше не используются системой, но занимают дисковое пространство.

Управление Артефактами CI/CD

Сканирует и выводит отчет о целостности файлов артефактов.

gitlab-rake gitlab:artifacts:check

Исправляет некорректные пути к файлам артефактов в метаданных базы данных.

gitlab-rake gitlab:artifacts:fix_artifact_filepath

Удаляет артефакты, срок хранения которых истек (согласно политикам, заданным в проектах). Очищает дисковое пространство, освобождая место для новых сборок.

gitlab-rake gitlab:artifacts:cleanup

Очистка «Сирот» (Orphans)

Поиск и удаление файлов LFS (Large File Storage), на которые нет ссылок в коммитах. Освобождает гигабайты места, если вы часто переписываете историю (force push) или удаляете ветки с большими файлами.

gitlab-rake gitlab:cleanup:orphan_lfs_files

Удаление файлов, загруженных пользователями в задачи (issues, merge requests, комментарии), но не привязанные ни к одной записи в БД. Очистка папки uploads от потерянных вложений.

gitlab-rake gitlab:cleanup:project_uploads

Аналогично предыдущему, но для случая, когда загрузки хранятся в облачном объектном хранилище (S3, GCS).

gitlab-rake gitlab:cleanup:remote_upload_files

Поиск файлов артефактов на диске, для которых отсутствует запись в базе данных. Очистка после сбоев или ручного вмешательства.

После проверки выполните команду с параметром DRY_RUN=false, чтобы удалить найденные файлы и пустые папки

Локальное хранилище

gitlab-rake gitlab:cleanup:orphan_job_artifact_files
gitlab-rake gitlab:cleanup:orphan_job_artifact_files DRY_RUN=false

Аналогично предыдущему, но для случая, когда загрузки хранятся в облачном объектном хранилище (S3, GCS).

Сначала выводит список (list), а затем удаляет (delete) артефакты в объектном хранилище, потерявшие связь с БД. Безопасный двухэтапный подход для облачных провайдеров: сначала посмотреть, что будет удалено, затем подтвердить действие.

gitlab-rake gitlab:cleanup:list_orphan_job_artifact_final_objects
gitlab-rake gitlab:cleanup:list_orphan_job_artifact_final_objects DRY_RUN=false
gitlab-rake gitlab:cleanup:delete_orphan_job_artifact_final_objects

Очистка Сессий

Очистка просроченных ключей сессий из базы данных Redis. Предотвращает переполнение памяти Redis и ускоряет обработку запросов аутентификации.

gitlab-rake gitlab:cleanup:sessions:active_sessions_lookup_keys

Обслуживание реестра контейнеров (registry)

Образы контейнеров занимают много места. Здесь требуется особая осторожность.

Запускает сборщик мусора в реестре. Удаляет слои, на которые нет ссылок от существующих манифестов.

gitlab-ctl registry-garbage-collect

Агрессивная очистка. Удаляет все манифесты, у которых нет тегов (latest, v1.0 и т.д.), а также все слои, принадлежащие им. Это необратимо. Удаляются промежуточные сборки, которые не были помечены тегом. Выполнять только если вы уверены, что они не нужны.

gitlab-ctl registry-garbage-collect --delete-untagged

Обслуживание базы данных (database)

Выполняет переиндексацию таблиц в PostgreSQL для восстановления производительности. В процессе активной работы индексы фрагментируются, что замедляет поиск и запись.

Рекомендуется выполнять в периоды низкой нагрузки, так как это блокирует таблицы на время операции

gitlab-rake gitlab:db:reindex

Специальные / экстренные операции

Временное предоставление прав суперпользователя

Эти команды предназначены для экстренных ситуаций, когда требуется временно предоставить или отозвать права суперпользователя для учетной записи GitLab в базе данных PostgreSQL.

gitlab-psql -d gitlabhq_production -c "ALTER USER gitlab WITH SUPERUSER;"

Отозвать права

gitlab-psql -d gitlabhq_production -c "ALTER USER gitlab WITH NOSUPERUSER;"

Сбрасывает настройки двухфакторной аутентификации (2FA) для всех пользователей

Используется только в экстренных ситуациях, например, если сломался OTP-сервер или пользователи массово потеряли доступ к приложениям-аутентификаторам.  Серьезная мера безопасности. Использовать только по необходимости.

gitlab-rake gitlab:two_factor:disable_for_all_users
gitlab-rake railties:install:migrations
gitlab-rails runner 'User.update_all(otp_required_for_login: false, encrypted_otp_secret: nil)'

Копирует новые миграции из движков (engines) в основное приложение (обычно автоматически выполняется при обновлении). Если вы видите ошибки о пропущенных миграциях при запуске gitlab-rake db:migrate.

gitlab-rake railties:install:migrations

Открывает интерактивный терминал PostgreSQL для прямого выполнения SQL-запросов.

gitlab-psql

Очистка автоматических резервных копий

При каждом обновлении GitLab автоматически создается резервная копия базы данных и некоторых служебных файлов. Со временем эти копии накапливаются и занимают значительное дисковое пространство.

Основная директория с автоматическими бэкапами /var/opt/gitlab/backups/. Удаление всех резервных копий, кроме 3 самых свежих

ls -t /var/opt/gitlab/backups/*.tar | tail -n +4 | xargs -r rm -f