02 Haziran 2014

Kütük Dizini (File Allocation Table - FAT)



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