Содержание страницы
Регулярное обслуживание 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