debian-mirror-gitlab/doc/administration/repository_checks.md

77 lines
3.3 KiB
Markdown
Raw Normal View History

2020-10-24 23:57:45 +05:30
---
stage: Create
2021-04-17 20:07:23 +05:30
group: Gitaly
2021-02-22 17:27:13 +05:30
info: "To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments"
2020-10-24 23:57:45 +05:30
type: reference
---
2021-09-30 23:02:18 +05:30
# Repository checks **(FREE SELF)**
2016-06-02 11:05:42 +05:30
2021-09-30 23:02:18 +05:30
You can use [`git fsck`](https://git-scm.com/docs/git-fsck) to verify the integrity of all data
committed to a repository. GitLab administrators can trigger this check for a project using the
GitLab UI:
2016-06-02 11:05:42 +05:30
2021-11-11 11:23:49 +05:30
1. On the top bar, select **Menu > Admin**.
2021-09-30 23:02:18 +05:30
1. On the left sidebar, select **Overview > Projects**.
1. Select the project to check.
1. In the **Repository check** section, select **Trigger repository check**.
The checks run asynchronously so it may take a few minutes before the check result is visible on the
project page in the Admin Area. If the checks fail, see [what to do](#what-to-do-if-a-check-failed).
2016-06-02 11:05:42 +05:30
2021-03-11 19:13:27 +05:30
This setting is off by default, because it can cause many false alarms.
2020-04-22 19:07:51 +05:30
2021-09-30 23:02:18 +05:30
## Enable periodic checks
Instead of checking repositories manually, GitLab can be configured to run the checks periodically:
2021-11-11 11:23:49 +05:30
1. On the top bar, select **Menu > Admin**.
2021-09-30 23:02:18 +05:30
1. On the left sidebar, select **Settings > Repository** (`/admin/application_settings/repository`).
1. Expand the **Repository maintenance** section.
1. Enable **Enable repository checks**.
2016-06-02 11:05:42 +05:30
2021-09-30 23:02:18 +05:30
When enabled, GitLab periodically runs a repository check on all project repositories and wiki
repositories to detect possible data corruption. A project is checked no more than once per month.
2016-06-02 11:05:42 +05:30
2021-09-30 23:02:18 +05:30
If any projects fail their repository checks, all GitLab administrators receive an email
notification of the situation. By default, this notification is sent out once a week at midnight at
the start of Sunday.
2016-06-02 11:05:42 +05:30
2021-09-30 23:02:18 +05:30
Repositories with known check failures can be found at
`/admin/projects?last_repository_check_failed=1`.
2016-06-02 11:05:42 +05:30
## What to do if a check failed
2021-09-30 23:02:18 +05:30
If a repository check fails, locate the error in the [`repocheck.log` file](logs.md#repochecklog) on
disk at:
2018-10-15 14:42:47 +05:30
2021-09-30 23:02:18 +05:30
- `/var/log/gitlab/gitlab-rails` for Omnibus GitLab installations.
- `/home/git/gitlab/log` for installations from source.
2016-06-02 11:05:42 +05:30
2021-09-30 23:02:18 +05:30
If periodic repository checks cause false alarms, you can clear all repository check states:
2021-09-04 01:27:46 +05:30
2021-11-11 11:23:49 +05:30
1. On the top bar, select **Menu > Admin**.
2021-09-04 01:27:46 +05:30
1. On the left sidebar, select **Settings > Repository** (`/admin/application_settings/repository`).
1. Expand the **Repository maintenance** section.
1. Select **Clear all repository checks**.
2021-04-17 20:07:23 +05:30
2021-09-30 23:02:18 +05:30
## Run a check using the command line
2021-04-17 20:07:23 +05:30
2021-09-30 23:02:18 +05:30
You can run [`git fsck`](https://git-scm.com/docs/git-fsck) using the command line on repositories
on [Gitaly servers](gitaly/index.md). To locate the repositories:
2021-04-17 20:07:23 +05:30
2021-09-30 23:02:18 +05:30
1. Go to the storage location for repositories. For Omnibus GitLab installations, repositories are
stored by default in the `/var/opt/gitlab/git-data/repositories` directory.
1. [Identify the subdirectory that contains the repository](repository_storage_types.md#from-project-name-to-hashed-path)
2021-04-17 20:07:23 +05:30
that you need to check.
To run a check (for example):
```shell
sudo /opt/gitlab/embedded/bin/git -C /var/opt/gitlab/git-data/repositories/@hashed/0b/91/0b91...f9.git fsck
```
You can also run [Rake tasks](raketasks/check.md#repository-integrity) for checking Git
2021-09-30 23:02:18 +05:30
repositories, which can be used to run `git fsck` against all repositories and generate repository
checksums, as a way to compare repositories on different servers.