Git veri bozulmasını önler mi


40

ZFS ve Btrfs’in veri bozulmasını önlemek için sağlama toplamı kullandığını ve Git’in her bir taahhütle ilgili her şeyi bir araya getirerek bütünlüğü olduğunu okudum.

Depolama için Btrfs RAID 1 içeren bir Linux NAS'ta Git sunucusunu kullanacaktım, ama Git bütünlüğüne sahipse, bunun gerekli olmayacağını tahmin ediyorum (en azından istediğim kadar veri bozulmasını önlemek değilse).

Soru: Git'in bütünlüğü, her bir taahhütte esasen her şeye sahip olmasına rağmen, bit-çürümesine karşı önlem veya yardım mıdır?



3
Ve yerel klonlara dikkat edin, git, aynı dosya sisteminde bir klon oluştururken zor bağlantıları kullanmaya çalışır. Bu, klonlamanın inanılmaz hızlı olmasını sağlar, ancak bir nesne bozulursa her iki klon da bozuktur.
allo

Yolsuzluk yalnızca belirli bir makinedeki bazı eski nesneler için meydana gelirse, bu nesnelerin deponun diğer klonlarında bulunma olasılığının daha yüksek olduğunu, ancak (daha az) daha yeni dosyaların hala kullanılabilir olabileceğini unutmayın. Yine de, bunun paket dosyalarıyla nasıl bütünleştiğini bilmiyorum.
o11c

Yanıtlar:


61

Git'in kargaşası yalnızca komisyonların oluşturulduğu zamanda olur ve buradan da karmaları belirlemek için kareler kullanılır. Bu hiçbir şekilde dosyaların bütünlüğünü garanti etmez. Git depoları bozulabilir ve veri kaybedebilir. Aslında, git, bu tür bir kaybı, git fsck'i tespit etmek için yerleşik bir komut içerir , ancak belgelerin dediği gibi, bozuk verileri yedeklerden geri yüklemek sizin sorumluluğunuzdadır.


4
Neden her fsckzaman bana kötü bir kelime gibi geliyor ... Sanırım olumlu bir sonuç
CAD97

7
@ CAD97 Programcılar, bu göreceli olarak zorlayıcılar için bilinir. Aslında oldukça yaygın ... Kafamın üstünden sh (shell), bsh (Bourne kabuğu) ve sonra bash (Bourne yine kabuğu) gibi şeyler var ...
Nelson

1
@ Nelson balıkları unutma
user253751

@ CAD97 Cehennem, sizin için doğru çalışmadığı zaman git adının kendisi gibi kabul edilebilir.
SGR

1
@ CAD97 - ve fvcctk gibi bayraklarla çalıştırılmadan önce - çünkü - eğer böyle çalıştırıyorsanız, verileriniz zaten "fvcctk" ed olabilir. ;)
Joe,

16

Ne demek istediğine "önle" ye bağlı.

(Her şeyden önce, bit-rot, birden çok tanımı olan bir terimdir. Bu soru, bakım eksikliğinden dolayı kodun geri alınamaz hale gelmesiyle ilgili değildir .)

"Önlemek" derken, yolsuzluğun bitlerin çürümesiyle tespit edilebileceğini, yani işe yarayacağını kastediyorsanız. Ancak edecek değil yardım yolsuzluğun düzeltmek için: karmaları sadece hata sağlamak algılama değil, düzeltme .

Genel olarak "bütünlük" ile kastedilen budur: Verilerin yetkisiz / kasıtsız manipülasyonunu saptama olasılığı, onu önleme veya düzeltme olasılığı.

Genelde hala bir RAID1'i yedeklemelerle birlikte isteyebilirsiniz (muhtemelen ZFS anlık görüntüleri veya benzerleriyle uygulanır; RAID1 + anlık görüntüleri üzerindeki ZFS anlambilgisine aşina değilim):

  • Bir disk önemli bir şekilde başarısız olursa, verilerinizi geri yüklemek için bir RAID1'e (veya yeni bir yedeklemeye) ihtiyacınız vardır; Verilerin tam bir kopyası bulunmadığı sürece, bir diskin tamamı için bir hata düzeltmesi düzeltilemez (RAID1). Kısa bir kesinti için, esasen RAID1'e sahip olmalısınız.

  • yanlışlıkla havuzun bir kısmını veya tamamını silerseniz, bir yedeğe ihtiyacınız vardır (RAID1 sizi tüm cihazlara hemen yansıttığından koruyamaz)

Yalnızca iki diski olan blok düzeyinde RAID1 (örneğin LVM veya benzeri), sizi sessiz veri bozulmalarına karşı korumanıza izin vermez : RAID denetleyicisi, iki diskin hangisinin doğru verileri tuttuğunu bilemez. Bunun için dosyalar üzerinde bir sağlama toplamı gibi ek bilgilere ihtiyacınız var. ZSF ve btrfs sağlama içinde geldiği budur: Onlar (onlar demek değildir ki kullanılabilir edilir , ben ZFS ya btrfs şeyler var nasıl ele bilmiyorum bu durumlarda kullanılır) tutan iki diskin hangi ayırt etmek Doğru veri.


5
İstemiyorsan aynaya bakmana gerek yok. ZFS, 1, 2 veya 3 sürücünün parite değerinde şeritlemeyi destekler; ve isteğe bağlı sayıda sürücüyle yansıtma (tek bir sürücü dahil = artıklık yok). Ana yığın depolama alanım, RAID6 temelli dosya sistemi olan RAIDZ2 yapılandırmasında altı sürücülü ZFS'dir (iki sürücünün yedekliliği artıyor). Bu, bu sürücülerden birinin kaybını ve bir tanesinde düzeltilemez hataları algılayabilir ve kurtarabilir; veya iki sürücünün kaybedilmesi ve resilver sırasında başka hiçbir yerde hata olmaması; veri kaybı olmadan. Yedeklemeler hala önerilir.
17'de CVn

1

bit-çürümesini önlemek

Hayır, hiçbir şekilde olmaz. Git tarafından tanıtılan RAID benzeri artıklık yoktur. Dizininizdeki dosyalar .gitbiraz çürürse, her zamanki gibi şeyler kaybedersiniz.

bit-çürümesine karşı yardım?

Yyyy ... hayır. Bit-çürümesinin oluşmasına karşı yardımcı olmaz, ancak bit-çürümesinin saptanmasına yardımcı olur. Ancak normal kullanım sırasında hiçbir noktada bunu kendi hesabına yapmaz (belli ki bazı objeleri ve benzeri şeyleri kontrol ettiğinizde ama geçmişiniz için değil). İçerikteki karmaları yeniden hesaplamak ve gerçek kareler ile karşılaştırmak için cron işleri oluşturmanız gerekecektir. Bunu yapmak oldukça önemsizdir, çünkü gitkarmalar tam anlamıyla basitçe içerik karmalarıdır, bunları yeniden hesaplamak önemsizdir ve git fsckbunu sizin için yapar. Fakat bit-çürüğünü tespit ettiğinde, özellikle buna karşı yapabileceği hiçbir şey yoktur. Özellikle, daha büyük parçalar otomatik olarak sıkıştırıldığı için, daha büyük bir nesnede bir bit ters çevrilirse büyük olasılıkla toplam yığın kaybına maruz kalacaksınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.