Disk üzerindeki dosyaların düzenlenmesini ve bir işletim sisteminde dosyaların izlerinin bulunmasını sağlayan yapıya Dosya Sistemi (File System) denir. Bir disk üzerinde dosya sistemi oluşturmadan önce, o disk eski haline döndürülmeli ve gereken bilgiler diske yazılmalıdır. Bu işleme dosya oluşturma denir.
Dosya sistemi yapısı genel olarak şu bölümlerden oluşur:
- Süperblok (Superblock) : Dosya sisteminin boyutu gibi, bütünü hakkında bilgiler içeren bölüm. Dosya sisteminin büyüklüğü, başlangıç ve bitiş adresleri, inode tablosu, boş blok tablosu, veri bloklarının başlangıç adresleri gibi bilgileri saklar. Süperblok aynı zamanda dosya sisteminin düzgün olarak kalmasını sağlar, yapısı herhangi bir nedenle bozulursa bozukluğu giderebilecek yazılımların çalışmasını sağlar.
- Dosya Düğümü (Inode) : Dosyanın ismi dışında bütün bilgilerini içeren bölümdür. Dosyanın ismi, dosya düğümünün numarasıyla birlikte bulunur. Dosya düğümü, veri bloklarının da numaralarını içerir. Bir dosya düğümünde belli sayıda veri bloğu için yer vardır. Daha fazla alana ihtiyaç duyulması durumunda dosya düğümünde dinamik olarak yeni bir yer ayrılır.
- Veri Bloğu: Dosyalardaki bilgilerin depolanmasını sağlayan kısımdır.
Linux dosya sistemlerinden en çok kullanılanları aşağıdaki gibidir:
Dosya Sistemi | Açıklama |
MINIX | En eski dosya sistemi yapısıdır. Güvenli bir sistem olarak kabul edilebilir. Bunun yanında en fazla 64 Mb’lık dosya sistemi, en çok 30 karakterlik dosya isimleri gibi bir takım kısıtlamalara sahiptir. |
XIA | Minix dosya sistemi yapısının daha gelişmiş hali denilebilir. Minix dosya sisteminden farkı, dosya isimleri ve dosya sistemi boyutlarının sınırlarını kaldırmasıdır. Bu özelliğinden başka pek bir yeniliği yoktur. |
EXT2 | İleriye dönük olarak tasarlandığı için, dosya sistemi kodlarını kurulu bir sisteme uygulamak için birtakım yeni ayarlar yapılmasını gerektirmez.
Bir dosya diske yazılırken, yazma işlemi bazen ardışık bloklar halinde, bazense ayrı ayrı bloklar halinde gerçekleşir. Ardışık bloklar halinde depolanmayan dosyalar, parçalanmış dosyalar (fragmented files) olarak adlandırılır. Parçalanmış dosyalar daha uzun sürede okunur. |
EXT3 | Ext2 dosya sistemi yapısının sahip olduğu bütün özelliklerin yanısıra bir de günlükleme (journalling) özelliği vardır. Günlükleme özelliği, yapılan veya yapılmakta olan işlemlerin kayıtlarının tutulması işlemidir. Bu işlem sayesinde, sistemin zarar görmesi durumunda meydana gelen hasarlar, en kolay biçimde onarılabilir. Bunu faydası, herhangi bir sistem çökmesi durumunda, geri kurtarma işleminin süresinin azalmasıdır. |
MSDOS | MSDOS, OS/2 ve Windows NT ile uyumlu bir dosya sistemi yapısıdır. MSDOS içerisinde de, Ext3 dosya sisteminde olduğu, dosyaların diske yazılırken parçalanma problemini en aza indirgemek için kullanılan birçok birleştirme programı vardır. |
UMSDOS | Bu sistem sayesinde bir MSDOS dosya sistemi, sanki bir Linux dosya sistemiymiş gibi çalışabilir. Bu sayede, Linux için bağımsız bir bölüm oluşturulması zorunluluğu ortadan kalkmış olur. |
VFAT | FAT’tan daha büyük disk alanlarını destekleyen bu yapı, FAT32 sisteminin bir uzantısıdır. |
REISERFS | Hans Reiser tarafından geliştirilmiş bir dosya sistemi yapısıdır. Bu sistemde, yapılan tüm meta değişiklikler blok olarak protokol içinde tutulmaktadır. Veri kayıplarını azaltmak için, Ext3 dosya sistemi gibi günlükleme özelliğini kullanır. Çok sağlam bir dosya sistemi yapısı olduğu söylenebilir. Bu dosya sisteminin maksimum dosya sistemi büyüklüğü her blok için 4 GB yani 16 TB, blok büyüklüğü 64 KB ve maksimum dosya büyüklüğü de 4 GB olabilir. |
XFS | En kararlı ve sağlam günlükleme dosya sistemlerinden biridir. Bu dosya sistemindeki en önemli özellik, kararlılıktır. Bu dosya sisteminde dosyanın boyutu maksimum 9.000 Pbyte, blok büyüklüğü 64 KB ve de maksimum dosya sistemi büyüklüğü 18.000 Pbyte kadar olabilmektedir. |
EXT4 | Ext3 dosya sisteminin sahip olduğu özelliklere ek olarak büyük boyutlu dosyaları ve dosya sistemlerini destekleyen bir yapıya sahiptir. Ext4 1 EiB(exbibyte) dosya sistemi ve 16 TiB dosya boyutunu desteklemektedir. Ext3 ün sahip olduğu Journaling(günlükleme) ve disk üzerindeki hasarların onarılması özelliğine getirilen e2fsprogs(güvenli bağlama işleminin gerçekleştirileceği yeri belirleme), journal checksum(disk üzerinde oluşan hasarların onarımını hızlandırma) gibi araçlarla sistemin kararlılığı ve performansının artışı sağlanmıştır. |
Günlükleme (Journaling)
Günlükleme (journaling) özelliği, bilgisayar üzerinde yapılan işlemlerin loglarının başka bir yerde tutulmasını sağlar. Bu özellik sayesinde yapılan son işlemlere ulaşılabilir. Herhangi bir sistem çökmesi durumunda, sistemde yapılan son işlemlere ulaşılıp bu işlemlerin tekrarlanmasıyla verilerin kaybedilmemesi sağlanır. Linux işletim sisteminde kullanılan en kararlı ve sağlam günlükleme sistemlerinden biri XFS dosya sistemidir.
Bazı dosya sistemleri, daha sonradan ulaşılacak veri bloklarının kopyalarını harfi harfine tutar, bu günlüklere “fiziksel günlük(physical journal)” denir. Bu olayın gerçekleştiği dosya sistemine örnek olarak ETC3 dosya sistemi verilebilir. Bilgilerin sıkıştırılmış bir format içerisinde saklandığı günlüklere “mantıksal günlük (logical journal)” denir ve bu günlüklerin en çok kullanıldığı dosya sistemi XFS dosya sistemidir. Bu olay sayesinde, sistemden okunup yazılacak olan verinin boyutu azaltılmış olur ve işlemin hızlanması sağlanır.
Metadata-Only Günlükleme (Metadata-Only Journaling):
Bu günlükleme özelliği, sadece sistemde yapılan değişiklikleri, günlük içerisinde metadata adı verilen dosyaların içerisinde saklar. UNIX dosya sistemine dosya eklemek için yapılması gereken üç adım şöyledir:
- Dosyanın bulunduğu düğümün (inode) içerisindeki dosyanın büyüklüğünü arttırmak
- Dosyanın ekleneceği alanda olabilecek genişleme için yer ayırmak
- Eklenecek dosyanın, yeni ayrılmış alana yazılması
Metadata-Only günlükleme olayında, bu üçüncü basamak loglarda tutulmaz. Eğer üçüncü basamak gerçekleşmeyip birinci ve ikinci basamak kurtarma işlemi sırasında tekrarlanırsa, dosya çöplüğe atılır.
Linux Sistemlerde Disklere İlişkin Karşılaşılan Hata Mesajları
Linux bir sistemde en çok karşılaşılabilecek bazı hata mesajları şu şekilde sıralanabilir:
- Sistem "reset" tuşuna basarak kapatılırsa:
/dev/hda6 was not cleanly unmounted, check forced
- Sistem düzgün bir şekilde kapatılmadığında:
/dev/hda3 : was not cleanly unmounted, check forced
- Sistem en fazla Mount sayısına eriştiğinde:
/dev/hda3 has reached maximal mount count, check forced
- Sistem bir sonraki check-up zamanına geldiğinde:
/dev/hda3 has gone too long without beeing checked, check forced
Bu tür hatalara karşı önlem almanın en kolay yolu Günlükleme dosya sistemi yapısını kullanmaktır. Bu sayede karşılaşılabilecek hatalar en aza indirilebilir.