Git이 데이터 저하를 방지합니까?

Git이 데이터 저하를 방지합니까?

ZFS와 Btrfs는 체크섬을 사용하여데이터 저하그리고 Git은 각 커밋마다 본질적으로 모든 것을 해싱하여 무결성을 가지고 있다는 것을 읽었습니다.

저장을 위해 Btrfs RAID 1이 있는 Linux NAS에서 Git 서버를 사용하려고 했지만 Git에 무결성이 있다면 이것이 필요하지 않을 것이라고 생각합니다(적어도 데이터 저하를 방지하는 것이 내가 원하는 전부라면 아닙니다).

질문: 그렇다면 각 커밋마다 본질적으로 모든 것을 해싱하는 Git의 무결성이 비트 부패를 방지하거나 방지하는 데 도움이 됩니까?

답변1

Git의 해싱은 커밋이 생성될 때만 발생하며, 이후부터 해시는 커밋을 식별하는 데 사용됩니다. 이는 파일의 무결성을 보장하지 않습니다. Git 저장소가 손상되어 데이터가 손실될 수 있습니다. 실제로 git에는 이러한 종류의 손실을 감지하는 명령이 내장되어 있습니다.자식 fsck, 그러나 문서에 명시된 대로 백업에서 손상된 데이터를 복원하는 것은 귀하의 책임입니다.

답변2

"예방"의 의미에 따라 다릅니다.

(우선 비트로트는 여러 정의가 있는 용어입니다. 이 질문은~ 아니다~에 대한유지 관리 부족으로 인해 코드를 실행할 수 없게 됨.)

비트 부패로 인한 손상을 감지할 가능성이 있다는 것을 "방지"한다는 의미라면 그렇습니다. 작동할 것입니다. 그러나 그것은~ 아니다해당 손상을 수정하는 데 도움이 됩니다. 해시는 오류만 제공합니다.교정이 아닌 탐지.

이것이 일반적으로 "무결성"이 의미하는 바입니다.감지하다무단/의도하지 않은 데이터 조작, 이를 방지하거나 수정할 가능성은 없습니다.

일반적으로 다음과 같은 여러 가지 이유로 백업과 함께 RAID1을 원할 것입니다(ZFS 스냅샷 또는 이와 유사한 것으로 구현될 수 있음, 저는 RAID1 + 스냅샷의 ZFS 의미에 익숙하지 않습니다).

  • 디스크에 치명적인 오류가 발생하는 경우 데이터를 복원하려면 RAID1(또는 최근 백업)이 필요합니다. 데이터의 전체 복사본(RAID1)이 없으면 오류 수정으로 전체 디스크 오류를 수정할 수 없습니다. 짧은 가동 중지 시간을 위해서는 기본적으로 RAID1이 있어야 합니다.

  • 실수로 저장소의 일부 또는 전체를 삭제한 경우 백업이 필요합니다. (RAID1은 변경 사항을 모든 장치에 즉시 반영하므로 보호하지 않습니다.)

자체적으로 디스크가 2개만 있는 블록 수준 RAID1(예: LVM 또는 유사 경유)은~ 아니다하지만 데이터가 자동으로 손상되지 않도록 보호합니다. RAID 컨트롤러는 두 디스크 중 어느 디스크에 올바른 데이터가 있는지 알 수 없습니다. 이를 위해서는 파일에 대한 체크섬과 같은 추가 정보가 필요합니다. 이것이 ZSF 및 btrfs 체크섬이 들어오는 곳입니다. 사용할 수 있습니다.~이다이 경우에는 두 디스크 중 어느 디스크에 올바른 데이터가 있는지 구별하기 위해 ZFS 또는 btrfs가 어떻게 처리하는지 모르겠습니다.

답변3

비트 부패 방지

아니요, 전혀 그렇지 않습니다. git에는 RAID와 같은 중복성이 도입되지 않습니다. 디렉터리 의 파일이 .git비트 부패하면 평소와 마찬가지로 파일이 손실됩니다.

비트 부패 방지에 도움이 되나요?

응...아니. 비트 부패 발생을 방지하는 데는 도움이 되지 않지만 비트 부패를 감지하는 데는 도움이 됩니다. 그러나 정상적인 사용 중에는 어떠한 경우에도 자체 계정으로 그렇게 하지 않습니다(물론 일부 객체 등을 체크아웃할 때는 그렇게 하지만 기록에 대해서는 그렇지 않습니다). 콘텐츠의 해시를 다시 계산하고 이를 실제 해시와 비교하려면 크론 작업을 생성해야 합니다. git해시는 문자 그대로 단순히 콘텐츠 해시이기 때문에 이를 다시 계산하는 것은 매우 간단 하며 git fsck이를 수행합니다. 그러나 비트 부패가 감지되면 이에 대해 특별히 할 수 있는 일은 없습니다. 특히 더 큰 청크가 자동으로 압축되므로 더 큰 개체의 비트가 뒤집히면 전체 청크가 손실될 가능성이 높습니다.

관련 정보