ZFSとBtrfsはチェックサムを使用してデータの劣化を防ぎ、Gitはコミットごとに基本的にすべてをハッシュすることで整合性があることを読みました。
ストレージ用にBtrfs RAID 1を備えたLinux NASでGitサーバーを使用するつもりでしたが、Gitに整合性があれば、これは必要ないと思います(少なくともデータの劣化を防ぐことが必要な場合はそうではありません)。
質問: それで、Gitの整合性は、コミットごとに基本的にすべてをハッシュすることで、ビット腐敗を防止または支援しますか?
ZFSとBtrfsはチェックサムを使用してデータの劣化を防ぎ、Gitはコミットごとに基本的にすべてをハッシュすることで整合性があることを読みました。
ストレージ用にBtrfs RAID 1を備えたLinux NASでGitサーバーを使用するつもりでしたが、Gitに整合性があれば、これは必要ないと思います(少なくともデータの劣化を防ぐことが必要な場合はそうではありません)。
質問: それで、Gitの整合性は、コミットごとに基本的にすべてをハッシュすることで、ビット腐敗を防止または支援しますか?
回答:
Gitのハッシュは、コミットが作成されたときにのみ発生し、そこからコミットを識別するためにハッシュが使用されます。これは、ファイルの整合性を保証するものではありません。Gitリポジトリは破損し、データを失う可能性があります。実際、gitにはこの種の損失を検出する組み込みコマンドgit fsckがありますが、ドキュメントにあるように、バックアップから破損したデータを復元する責任があります。
fsck私にとって常に悪い言葉のように見えるのか...私は肯定的になり、あなたが適切かもしれないバックアップを持っていない場合、;)
「予防」の意味に依存します。
(すべて、ビット腐敗の第一は、複数の定義を持つ用語である。この問題はない程度のコードはメンテナンスが不足しているためunrunnableになってきて。)
ビットの減衰による破損を検出する可能性が高いという「予防」を意味する場合、はい、それは機能します。ただし、その破損を修正するのには役立ちません。ハッシュはエラー検出のみを提供し、修正は提供しません。
これは一般に「整合性」が意味するものです。データの不正または意図しない操作を検出する可能性であり、それを防止または修正する可能性ではありません。
一般に、いくつかの理由から、RAID1とバックアップ(ZFSスナップショットなどで実装されている可能性がありますが、RAID1 +スナップショットのZFSセマンティクスに精通していません)が必要です。
ディスクに致命的な障害が発生した場合、データを復元するにはRAID1(または最近のバックアップ)が必要です。データの完全なコピー(RAID1)がない限り、ディスク全体のエラーを修正するエラー修正はできません。短いダウンタイムの場合、基本的にRAID1が必要です。
リポジトリの一部または全体を誤って削除した場合、バックアップが必要です(RAID1は、すべてのデバイスへの変更をすぐに反映するため、保護されません)
ただし、LVMなどを介したブロックレベルRAID1自体が2つのディスクのみである場合、データのサイレント減衰から保護されません。2つのディスクのどちらが正しいデータを保持しているかをRAIDコントローラーが認識できません。そのためには、ファイルのチェックサムなどの追加情報が必要です。ZSFとのbtrfsチェックサムが来るところである:彼らは(彼らはと言っているわけではないが使用することができますされて保持する2枚のディスクのどの区別するために、これらの例で使用される、私はZFSかのbtrfsが物事を処理する方法を知りません)正しいデータ。
ビット腐敗を防ぐ
いいえ、まったくありません。gitによって導入されるRAIDのような冗長性はありません。.gitディレクトリ内のファイルがビット腐敗した場合、通常と同様にデータが失われます。
ビット腐敗に対する助け?
Yyyy ...いいえ。ビット腐敗の発生を防ぐことはできませんが、ビット腐敗の検出には役立ちます。ただし、通常の使用中は、独自のアカウントでは実行されません(もちろん、一部のオブジェクトなどをチェックアウトするときに実行されますが、履歴に対しては実行されません)。コンテンツからハッシュを再計算して実際のハッシュと比較するには、cronジョブを作成する必要があります。gitハッシュは文字通り単なるコンテンツハッシュであるため、そうするのは非常に簡単git fsckです。再計算するのは簡単であり、あなたのためにそうします。しかし、ビット腐敗を検出した場合、それに対してできることは特にありません。具体的には、大きなチャンクが自動的に圧縮されるため、大きなオブジェクトのビットが反転された場合、チャンクが完全に失われる可能性があります。