Saya membaca bahwa ZFS dan Btrf menggunakan checksum untuk mencegah degradasi data dan saya membaca bahwa Git memiliki integritas melalui hashing pada dasarnya segala sesuatu dengan setiap commit.
Saya akan menggunakan server Git pada Linux NAS dengan Btrfs RAID 1 untuk penyimpanan, tetapi jika Git memiliki integritas saya kira ini tidak perlu (setidaknya tidak jika mencegah degradasi data yang saya inginkan).
Pertanyaan: Jadi, apakah integritas Git meskipun dengan hashing dasarnya semuanya dengan masing-masing komit mencegah atau membantu melawan bit-rot?
git
zfs
btrfs
data-integrity
MADFUN dan Bahagia
sumber
sumber
Jawaban:
Hashing Git hanya terjadi pada saat komit dibuat, dan dari sana hash digunakan untuk mengidentifikasi komit. Ini sama sekali tidak menjamin integritas file. Repositori Git dapat rusak dan kehilangan data. Sebenarnya, git memiliki perintah bawaan untuk mendeteksi kehilangan semacam ini, git fsck , tetapi seperti yang dikatakan dalam dokumentasi, Anda bertanggung jawab untuk memulihkan data yang rusak dari cadangan.
sumber
fsck
selalu terlihat seperti kata yang buruk bagi saya ... Saya kira jika muncul positif dan Anda tidak memiliki cadangan yang mungkin sesuai;)Tergantung pada apa yang Anda maksud dengan "mencegah".
(Pertama-tama, bit-busuk adalah istilah dengan banyak definisi. Pertanyaan ini bukan tentang kode yang tidak dapat dihapus karena kurangnya pemeliharaan .)
Jika Anda maksud dengan "mencegah" bahwa ia kemungkinan akan mendeteksi korupsi dengan peluruhan bit, ya, itu akan berhasil. Namun tidak akan membantu untuk memperbaiki korupsi itu: hash hanya menyediakan deteksi kesalahan , bukan koreksi .
Ini umumnya apa yang dimaksud dengan "integritas": Kemungkinan untuk mendeteksi manipulasi data yang tidak sah / tidak disengaja, bukan kemungkinan untuk mencegah atau memperbaikinya.
Anda umumnya masih menginginkan RAID1 bersama dengan cadangan (mungkin diimplementasikan dengan snapshot ZFS atau serupa, saya tidak akrab dengan semantik ZFS pada snapshot +1 RAID1 +), karena beberapa alasan:
jika disk gagal fatal, Anda perlu RAID1 (atau cadangan baru-baru ini) untuk memulihkan data Anda; tidak ada koreksi kesalahan yang dapat memperbaiki kesalahan seluruh disk, kecuali jika ia memiliki salinan lengkap data (RAID1). Untuk downtime singkat, Anda pada dasarnya harus memiliki RAID1.
jika Anda secara tidak sengaja menghapus bagian atau seluruh repositori, Anda memerlukan cadangan (RAID1 tidak melindungi Anda karena segera mencerminkan perubahan ke semua perangkat)
RAID1 tingkat blok (mis. Via LVM atau serupa) dengan hanya dua disk itu sendiri tidak akan melindungi Anda terhadap pembusukan data secara diam-diam: pengontrol RAID tidak dapat mengetahui yang mana dari dua disk yang menyimpan data yang benar. Anda memerlukan informasi tambahan untuk itu, seperti checksum atas file. Di sinilah ZSF dan btrfs checksum datang dalam: mereka dapat digunakan (yang bukan untuk mengatakan bahwa mereka yang digunakan dalam kasus ini, saya tidak tahu bagaimana ZFS atau btrfs menangani hal-hal di sana) untuk membedakan mana dari dua disk memegang data yang benar.
sumber
Tidak, sama sekali tidak. Tidak ada redundansi seperti RAID yang diperkenalkan oleh git. Jika file dalam
.git
direktori Anda mengalami bit-rot, Anda akan kehilangan barang seperti biasa.Yyyy ... tidak. Ini tidak membantu melawan bit-rot yang terjadi, tetapi akan membantu mendeteksi bit-rot. Tetapi pada saat penggunaan normal tidak melakukannya dengan akun sendiri (baik jelas itu terjadi ketika Anda memeriksa beberapa objek dan sebagainya, tetapi tidak untuk sejarah Anda). Anda harus membuat pekerjaan cron untuk menghitung ulang hash dari konten dan membandingkannya dengan hash yang sebenarnya. Sangat sepele untuk melakukannya, karena
git
hash secara harfiah hanyalah hash konten, itu sepele untuk menghitung ulang mereka dangit fsck
melakukannya untuk Anda. Tetapi ketika mendeteksi bit-rot, tidak ada yang khusus yang dapat dilakukan untuk melawannya. Secara khusus, karena potongan yang lebih besar secara otomatis dikompresi, Anda mungkin akan mengalami kerugian chunk total jika sedikit benda yang lebih besar dibalik.sumber