Geçen yıldan beri ZFS’e merak sardım. Bilen bilir, bilmeyen için ZFS bir dosya sistemi diyelim. Şimdi övmek gibi olmasın da “Dosya sistemlerinde son harf” derler. 🙂
Benim için ZFS merakı düşük maliyetli disklerle yüksek güvenlikli veri depolama isteği olarak başladı. Evdeki sanallaştırma sistemimle biraz test ettikten sonra 2017 sonu/2018 başı gibi kullanılmış bir HP Microserver N40L aldım. Üzerine de birazdan göreceğiniz 3TB “yarı-kurumsal” Hitachi disklerden iki tane ekledim. Toplam maliyet verdiğim tarihlerde 1100TL gibi bir şey oldu. Bu paraya neredeyse sınırsız anlık yedeklemeler, gelişmiş veri yönetimi gibi kurumsal depolama özellikleri dahil.
Bu yazıda ise işin veri kaybı önleme kısmına değineceğim.
Neyle karşılaştırıyorum?
Kurumsal depolama (enterprise storage) sınıfı, yüksek performans gerektirmeyen(1) türde sabit diskler taşıyan depolama sunucularıyla karşılaştırıyorum. Bu tip sistemlerin TB başına maliyetleri rahatlıkla 1000 Doları bulabiliyor. 10TB için 10 bin dolar yuvarlak hesap diyelim. Hedef bu maliyeti 2500 Dolar mertebesine düşürmek olsun. Yuvarlak rakam iyidir.
Karşılaştırmadaki temel kriterimiz veri güvenliği. Şimdi size “XxX Bilgisayar’da hard disk 300 lira, biz niye şirkete 1000 liraya alıyoruz?” sorusunun cevabı için bir bilgi vereceğim: Tüm sabit diskler bir gün bir bitlik hata yapar. (2) O hata diski taktığınız gün de gelebilir, beşinci yılda da gelebilir. Önemsiz bir fotoğrafın bir yerlerinde de olabilir, o çok önemli veritabanı yedeğinizde de olabilir. Daha da kötüsü, bu hata sessizdir. O veriye ihtiyacınız olana kadar farketmeyebilirsiniz, genelde de farketmezsiniz.
İşte kaçınmaya çalıştığımız nokta veritabanı veya bir sözleşme dosyası gibi önemli bir bilginin çöp olması. (3) Bilgisayarcıdan alacağınız ucuz diskler 10^14 bitte bir hata yapar genelde. Kurumsal sınıftaki pahalı SAS diskler 10^16 bitte bir. Yani kişisel bilgisayarınızdaki ucuz SATA diskin hata yapma ihtimali, şirkete aldığınız pahalı SAS diskin 100 katıdır.
Sunucularımda RAID1 yapıyorum zaten?
Aferin. Ama ne yazık ki sadece RAID ile bu istatistiki veri hatasından kurtulamazsınız.
RAID1, diskin tamamen bozulmasına karşı alınmış bir önlemdir. Kabaca iki tane defteriniz var diyelim. Bunlar birbirinin kopyası. Defterlerden biri kaybolur, üstüne bira dökülür, yanarsa kırtasiyeden yeni defter alıp elinizdeki sağlam defterden yeniden yazabilirsiniz.
Peki sağlam defterden yenisine yazan arkadaş, defterdeki 1000000TL’yi yanlışlıkla 100000TL olarak okursa? Tebrikler, nurtopu gibi bir veri tutarsızlığınız oldu. Şimdi 5 yıl sonra arayıp durun hangisi doğru. 🙂
ZFS bu konuda ne yapıyor?
Zekice bir iş yapıyor: Yazdığı her veri grubu için, bir yerlere bu verinin bir “özetini” yazıyor. Özetten kastım checksum; Türkçesini bulamadım. 🙂 Kabaca, o dosyayı oluşturan bilgi parçasını matematiksel bir işlemden geçirip, başka bir parçayla aynı olması imkansıza yakın bir değer elde ediyorsunuz. Gelecekte dosyada hata olduğundan huylanırsanız, bu değeri tekrar hesaplayıp ilk başta elde ettiğinizle karşılaştırıyorsunuz. Aynı çıktıysa hata yoktur. Farklıysa, bunlardan biri yanlıştır.
Dolayısıyla ZFS, okuduğu verinin doğru olup olmadığını her zaman anlayabilir. Pratikte bunu iki diskten oluşan bir ZFS grubu yapıp, veri trafiğinize göre belli periyodlarla diskleri taratarak kullanırsınız. ZFS her iki diskteki veriyi okur, daha önce yazdığı kontrol bilgisiyle karşılaştırır ve herhangi birinde hatalı veri tespit ederse sağlam bilginin olduğu diğer diskten okuyup bunu düzeltir.
Tamam. Bana fiyatlardan bahset
Yuvarlak rakam kullanıyorduk, 10TB için 10 bin USD teklif aldığınız cihazla karşılaştıralım. TB başına 1000 Dolar.
Karşısına koyduğum sistem 4TB büyüklüğünde 6 tane diskten(4) oluşuyor. Veri güvenliği amacıyla bunları ikişerli olarak birbirinin kopyası şeklinde kullanıyoruz; yani 12TB depolama alanı çıkıyor. GIGABYTE’ın Intel Xeon destekli bir anakartını seçtim. İşlemci ve bellekte lükse kaçıp Intel Xeon E5-2620 ile 64GB ECC özellikli RAM kullandım. Daha sonraki bir günlük yazımda bu kadar belleğin gerekliliğini de sorgulayacağım. 🙂 Toplam rakam 2300USD mertebesinde çıktı.
Yani kurumsal depolamada gayet normal bir alan olan 10TB için 8.000USD maliyet avantajı var. Bu avantajı ucuzlatma olarak düşünebilirsiniz ama veri güvenliği ve sürekliliği için bir adım öteye geçmenizi öneririm:
- Farklı lokasyonlarda depolama. Ana binanızın yangın veya deprem gibi bir doğal afetten hasar gördüğünü düşünün. İkinci bir lokasyonda bu sistemin aynısını tutmak isterseniz maliyet farkı 16.000USD’ye çıkıyor.
- Donanım arızası durumunda faaliyetlerinizin tamir süresince durmaması için ana lokasyonunuzda ikinci bir makinayı bekletebilirsiniz. Bu makina sadece birincil deponuzun servis dışı kaldığı durumda hizmete girmek üzere hazırda bekleyebilir. Üçüncü cihaz, maliyet avantajı 24.000USD.
Notlar
- Ağır veritabanı uygulamaları ve benzeri işlerde kullanacağınız depolama sisteminde yüksek miktarda bellek, pahalı işlemciler vb. olacak. O zaman başka türlü karşılaştırmak gerek. Yine de depolama altsistemini ZFS düşünmekte fayda var.
- Sabit disk teknik verilerine baktığınızda “Unrecoverable Read Error” diye bir şey göreceksiniz. Bilgisayarcıdan aldığınız SATA diskte o 10^14 olur. Yazıda gördüğünüz “Nearline Enterprise” cinsi SATA disklerde 10^15, tam kurumsal “Enterprise” disklerde 10^16. Bu değer o diskin hata yapma ihtimalini verir. “10 üzeri 15 bitte bir hata yapma ihtimalim var” demektir mesela.
- Bazı bilgilerinizde 1 bit çok önemli olmayabilir; mesela bir JPG fotoğrafında. Ama veritabanı yedeğinizin tamamen bozulmasına yolaçabilir.
- Evde de kullandığım disklerin 4TB versiyonunu hesapladım. Hitachi Ultrastar 4K7000 serisi.