23 Mart 2012 Cuma

Dosya sistemi nedir? - III

Bir önceki yazıda dosya sistemini muhtarlığa, verileri de muhtarlığa bağlı sokakta ikamet eden insanlara benzetmiştim. Şimdi bu benzetme ile dosya sistemi kullanmanın getirdiği bazı sonuçlara bakalım.

Dosya sistemi kullanmanın sonuçları 


Diskteki verilere dosya sistemleri aracılığıyla erişmenin iyi ya da kötü bazı sonuçları vardır. Bunlardan da basitliği bozmadan bir kaç örnek vereyim.



1) Disk dediğimiz ortamlar çeşitli sebeplerle fiziksel olarak bozulabilmektedir (örneğin bir CDnin çizildiğini düşünün). Bu durum bizim örneğimizde sokaktaki bazı evlerde yangın çıkmasına benzer. Muhtarlığın bu olaydan haberinin olmasına imkan yoktur. Yanmış evlerden birindeki veriye erişmeye çalıştığımızda disk evin bulunduğu kapı numarasına gidecek, yanmış olduklarını görüp işletim sistemine I/O hatası verecektir. Ancak bundan sonra dosya sistemi bu evleri yanmış olarak kaydeder ve artık buralara veri yerleştirmez.

Muhtarlık da diskin üzerinde bulunduğundan bazı bölümleri yanabilir. Bu durumda dosya sisteminde onarılması güç hasarlar oluşabilir ve diski kullanabilmek için yeniden formatlayıp yeni bir muhtarlık kurmamız gerekebilir. Bu riskten dolayı çoğu dosya sistemi muhtarlığın kopyalarını tutar ya da başka şekillerde dosya sistemi bilgilerini korur.


2) Dosya sistemleri günümüzde oldukça karmaşık veri yapıları kullanmaktadırlar. Ve tüm karmaşık sistemler gibi içerdikleri buglardan ya da I/O sırasında ortaya çıkabilecek hatalardan dolayı kafaları karışabilir. Dosya sistemlerinin buna karşı da önlemleri vardır. Ama en kötü durumda çoğu dosya sistemi her şeyi baştan kontrol etmesini sağlayan bir kontrol aracı sunar (Windows chkdsk, Linux fsck gibi). Bu aracı kullanarak dosya sistemindeki tüm kayıtlar nüfus sayımı yapar gibi evler tek tek gezilerek kontrol edilir. Bu sırada eksik/fazla veriler, yanlış sülale/aile kayıtları ya da yanmış evler varsa tespit edilir ve gerekli düzeltmeler (mümkünse kayıp vermeden) yapılır. Bu sayımın sonunda eğer muhtarlıkta kaydı olmayan veriler bulunursa bunlar kayıp dosyalar olarak özel bir dizinin içine ya da en tepedeki dizinin altına yerleştirilir.


3) Dosya sistemi üzerinde sık sık dosya silme ve yeni dosya oluşturma işlemi yapıldığını düşünelim. Bu durumda bizim örneğimizdeki gibi bir dosya sisteminde dosyalar kaçınılmaz olarak parça parça evlere dağılmış halde bulunacaklardır. (Windows XP SP3 ve sonraki işletim sistemlerinde defrag tek parça olan ve parçalı halde bulunan dosyaları renkli renkli göstermektedir.) Disket, harddisk, CD gibi ortamlarda disk I/O işlemleri yaparken manyetik iğne ya da laser ucu verilere tekerlek şeklindeki ortamı döndürerek ulaştığı için (pikap gibi diyeceğim ama pikap mı kaldı?) diskin bir başına, bir sonuna, bir ortasına sarıp durmakta ve zaman kaybetmektedir. Çoğu disk için en rahat okuma atlama yapmadan bir yerden başlayıp kaptırıp gitmek olduğundan dosyaların tek parça halinde bulunması büyük kolaylıktır. Ext tipi dosya sistemlerinde aynı aileyi mümkün olduğunca yanyana yazan bir yapı olduğunda dosyaların parçalanmasına oldukça dayanıklılardır.


4) Bir dosya silindiğinde yalnızca muhtarlıktan ismi silinir, dolayısıyla dosyanın oturduğu adres kaybolur. Dosya kurtarma programları bu şekilde silinen dosyaları tüm diski tarayarak bulabilirler. Bu yüzden Windows'ta eğer bir dosyayı yanlışlıkla sildiyseniz diske hiç birşey yazmadan (dosya kurtarma programı dahil!) dosya kurtarma programı ile tararsanız büyük olasılıkla sildiğiniz dosyayı kurtarabilirsiniz. Benzer bir şekilde quick format atılmış disklerde de yalnızca muhtarlık yenilenmiştir, aslında bütün dosyalar hala diskin üzerinde aynı yerlerinde durmaktadır. Ext tipi dosya sistemlerinde adresler daha farklı şekilde dağıtıldığından ve bu dağılım da dosyanın kaydının bulunduğu inode da tutulduğundan dolayı, inode silindikten sonra dosya kurtarmak imkansız değilse bile çok zor ve düşük olasılıklıdır. Tabii en iyisi düzenli backup almak.

Bir de tersine dosyaların kurtarılamayacağından emin olmak isteyebilirsiniz. Bu durumda işletim sisteminin silme özelliği yerine shred gibi özel olarak bu iş için yazılmış programları kullanmanız dosyaların kurtarılmasını oldukça zorlaştıracaktır. Dosyaların kurtarılmasını imkansız hale getirmek tartışmaya açıktır ve aynı alanın üzerine birkaç kez yazmaktan diskin üzerinde EMP patlatmaya kadar yöntemler önerilmektedir. Merak edenler için dosya kurtarma konusunda pek çok kaynak mevcut.


5) Dosya sistemindeki evlerin boyutlarını seçebileceğimizi söylemiştim. Diyelim ki 4Kblık yani 4096 karakterlik evler oluşturduk. Ama oluşturduğumuz tüm dosyalar 1024 byte ya da daha küçük boyutlarda. Bu durumda her bir evin en azından 3/4'ü boş kalıyor. Yani başka bir deyişle diskin 3/4'ünden fazlasını kullanamıyoruz. Bu durumda diski formatlarken evlerin boyutlarını 1024 olarak seçmemiz daha uygun olur.

Benzer şekilde çok küçük evlere çok büyük dosyalar yazdığımızda hem bu dosyaların parça parça dağılması ihtimalini arttırmış oluruz, hem de muhtarlığımızda çok fazla sayıda ev numarası bulunduğundan işlerin görece daha hantal yürümesine sebep olabiliriz.

Eğer diske sürekli küçük dosyalar ya da sürekli büyük dosyalar yazılacaksa ev boyutu dışında dosya sistemini de buna göre seçmek verimli olacaktır. Örneğin NTFS, reiserFS ve VMFS büyük dosyaların yanında sınırlı sayıdaki çok küçük dosyayı olabildiğince verimli saklayabilmek için kendi özel yöntemlerini kullanmaktadırlar. Benzer şekilde büyük dosyalarda fragmantasyonu azaltmak ve hızlı erişim sağlamak için dosya sistemleri extend yapısı kullanmaya başlamıştır.


Yazının sonunda bir de clustered dosya sistemlerinden bahsetmek istedim ama muhtar filan diye basit bir şekilde anlatmanın yolunu bulamadım.

Kabaca dosya sistemleri bu işe yarıyor. Altındaki mantık benzer olsa da farklı dosya sistemleri çok farklı yapılar oluşturarak çalışıyor. Başta da söylediğim gibi bu yazı son on yıldır kullanılan dosya sistemleri düşünüldüğünde eksikler ve yanlışlarla dolu. Ayrıca yazıyı daha fazla uzatmamak için çoğu detayı da atladım ya da tam doğru bir şekilde yazamadım. Bu konuda bilgi edinmek isteyenlerin işine yaraması dileğiyle.

Hiç yorum yok:

Yorum Gönder