Veri Yönetimi: Dosya Yönetim Sistemleri

Genel olarak işletim sistemlerinde bir dosya sistemi dosyaların nasıl depolanacağını denetleyen ve yöneten yapı ve mantık kurallarına verilen genel addır. Dosyalar en temelinde ikili olarak depolanan sıralı verilerden oluşur. Dosya sistemi bu verileri parçalara ayırıp her bir parçaya bir isim vererek kolaylıkla disk içerisinde tanımlar ve diğer verilerden izole eder. Dosya sistemleri temel olarak bürolarda kullandığımız dosya yönetim sistemlerinden pek farklı değildir. Nasıl bürolarda ilişkili dosyalar aynı klasörlerde, benzer bilgileri içeren klasörler aynı raflarda, aynı bilgi gruplarını içeren raflar da aynı dolaplarda depolanırsa, dosya sistemlerinde de temelde böyle bir durum bulunmakta. Nasıl bu klasör ve raf hiyerarşisi olmadan dosyaları depolamak karmaşa ve dosyaların kayıplarına sebebiyet verirse ve ek bir iş yükü oluşturursa, bilgisayar sistemlerinde de aynı şekilde depolama yönetimi olunmadan bu ikili veriler yönetilemeden depolanırsa dosya kayıplarına ve sistem üzerinde iş yüküne sebebiyet vermektedir

Dosya yönetim sistemleri, 1961’de bilgisayarlı dosyalama için kullanılmaya başlandı. Genel olarak dosya yönetim sistemlerinin mantıksal ve yapısal kurallarının belirlenmesi ve genel dosya yönetimi yaklaşımlarının yaygınlaşması ise 1960’ların ortası ve sonuna dayanmaktadır. Bilgisayar sistemlerinin yaygınlaşması ile dosya sistemleri de yaygınlaşmıştır.

Dosya yönetim sistemleri veri gruplarını depolamak için farklı yöntemler ve farklı yaklaşımlar kullanmaktadır. Bunların her birinin yapısı, bazen belirli uygulamalar için kullanılmak üzere tasarlanmışken, bazı dosya yönetim sistemi ise işletim sistemleri tarafından kullanılmak üzere tasarlanmıştır. Örneğin ISO 9660 dosya sistemi yaygın olarak optik disklerde sıkça kullandığımız ancak pek de haberdar olmadığımız bir dosya yönetim sistemidir. Bazı durumlarda ise dosya sistemleri diskler veya donanımlar üzerinde reguler verileri depolamak için kullanılırken, bazı dosya sistemleri ise nesne işlemleri ve nesneler kullanarak belirli hesaplamalar için özelleştirilmiştir ve bazı donanımları yönetmek için kullanılır. Örneğin Linux ve Unix-like işletim sistemlerinde sanal dosya sistemleri işlemleri ve donanımları yönetmek için sysfs, çekirdek bazında işlem havuzunu yönetmek için procfs sanal dosya sistemleri kullanılmaktadır.

Dosya Sistemlerinin Mimarisi

İlk katmanda çekirdeğin sağladığı uygulama programı arayüzüdür. Bu arayüz bir dizi dosya komutundan oluşan bir API sağlar ve bu katman aracılığı ile açık dosya tablosu girişleri ve dosya başına yapılan dosya erişimi, dizinleme ve koruma işlemlerini yapmayı sağlar. Bu API temel dosya işlemlerine ek olarak bazı dosya yönetim sistemleri için dosya erişim modülleri ve çekirdek bazında dosya yönetimini sağlayan ek araçlar da içerebilir.

İkinci katman ise isteğe bağlı olan sanal dosya sistemidir. Bu dosya sistemi ayrıca mantıksal dosya sistemi olarak adlandırılır. Bu sanal dosya sistemi her biri bir dosya sisteminin uygulaması olarak çalışır ve birden çok eşzamanlı fiziksel dosya sisteminin çalıştırıp desteklenmesini sağlar.

Üçüncü katman ise fiziksel dosya sistemidir. Bu katma cihazın çalışma yapısını belirler. Okuduğu veya aldığı verileri işleyerek bellek yönetiminin temelini sağlar. Bu katman blokların fiziksel diskte yerleştirilmesinden veya çıkarılmasından sorumludur.

Daha alt katmanlarda ise bizzat diskin verileri yönettiği katmandır ve direk donanım katmanıdır. Bu katmanda yer alan çeşitli kontrolcü devreleri veya donanım araçları kullanılarak veri yazılmasını ve silinmesini sağlar.

İşletim Sistemlerinde Dosya Sistemleri

İşletim sistemlerinde, dosya sistemleri hem bizim bellek hacimlerimizin nasıl depolanacağını belirler. Temelde bilgisayarın ilk başlatılmasından itibaren gerek kurulu işletim sistemini çalıştıran dosyaları bu dosya sistemleri üzerinde tutarız, gerek kurulu programlarımızı bunun üzerinden yönetiriz, gerekse dosyalarımızı depolamak için bu yapıları kullanırız.

Bilinen ilk işletim sistemi bazlı dosya yönetim sistemi DECTape dosya sistemidir. 1964 yılında PDP-6 Monitor bilgisayarları için kullanılmıştır. Sonrasında gelen RT-11, level-D ve FAT gibi dosya sistemlerine de ilham kaynağı olmuştur. Sıkça kullanılan dosya sistemleri şunlardır.

Dosya sistemlerinde dosyaları/dizinleri takip etme biçimleri biraz farklı olma eğilimindedir. Örneğin, bir dosya sistemi dizin başına tek bir tablo yapısına sahip olabilir, diğeri bu tabloyu bölebilir. Bazıları bu tabloya erişim hakları gibi ekstra özellikler ekleyebilir. Bazıları tablodaki farklı boyutlu değerleri kullanır, örneğin, bir FAT32 bir dosyanın uzunluğunu kaydetmek için 32 bitlik bir tamsayı kullanır. Bu sebeple FAT dosya sistemlerinde, bir dosyan boyut olarak 4 GB’den fazla olamaz (bu, 32 bitlik bir tamsayı değeri için sınırdır), ancak NTFS 64 bitlik bir tablolama kullandığı için teoride 16EB’ye kadar dosyalara izin verir.

Ancak asıl fark, verileri dosyaların içinde nasıl depoladıkları ve dosyaları ve dosya parçalarını nasıl düzenledikleridir. Örneğin, yine FAT üzerinden devam edelim, tüm sürücüyü her biri aynı boyutta olan kümelere böler. Bir dosya daha sonra bu kümenin başlangıcında başlar ve devam eder. Eğer dosya küme boyutundan daha büyükse, bir sonraki kümeye devam eder, eğer o küme halihazırda kullanmışsa, bir sonraki boş kümenin nerede bulunduğunu göstermek için dosya kümeye kaydedilir ve dosyanın geri kalanı parçalanır. Bazı dosya sistemleri ise değişken uzunluklu kümelere izin verir (yani küçük bir dosya, kendisi için çok büyük olan bir kümeyi alarak alanı boşa harcamaz), bazıları ise dosya parçalanmayı önlemek için tüm dosyayı sırayla tutmaya çalışır. Bazı dosya sistemleri bu tür kümelere fazladan veri ekleyerek yeni dosya kümeleri arayarak veya dosyayı bölerek işleri karmaşıklaştırmadan, alandan istifade ederek işleri kolaylaştır. Bazıları ise dosyaların yazılmasını kontrol etmek veya düzenlemek için dosyalara farklı kodlar ekleyerek veri tutarlılığını kontrol eder, örneğin bazıları bir hata düzeltme kodu ekleyebilir, böylece verilerin geçerli veya bozuk olup olmadığını kontrol edebilir. Bazı dosya sistemleri ise veri yapılarını kontrol etmek için, tam olarak aynı verilere sahip kümeler üreterek (bu işlem veri tekilleştirme olarak adlandırılır) zaten bir küme olup olmadığını anlamak için bu tür kod ve kümeler kullanabilir; öncesinde söylediğim gibi bu çeşit veri kontrol yapıları, depolama miktarını önemli ölçüde azaltabilir ve dosya başına alan maliyetini artırabilirken (özellikle dosyaların çoğu benzer veriler içeriyorsa) veri tutarlılığını artırır.

Bazı dosya sistemleri ise özel kullanımlar veya bazı donanımlarda kullanılmak üzere ekstra özelliklerle gelebilir. Örneğin, yazma üzerine kopyalama gibi bir şey yoluyla bir dosyanın eski değerlerini koruyabilir. Yani orijinal içeriğin üzerine yazmaz, bunun yerine yeni bir boş noktaya yazar ve dosya girişini yeni konumu gösterecek şekilde ayarlar. Hatta bazıları, bu özelliği dosyanın sürüm değiştirmesine izin vermek için kullanabilir ve bu yapıyı bir çeşit geri yükleme noktaları olarak ayarlayarak snapshot işlemi sayesinde dosya sisteminde geri dönmeniz gerekirse eski verileri kullanabilir şekilde geri döndürmeyi sağlayabilir.

Dosya yönetim sistemleri bu özellikleri ile bazı alanlarda kullanılmak için hayli uygun olabilir. Bu sebeple çoğu işletim sistemi , birden fazla dosya sistemi için destek içerir. Bazen işletim sistemi ve dosya sistemi o kadar sıkı bir şekilde iç içe geçmiştir ki, dosya sistemi işlevlerini ayırmak zordur.

Dosya Sistemlerinin Yönetimi

Dosya sistemleri temel olarak yönetici arabirimler aracılığı ile yönetilmektedir. Bu arabirim metinsel ( Unix kabuğu veya OpenVMS DCL gibi bir komut satırı arabirimi tarafından sağlananlar gibi ) veya grafiksel ( dosya tarayıcıları gibi bir grafik kullanıcı arabirimi tarafından sağlananlar gibi ) olabilir. Grafiksel ise, genellikle belgeleri, diğer dosyaları ve iç içe dizinleri içeren dizin metaforu kullanılır. Bunlara ek olarak ZFS’de olduğu gibi dosya ve disk yönetimini içeren bir altyapı da bulunabilir. Buna ek olarak arayüzler hem metinsel hem de metin tabanlı arayüzün bir birleşimi de olabilir. Yönetim araçları tamamiyle nasıl kullanacağınıza bağlıdır.

Dosya Sistemleri Üzerine Bazı Sınırlamalar

Dosya sistemlerinin her ne kadar bazı iyi ve kötü yönleri olduğu gibi dosya sistemleri bazı sınırlamalara sahiptir. Bunların bazıları şunlardır

Gerçek Boyut Sorunu

Gerçekte bizim 1 TB olan disk alanımız genellikle dosya sistemlerinin bazı tablolar ve tekelleştirme gibi işlemler için kullandığı alanlar sebebi ile bazı durumlarda %3 bazı durumlarda ise %20 oranında az olmakta. Bu da özellikle büyük depolama hacimleri için uygun dosya sisteminin daha en başta belirlenmesi zorunluluğunu getiriyor.

Dönüşüm

Dosya sistemleri arasında veri aktarımı, kopyalama ve yapıştırma işlemleri tamamen işletim sisteminde yapılır. Ancak bazı durumda dosya yönetim sistemlerinde dönüştürme işlemi yapmak gerekmektedir. Örneğin, Windows FAT dosya sistemini NTFS’ye geçiren, Linux ise ext2/3 sistemlerini ext4’e çeviren araçlar içermektedir. Bu dönüşüm araçları genel olarak benzeri veri tablolarına ve yöntemlere sahip dosya türleri arasında yapılabilirken bu dönüşümler genellikle geri dönülemez işlemlerdir. Bunlara ek olarak birbiri ile tamamen farklı dosya sistemleri arasında ise asla dönüşüm yapılamamaktadır.

Bir dosya sisteminden diğerine yerinde dönüşüm yapılamadığı durumda ise göç işlemi gerekmektedir. Ancak bunun en büyük dezavantajı taşıma veya kopyalama işlemi için ara diskler kullanma gerekliliği ve işlemin uzun sürmesi.

Depolama Sınırları

Tablolamaya sahip olan dosya sistemlerinde tablonun alabileceği maksimumlarda maalesef veri sınırlaması bulunmakta. Bu sorun diskte depolanabilecek maksimum dosya boyutunu belirlerken bazı durumlarda dosya sisteminin maksimum alabileceği boyutu da belirlemekte.

Ayrıca hiyerarşik dosya sistemlerinde, dosyalara, dosyayı içeren dizinlerin dallanma listesi olan bir yol aracılığıyla erişilir. Farklı dosya sistemleri, yolun derinliği konusunda farklı sınırlara sahiptir. Dosya sistemlerinde ayrıca tek bir dosya adının uzunluğu için bir sınırlama vardır.

Uzun adlara sahip dosyaların veya bir dosya sisteminden diğerine önemli derinlikteki yollarda bulunan dosyaların kopyalanması istenmeyen sonuçlara neden olabilir. Bu, kopyalamayı yapan yardımcı programın tutarsızlığı nasıl ele aldığına bağlıdır.

Cihaz Sınırları

Bazı dosya sistemleri çoklu diskler ve RAID tarzı çoklu disk kullanımına izin vermekte. Burada aynı seride veya yansılama ile kullanılacak cihazlar için de maalesef bir sınırlandırma bulunmakta. Bu sınırlandırma temelinde veri bütünlüğünü sağlamak için bir sınırlandırmadır.

Epilog

Temelde dosya sistemlerini bu şekilde açıkladım. Umarım faydalı olmuştur.

Ayrıca bkz: