Bu makalede Kütük Dizini (File Allocation Table - FAT) kütük
(dosya) sistemi hakkında genel hatlarıyla bilgi verilecektir.
FAT kütük sistemi Microsoft tarafından geliştirilen, disk(hard
disk) üzerinde bulunan kümelere(cluster), disk üzerinde nasıl yer ayrıldığını(allocation)
takip ve kontrol etme mantığına dayalı bir kütük sistemidir. Kümeler disk
üzerinde, bağlı liste(linked list) veri yapısı mantığında tutulmaktadır. Bir
sonraki ilgili kümenin disk üzerinde nerede bulunduğu bilgisi, o kümenin veri
alanında bulunan işaretçi(pointer) tarafından bilinmektedir.
1.1. FAT Yapısı
Önyükleme
Sektörü (Boot Sector)
|
Rezerv
sektörler
(Opsiyonel)
|
FAT
#1
|
FAT
#2
|
Kök
Dizin
(FAT12/16 )
|
Veri
alanı
(Diskin kalan bölümü)
|
Yukarıda FAT kütük sisteminin genel yapısı görülmektedir.
Şimdi bu alanların ne anlama geldiğini biraz daha ayrıntılandıralım.
1.1.1. Önyükleme Sektörü (Boot Sector)
Önyükleme sektörü (boot sector) konusuna geçmeden önce, hızlıca, bir
bilgisayarın ilk açıldığı anda neler olduğuna değinmek gerekiyor.
Bilgisayar güç tuşuna basılıp açıldığında, BIOS (Basic Input-Output System)
devreye girerek yüklemenin yapılacağı fiziksel sürücüyü tanıtır. Bu sürücü, genel
olarak bir disktir. Disk’in ilk sektörü Ana Önyükleme Kaydı (Master Boot Record
– MBR) olarak adlandırılır. Bu kayıt, disk üzerindeki Bölüm Tablosunu
(Partition Table) barındırır. Önyükleme sektörü (Boot Sector) de bu tabloda
bulunan ilk sektördür.
Bu sektörde çalıştırılabilir kodlar, orijinal ürün üreticisi (OEM) tanımlayıcısı,
FAT sayısı ve disk üzerinde yüklü bulunan işletim sistemine ait bilgileri bulunmaktadır.
1.1.2. Kütük Dizinleri (FAT)
FAT’ın temel görevi disk
üzerinde bulunan kümelerin, mantıksal grupların kaydını tutmaktır. Genel olarak
4 tür FAT girdisi mevcuttur:
Ayrılmış (Allocated), ayrılmamış,
dosya sonu(end of file) ve bozuk kesim (bad sector).
Artıklık denetimi
için(redundancy check), FAT1 ve FAT2 olmak üzere iki bölüm bulunur. Bu iki
bölüm, veri bozulmasına karşı yedeklilik mantığında çalışır. FAT32 sisteminde FAT2
devre dışı bırakılarak tek bir FAT – birincil FAT (primary FAT) yapısı kurulabilir.
1.1.3. Kök Dizin
Kök dizinde, kütük
sisteminde bulunan her kütük ve dizine ait bir girdi bulunmaktadır. Bu girdi, kütüğün
boyutu, kütüğün bulunduğu küme numarası, kütük ismi gibi bilgileri barındırır. Bu
dizin, FAT32 hariç sistemlerde FAT’ın hemen sonrasında bulunmasına karşın,
FAT32 sisteminde herhangi bir yerde bulunabilir.
1.1.4. Veri Alanı
Önyükleme sektörü, kütük
dizinleri ve kök dizin “sistem alanı” olarak adlandırılır. Geri kalan disk
bölümü ise veri alanıdır. Bu alan, verinin gerçekte bulunduğu esas alandır. Diskten
bir kütük silindiğinde, aslında bu bölümdeki veriler değil, bu bölümü işaret
eden bağlantı silinir. Dolayısıyla veriyi gerçekten silmek istiyorsak, bu
bölümdeki veri alanının üzerine yeni veri yazılması gereklidir.
1.1.5. Kümeler
FAT sisteminde
sektörlerin biraraya gelmesiyle oluşan veri alanına küme denilmektedir. Bu
yapı, disk alanının verimli kullanılabilmesi amacıyla oluşturulmuştur. Kümeler,
kütükler için ayrılabilecek en küçük veri alanları olduğu için, aynı zamanda
veri ayırma birimi (allocation unit) olarak da adlandırılırlar. Her kümenin
boyutu yani kaç byte’lık bir alan kaplayacağı önyükleme sektöründe belirtilir.
Bu boyut 1 sektörlük bir alandan 128 sektörlük bir alana değişen uzunluktadır (512
byte – 64Kb arası).
Disk alanlarının
etkili kullanılabilmesi için her bir kümenin boyutunun ne olması gerektiği önem
taşımaktadır. Gereğinde büyük kümeler, diskte kullanılmayan ve boşa giden veri
alanlarının çoğalmasına neden olur. Örneğin 5 Kb’lik bir kütük yaratıldığında,
küme boyutu 64 Kb ise 59 Kb.lik alan boşa gidecektir. Çünkü daha önce de
belirtildiği gibi 1 küme yalnız bir kütük içerebilir.
1.1.6. Örnek Bir Veri Okuma
Aşağıdaki resimde FAT
sisteminde bulunan örnek bir dosya görünüyor. Resmi açıklamaya çalışalım.
Sistemde bulunan kütüğümüzün ismi “test.dat”dır. Bo kütüğü okumak
istediğimizde, kütüğün bulunduğu ilk sektöre gidilmesi gereklidir. Bu da
resimde görüleceği üzere “4. küme” olarak belirtilmiştir. Kütük açıldığında,
disk okuma kafası 4. kümeye gider. Buradaki veriyi okuduktan sonra, bir sonraki
kümeye hareket ederek 7. kümeye gider. Çünkü henüz kütüğün okunması bitmemiştir
ve bir sonraki kümeyi işaret eden işaretçi sonraki kümenin bilgisi vardır. 7. kümeden
6. kümeye, oradan da 10. kümeye gelindikten
sonra, 10. Kümede bulunan FFFFh verisi kütük sonuna gelindiğini yani kütüğün
tamamen okunduğunu ifade etmektedir.
1.2. Veri Kurtarma
FAT sisteminde bir kütük silindiğinde, kütüğün başlangıç
adresindeki ilk değer 0xE5 değeriyle güncellenir. Bu değer, kütüğün artık
varolmadığı ve silindiği anlamına gelir. Ancak gerçekte sadece bu değer değiştirilmiş,
verinin gerçekte bulunduğu alan temizlenmemiştir. Yani veri halen disk üzerinde
bulunmaktadır. 0xE5 değerine ek olarak, kütüğün bulunduğu kümeleri gösteren
işaretçi değerleri de “0” değeriyle güncellenir.
Veri kurtarma araçları, verinin bulunduğu kümeyi tespite çalışır.
Çünkü her ne kadar kümeyi gösteren işaretçi değeri “0” değeriyle güncellenmiş
olsa da, küme yani veri hâlen disk üzerindedir. Kütüğün büyüklüğüne göre kaç
adet öbeğin ele alınması gerektiği belirlenmeye çalışılır.
1.3. FAT Kütük Sisteminin Avantajları
Kütük dizini (FAT) kütük sisteminin kimi avantajları şunlardır:- Kütüğe, bilgisayarda bulunan farklı işletim sistemlerinden erişim
- Küçük hacimli disklerde yüksek başarım (performance)
- Küçük hacimli disklerde daha etkin kullanım
- Göreli yavaş disklerde yüksek başarım
1.4. FAT Kütük Sisteminin Dezavantajları
Kütük dizini (FAT) kütük sisteminin kimi dezavantajları şunlardır:- Yüksek hacimli disklerde boşta kalan veri alanının çokluğu
- Erişim listeleri gibi ileri güvenlik tekniklerini karşılayamaması
- Dizinlemeye (indexing) izin vermediğinden hızlı arama yapılamaması
- Disk üzerinde kütük sayısı arttıkça başarımın düşmesi