BTRFS elektrik kesintilerinde veri tutarlılığını garanti ediyor mu?


11

ZFS'nin belirttiği gibi ,ZFS'nin dokunulmaz olduğu iddia ediliyor ZFS, elektrik kesintilerine karşı savunmasız olabileceğini kabul eder.

BTRFS için böyle bir açıklama bulamadım. Elektrik kesintileri arasında dayanıklı mı (veya tasarlanması / planlanması)?


yeniden oku. "Havuzunuz arızalı donanım veya elektrik kesintisi nedeniyle hasar görmüşse, bkz. ZFS Depolama Havuz Çapında Hasarı Onarma." (..) girişimi kullanarak havuzu kurtarmak için zpool clear -F komutu
Michael D.

Yani "ZFS veri tutarlılığını garanti etmez, sadece kurtarmaya çalışır " mı diyorsunuz?
ceremcem

Evet. Ele alınacak birkaç önbellek, yerleşik bir önbellek, OS önbellekleri / arabellekleri vardır. Bir noktada bir olduğunu syncya da flushdiske önbelleklerini yazar, hangi ya da veri kaybolacak, bir elektrik kesintisi sırasında. Sabit disk sağlıklıysa ve elektrik kesintisi yoksa ZFS mükemmel bir şekilde çalışabilir (veya UPS'i bir kesinti sırasında bilgisayarı düzgün şekilde kapatmak için bağlanır). FAT32 hakkında ne söyleyemezsin.
Michael D.

2
Veri kaybı bir güç kaybı meydana geldiğinde doğal bir sonuç olduğu için endişe verici değildir, ancak veri tutarlılığı benim durumumda bir endişe kaynağıdır. Bir dosya sistemi bu tür aşırı koşullarda verileri kaybedebilir, ancak diskte tutarsız verilere neden olmamalıdır. Sürekli enstantane tesisine ihtiyacım var, bu yüzden BTRFS ile devam edeceğim. NILFS2 benim durumumda en yakın seçenektir.
ceremcem

1
Ben #btrfs IRC sorusunu sordum, onlar değil dedi - should be ok if your hw isn't "buggy""buggy" anlamına gelir your hw has correct flush/barrier semantics. Bu soruya IRC ile ilgili bir bağlantı gönderdim, umarım birileri ayrıntılı olarak zaman alacaktır; ama şimdilik bu kadar.
Hi-Angel

Yanıtlar:


5

Ben #btrfs IRC sorusunu sordum, onlar değil dedi - should be ok if your hw isn't "buggy""buggy" anlamına gelir your hw has correct flush/barrier semantics.

TL; DR: Bu, btrfs'nin güç kaybı nedeniyle ZFS'ye benzer şekilde veri bozulmasına karşı korunduğu anlamına gelir.

İşte nedeni: ZFS ve btrfs'nin ardındaki genel fikir benzer. Her ikisi de veri yapısı olarak Merkle ağaçlarını kullanır . Yazmaların güncellenmesi için disklerde birden çok blok gerekebilir. Dosya sistemi, yeni verileri boş bloklara yazarak (mevcut bir dosya değiştirilse bile, bu nedenle eski durumu yansıtan blokları değiştirmeye gerek yoktur) ve yeni bir güncellenmiş ağaç oluşturarak bunu ele alır. Tüm ağır kaldırma işlemi tamamlandıktan ve veri + güncellenmiş ağaç diske yazıldıktan sonra, baş işaretçisi değişikliği görünür hale getirmek için yeni ağaca güncellenir.

Bir dosyaya yazarken işlerin nasıl davranması gerektiği aşağıda açıklanmıştır:

  1. Diskteki boş bloklara veri yazın.
  2. Merkle ağacının * bir kopyasını oluşturun, (1) 'de yazılı değişikliklere göre güncelleyin.
  3. Donanımdan verileri diske temizlemesini isteyin - donanım bekleyen tüm verileri yazar.
  4. Kafa işaretçisini yeni Merkle ağacına güncelleyin.
  5. Artık gerekli olmayan ücretsiz eski bloklar.

(4) 'ten sonra güç kesilirse işlem tamamlanır. (1) ila (3) arasındaki adımlarda güç kesilirse, dosya sistemi eski duruma gelir (adım (1) 'de yazılan veriler kaybolur ancak dosya sistemi tutarlıdır). Dosya sistemi hatalarını kontrol etmeye gerek olmadığını unutmayın, bu da dosya sisteminin hemen kullanılabilir olduğu anlamına gelir, bu da büyük bir avantajdır (büyük dosya sistemlerinin kontrol edilmesi çok uzun sürebilir!).

İşte "buggy" donanımı ile işlerin nasıl yanlış gidebileceğine bir örnek:

  1. Diskteki boş bloklara veri yazın.
  2. Merkle ağacının * bir kopyasını oluşturun, (1) 'de yazılı değişikliklere göre güncelleyin.
  3. Donanımdan verileri diske temizlemesini isteyin - donanım tamamlandığını doğrular, ancak tamamen temizlenmez (örn. Veriler diskin geri yazma önbelleğinde kalabilir).
  4. Kafa işaretçisini yeni Merkle ağacına güncelleyin. Bu veriler, beklemedeki diğer verilerden önce diske yazılır (örneğin, disk kafası doğru konumda olduğundan).
  5. Adım (1) ve (2) 'de yazılan veriler diske yazılır.
  6. Artık gerekli olmayan ücretsiz eski bloklar.

(4) ve (5) arasında güç kesilirse veya adım (5) gerçekleştirilirken dosya sistemi tutarsız hale gelir. Sonuç olarak, Merkle ağacı ve / veya veriler sadece kısmen yazılabilir ve dosya sisteminin tutarsız olmasına neden olabilir.

Uygulamada, RAID denetleyicilerini kullanırken özellikle dikkatli olmalısınız . Genellikle diskteki geri yazma önbelleklerini devre dışı bırakırlar ve bunun yerine kendi geri yazma önbelleklerini kullanırlar. Burada yanlış gitmenin iki yaygın yolu vardır:

* Burada işleri basitleştiriyorum. Aslında tüm ağacı kopyalamak gerekli değildir. Yalnızca değişen parçaların eklenmesi gerekir - kalan parçalar eski ve yeni ağaç arasında paylaşılabilir .


Bu güzel açıklama için teşekkürler. Bununla birlikte, IRC görüşmesi de dahil olmak üzere tüm talepler için alıntı yapılması gerekiyordu. O zaman cevabınız kabul edilecektir.
ceremcem

IRC günlükleri ile ilgili olarak, @ Hi-Angel'ın buradaki yorumundan bahsediyordum. Belki referans verebilir mi? Yine de diğer kısımlara birkaç referans daha ekledim.
Martin

BTRFS, Merkle ağaçlarını kullanmaz, B-ağaçlarını kullanır (bu nedenle 'B-TRee FileSystem') ve hata örnekleriniz, yazma engellerinin donanım tarafından düzgün bir şekilde uygulanmamasını gerektirir (bu, bugünlerde oldukça alışılmadık bir durumdur) . Aksi takdirde, iyi cevap.
Austin Hemmelgarn

Btrfs tarafından kullanılan ağaçlar aslında her iki B- ağacıdır (bu özellik ağacın "şekli" ve kendi kendini dengeleyen olmalarıdır) ve karma / Merkle ağaçları (yapraklar bazı verilerin hashını içerir, düğümler böylece her değişiklik köke kadar yayılır). Bu karmaları doğrulayabilmek, btrfs ve ZFS'nin bozuk verileri algılamasına (ve "yansıtma" modunda kullanıldığında başka bir diskten okumasına) olanak tanır.
Martin
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.