• Okuduklarımdan, seyrettiklerimden aldığım notlar, izlenimler, incelemeler…

Bitrot ve Yeni Nesil Dosya Sistemleri

bitrot2Hani derler ya “panik yapmayın, endişelenmeyin…”, biraz sonra bahsedeceğim “Bitrot” kavramı ile ilgili olarak bence hafiften endişelenebiliriz. Özellikle önem verdiğiniz bir sayısal müzik arşiviniz varsa. Hafif endişe insanı diri tutar 😉 harekete geçmek için motive eder…

Bu arada blog yazısıdır, kısa tutayım, sıkmayayım diyorum. Ama öyle konular var ki özeti bile uzun oluyor. Artık anlayışınıza sığınıyorum…

“Bitrot”, özet olarak veriyi saklayan bitlerin/parçacıkların çeşitli sebepler ile zaman içinde sessizce bozulmasıdır. İngilizce terminolojide “bitrot” yerine “bit rot”, “data degradation”, “data decay”, “data rot” olarak da karşılaşabilirsiniz. Bunların hepsi veri bozulmasına işaret eder. Disklerden bahsediyorsak, bu veri bozulması geleneksel RAID çözümleri ile adresleyebileceğiniz bir şey değil.

Bu yazının amacı “bitrot” kavramından genel olarak bahsetmek. Bitrot’dan sakınmak için bir kullanıcı rehberi değil. Konuyu bizzat araştırmanız lazım. Bu bilgisayardan müzik işleri nispeten yeni konular. Müzik dosyalarımızı bir şekilde disklerde saklıyoruz, belki RAID gibi çözümler uyguluyoruz. Ama hiç dosya sisteminin önemli bir unsur olabileceğini düşünmüş müydünüz? Kendinize şunu sorabilirsiniz: özenle oluşturduğum arşiv önümüzdeki yıllarda ne olacak? Nasıl veri bütünlüğünü koruyabilirim? Önce “bitrot”u anlayalım.

Bitrot pratik olarak nerede karşımıza çıkar?

Hard disk, compact disk ve bunun gibi optik medyada, bellek gibi veri saklama ortamlarında… Örneğin, CD, DVD gibi optik disklerin yüzeyinde kimyasal (oksidasyon ve diski oluşturan malzemedeki diğer bozulmalar) veya fiziksel sebeplerden dolayı bitlerin bozulabilirler. Zaten onun için bazı CD gibi optik ortamlarda “nemden, ışıktan, ısıdan koruyunuz” gibi uyarılar olur. Zaman içinde bazı CD’lerinizde görünür bir çizik olmasa bile çıt-pıt sesler oluşmaya başlayayabilir veya tümden okunmaz hale gelebilir.  Benim de CD’lerimi rip ederken, az kullanmış olduğum halde hata mesajı aldığım CD’lerim oldu.

DRAM örneğine baktığımızda, veri saklanan bir hücrenin elektrik yükü, çeşitli kaçaklar nedeni ile zayıflayabilir ve DRAM’in tutmakta olduğu veriyi (örneğin bir program kodunu) değiştirebilir. Yüksek enerji taşıyan kozmik ışınların da veri bozulmasına yol açtığı bir gerçek.

SSD, flash bellek gibi birimlerde saklanılan veri, veri saklanan hücrelerdeki elektrik yükünün, mükemmel olmayan izolasyona bağlı kaçaklardan dolayı zayıflaması sonucu bozulabilir. Ara sıra bu verinin bir master’dan tekrar kopyalanması bu bozulmanın önüne geçebilir ama master dediğimiz yerde de aynı sıkıntı sözkonusu.

Hard disk, manyetik teyp gibi ortamlarda, veriyi tutan hücrelerin manyetik yönü zaman içinde değişirse de veri bozulmasına yol açıyor. Hiç teyp dinlerken çok derinden parçanın daha önceki veya sonraki saniyelerini duyduğunuz oldu mu? Biliyorsunuz teyp bandı üst üste sarılan bir ortam. Acaba düşük kaliteli, üst üste sarılı teyp bant katmanları birbirini manyetik olarak etkiliyor olabilir mi?

Olay sinsi bir şekilde, yıllar içinde, siz farkına varmadan gerçekleşiyor. Müzik dosyasında sonradan beliren bir “çıt” sesi, film izlerken bir anda sahnenin rengarenk karelerle dolması… RAID ve benzeri yedekleme çözümleri de bunun için çözüm olmuyor, çünkü dosya sistemi oluşan bozulmanın farkına bile varamayabiliyor. Yedekleme yaparken bozulmuş bir veriyi eski sağlam veri üzerine yazmış olabiliyorsunuz.

Peki Ne Yapmalı?

Müzik arşivinizi “yeni nesil bir dosya sistemi”nde saklamalısınız ve donanımınız ECC bellek desteklemeli – Nokta.

Öyle CD’leri rip ettikten sonra atmamalı, bir köşede tutmalı falan…(sanki onlar bitrot’tan etkilenmiyor!). Ama asıl çözüm verilerinizi saklayan dosya sisteminde saklı. Konuyu biraz araştırınca “Yeni Nesil Dosya Sistemleri” (Next Generation File System) kavramı ile karşılaştım. Çeşitli uygulamalar var; ZFS, Btrfs gibi dosya sistemleri… Yeni nesil dosya sistemlerini öncekilerden ayıran en önemli fark “veri bütünlüğü”nün öncelik olarak ele alınmış olması. Yazımın en alt kısmında verdiğim Arstechnica bağlantısı çok yararlı bir yazı ve yeni nesil dosya sistemlerinden bahsediyor. Burada kısa bir özet/alıntı yapalım.

  • 0.nesil dosya sistemi: sistem mistem yok! bulduğuna şükret! (delikli kart, kaset, Atari 2600 ROM kartuşu filan…)
  • 1.nesil dosya sistemi: ilk “random access” özellikleri – yani tüm verinin üzerinden sırayla geçmeden (örn. parçaya kasedi sarmadan) erişmek…
  • 2.nesil dosya sistemi: “klasör” gibi ilk organizasyon belirtileri,
  • 3.nesil dosya sistemi: “metadata”, dosyanın sahipliği, erişim izinleri falan filan,
  • 4.nesil dosya sistemi: “jurnalleme”; önemli bir özellik, dosya sisteminin “gümlemesini” engelleyecek önemler.
  • yeni nesil (5.nesil denebilir): “volume” yönetimi, blok bazında “checksum”, kendinden iyileşme, yazarken atomik kopya (atomic copy-on-write: CoW) , dosyanın anlık görüntüsünü çekme (snapshot), asenkron kopya ve ileriye yönelik büyütülme olanakları…

Yeni nesil dosya sistemi özelliklerinin başlıcalarını gözden geçirelim:

Snaphot: Fotoğrafçılıktan gelen bu terim, dosya sistemi durumunun anlık bir resmi anlamına geliyor. İşler ters giderse her zaman belirli bir zamanda çekilmiş resime geri dönmek mümkün. Sonraki resimler çekilirken, eski resmin değişen öğeleri kopyalanıyor. Aynı kalan öğeler için işaretler (pointer) kullanılıyor. Sonuç olarak verinin tümünün klonlanmasına göre daha az disk alanı harcanıyor.

CoW: İngilizce “inek” ile karıştırmayın diye “o” harfi ufak 🙂 “Copy-on-Write” Türkçesi: “yazarken kopyala”. Eski dosya sistemleri bir veri silindiğinde yeni veriyi onun üstüne yazar. CoW özelliği ile eski veri silinmez, disk alanı üzerinde başka yere kopyalanır. Yukarıda bahsedilen “snapshop” mekanizmasını mümkün kılan da bu zaten. Eskinin kopyası sayesinde, eski resime erişmek mümkündür. CoW yaklaşımının da bazı maliyetleri var; dosyaları parçalama (fragment) eğilimindedir. Bu parçalama ve kopyalama operasyonları nedeni ile erişim süresi biraz düşer.

Volume Manager:  Btfrs gibi dosya sistemleri kendi bünyesinde Volume Manager barındırır. Saklama kapasiteniz bir çok diskten oluşabilir. Basit yaklaşımda her fiziksel disk ayrı bir “saklama alanı”dır.  Volume manager sayesinde herhangi bir “saklama alanı” bir çok fiziksel diski kapsayabilir. Her saklama alanı kendi farklı dosya sistemine sahip olabilir. Örneğin “müzik kütüphanem” adını verdiğiniz bir alan bir çok diskten oluşabilir ama bir tek diskmiş gibi erişirsiniz. Volume manager sayesinde disk bölüm (partition) boyutunun sonradan değiştirilmesi gibi nispeten tehlikeli işlemler de kolay bir şekilde yapılabiliyor.

Checksum: Önce “checksum” kelimesinin “sağlama toplamı” olduğunu hatırlayalım. Yeni nesil dosya sistemleri hem verinin, hem de veriye ait meta dosyasının sağlama toplamını tutabilir. Bu sağlama toplamı tüm disk geneli için değil, veri blokları bazında yapıldığı için hangi verinin bozulduğunu da bulmak kolay olur. Blok bazında sağlama toplamı tutmayan dosya sistemlerinde, RAID özelliği de bit değişikliklerini gözden kaçırabiliyor.

Self Healing Redundant Array (Kendinden İyileşen Yedek Kümeleri): Sağlama toplamı veri bloklarındaki hataları teşhis etmeye yarıyor. Bunun üstüne bir de verinizin yedeğini tutarsanız, o zaman kendinden iyileşme mümkün. Örneğin, btrfs-raid1 veya, btrfs-raid10 “mirroring”, btrfs-raid5 veya btrfs-raid6 “striping with parity” gibi özellikler kullanırsanız, Btrfs sistemi kendi kendini iyileştirebiliyor. Süper bir özellik.

Büyütülebilirlik: Müzik arşivinin ötesinde çok büyük veri tabanlarının gerektirdiği saklama alanı büyütülebilirliği, yeni nesil dosya sistemleri ile mümkün. 16 EiB yani exbibyte gibi bir hacimden bahsediyoruz. 1 Gigabyte’ın 10243 byte olduğunu hatırladıktan sonra 1 Exibyte’ın 10246 byte olduğunu düşünün…

Şimdi kısaca yeni nesil dosya sistemlerinden bahsedelim:

ZFS: ZFS, Sun Microsystems tarafından tasarlanan bir dosya sistemi ve mantıksal hacim yöneticisi – daha sonra Oracle Corporation markası olarak tescil edilmiş. Yeni nesil dosya sistemlerinin öncüsü olan ZFS, veri bozulmasına karşı önlemler, yüksek kapasiteli saklama desteği, etkin veri sıkıştırma, dosya sistemi ve yönetimi kavramlarının bütünleştirilmesi, snapshot ve “yazma durumunda kopyala” (copy-on-write clones), sürekli veri tutarlılığı kontrolü ve otomatik onarım, RAID-Z özgün NFSv4 ACL gibi özellikler içeriyor.

ZFS’in veri bütünlüğünü nasıl sağladığını detayı ile burada anlatamam – hem blog kapsamı dışında, hem de benim bilgi seviyem yeterli olmadığı için. Aşağıda bazı kaynaklar verdim. Ama işi özetini verebilirim. ZFS, veriyi bloklar halinde ele alıyor ve her blok için bir “checksum” tutuyor. Bu checksum verisi veri blokunun içinde değil de veri bloğuna işaret eden adres alanı içinde tutuluyor. Sonra bu işaret alanının tümü için checksum oluşturuluyor. Bu dosya sistemin hiyerarşisi içinde dallardan köke kadar aynı mantıkla uzanıyor…

Bir veri bloğuna erişildiğinde okunan checksum ile daha önce kayıt edilmiş checksum karşılaştırılıyor. Eğer checksum’lar tutarsa veriye yol veriliyor. Eğer tutmaz ise ZFS veriyi düzeltme olanağına sahip. Ama verinin kopyasının bir yerde tutuluyor olması lazım. Farklı bir disk olması gerekmiyor; aynı disk üzerinde de olabilir; kopya-1, kopya-2, kopya-3 gibi. Bu disk kapasitesinin ikiye, üçe bölünmesi demek. Yedek ve sağlam bir kopyadan, orjinal checksum değeri elde edildiğinde orjinal (ama bozulmuş) veri de doğrusu ile güncelleniyor. ZFS, bunun için RAID-Z ve mirroring mekanizmalarından faydalanarak yazılımsan RAID sağlıyor. Ama disklerin JBOT (just a bunch of disk – bu terimi seviyorum – “öylesine bir disk topluluğu”) olarak ayarlanmış olması lazım.

Btrfs: Btrfs (B-tree file system)  Linux için hazırlanmış yeni nesil bir CoW özellikli dosya sistemi. Oracle Corporation tarafından 2007’de geliştirilmeye başlanmış. Btrfs ile, Linux dosya sistemlerindeki çeşitli eksikliklerin giderilmesi hedeflenmiş. Btrfs, bir dosyanın yazılması esnasında “atomik” ve anlık bir resmini (snapshot) çekiyor, klonluyor.

Btrfs, ZFS’e göre daha yeni bir dosya sistemi olduğu için bazı ilave özelliklere sahip. Örneğin dosya seviyesinde klonlama (file-level-cloning) özelliği ile yüzlerce gigabyte’lık veriyi milisaniyeler içinde yazılabilir olarak klonlayabilirsiniz. Btrfs’in diğer ilginç özelliği diskleri kullanırken RAID seviyesini değiştirebilmeniz (online balancing). Ayrıca Btrfs, dosya seviyesinde ve dosya türü seviyesinde sıkıştırma olanağı da sunuyor. Örneğin “.jpeg dosyalarını sıkıştırma” diyebiliyorsunuz – zaten sıkıştırılmış bir format.

Bebeğinizin fotoğraflarını onlarca yıl sonrası için, Dropbox, Google Drive, SkyDrive gibi bulut ortamlarında saklıyorsunuz diyelim; Onlar bitrot konusunda önlem almışlar mı? Bilmiyorum sadece soruyorum. Aslında alternatif soru “teknoloji firmaları o kadar uzun yaşıyor mu?” da olabilir 🙂

Google hazretlerine, ZFS, Btrfs, NAS kelimelerini bir arada sorguluyorum – öyle hazır bir NAS var mı? diye. Pek bir şey görünmüyor. Kendim bir şeyler yapayım dersem, FreeNAS yazılımın ZFS desteklediğini biliyorum sadece.

Bütün bu yazdıklarım, ileride ECC bellekli ve ZFS/BTRFS tabanlı bir sisteme doğru bir kapıyı aralıyor…

Konu bir blog yazısını aştığı için bazı kaynakları paylaşarak burada bitiriyorum.

 

 

 

 

4 Comments:

  1. Çok önemli bir konuya değinmişsiniz Fatih bey. Bildiğim kadarıyla easyNas da btrfs destekliyor. Ciddi bir iş ve masraf tabii yine.. 🙂

    Selamlar.

    • Teşekkürler. Blog’a gelen yorumlardan ben de yeni yaklaşımlar öğreniyorum. easyNAS’a da bir bakacağım. Sanırım ilk aşamada FreeNAS veya easyNAS’ı mevcut donanımım üzerinde deneyebilirim – maliyet nedeni ile. Ancak, ECC RAM destekleyen bir donanıma (hem NAS hem placback PC tarafında) geçmeden iş tam olmuyor…

      • Ben de tesadüfen şu sıralar güvenli bir biçimde müzik dosyaları dahil tüm depolamaişlemlerimi yapabileceğim bir nas arıyordum. Sizin de yazınızda aradığınızı ifade ettiğiniz
        https://www.ixsystems.com/freenas-mini/
        cihazını buldum. Zfs tabanlı.. Bir çok yönden işimize yarayabileceği anlaşılıyor. Ancak biraz gürültülü. Televizyon odası gibi yerlere uygundeğil gibi görünüyor. Belki ilginizi çeker..,

        Bir de çalma bilgisayarına ECC ram şart değil sanki…

      • Müzik dinlediğim odada her hangi bir hard disk sesi, özellikle çok gürültülü olmayan bazı tür müziklerde bana oldukça rahatsız edici geliyor. İşin bir de EMI/RFI kısmı var. Bu nedenle hard disklerin dolayısı ile NAS’ın dinleme odası dışında olması bana uygun geliyor.

        http://www.computeraudiophile.com/content/612-computer-audiophile-pocket-server-c-p-s-v4-pipeline/

        adresindeki tasarıma bakarsanız, o da ECC RAM ve onun destekleyen Intel Xeon işlemcili bir anakart ile yapılmış.
        Bu idealist yaklaşım her çeşit veri bozulmasının önüne geçmek için tercih edilmiş. Ses kalitesinde bir fark yaratırmı bilemiyorum ama teoride mantıklı görünüyor.

Yorum yapın:

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.