EN
EN

NTFS Hakları ve Hiyerarşisi


NTFS Dosya Sistemi

NTFS (New Technology File System-Yeni Teknoloji Dosya Sistemi) İlk olarak Windows NT’ de varsayılan dosya sistemi olarak geldikten sonra Windows 2000, Windows Xp, Windows 7,8,10 ve Windows Server işletim sistemleri için de varsayılan dosya sistemi olmuştur. NTFS, FAT dosya sisteminin yerine geliştirilmiştir. Bunun nedeni ise FAT32 dosya sistemi minimum 4096 Megabayttan düşük dosyalar ve maximum 8 TB’ lık bölümlerde çalışma sınırlamaları olmasıdır. FAT32 herhangi bir aksaklıktan dolayı oluşacak bir sorunda verilerin korumasını sağlayamıyordu. NTFS dosya sistemi, güvenlik riski yüksek ve depolama kapasitesi daha büyük aygıtlar için tasarlanmıştır. NTFS dosya sisteminde verilerin her baytı bir dosyaya ayrılmıştır. NTFS' in beş sürümü yayınlanmıştır. Bunlar; V1.0, V1.1, V1.2, V3.0 ve V3.1 dir.

NTFS YAPISI

NTFS, dosya sisteminin tüm sistem ve yönetim verilerini depolar. Bu dosyalar; klasörler, dosyalar, önyükleme (Bootstrap) verileri, Dosya tahsis Bitmapleri ve Meta datalardır. NTFS dosya ve dizinler hakkında bilgileri Master File Table depolar bu nedenle NTFS’ in kalbi olarak düşünülebilir.

MFT, dosya sisteminde listelenen her dosya ve dizin hakkında bilgiler içerir. MFT’ de her dosya ve dizin hakkında en az bir kayıt bulunur. MFT kayıtlarının her bir tanesinin boyutu 1 KB’dir. Headerın ilk 42 baytı sabit bir yapıya sahipken, kayıtın geri kalan kısmı ise dosya adı ve sistem özniteliklerini saklamak için kullanılır. MFT başlangıcı Volume Boot Record içerisindedir. Volume Boot Record ise MFT’ deki $Boot kaydındadır.

NTFS Partition Yapısı

NTFS MFT(Master File Table)

MFT, tüm dosya ve dizinler hakkında bilgi içerdiğinden dolayı NTFS’ in kalbidir. Her dizinin ve dosyanın MFT tablosunda en az bir girişi vardır ve girdilerin kayıt biçimleri son derece basittir. Her kayıt 1 KB boyutundandır ama yalnızca ilk 42 baytın tanımlanmış bir amacı vardır. Geride kalan diğer baytlar, küçük veri yapıları olan öz nitelikleri(attribut) depolar. Küçük bir dosyanın içeriği, MFT kaydında depolanabilir. Bu da okuma performansının artmasına ve boşa harcanan disk alanını azaltır.

Image for post

MFT Girişi

MFT Yapısı

Microsoft, tablodaki her bir entry bir dosya kaydı olarak çağırır. Her bir girdiye, tablonun 0'dan başlayarak bulunduğu yere dayalı bir adres verilir. Tüm girdilerin boyutu 1,024 bayttır, ancak tam boyut önyükleme sektöründe tanımlanır. MFT bir dosyadır. MFT' nin kendisi için bir girişi olmasıdır. MFT’ nin ismi $MFT’dir. İlk 16 Kayıt meta data dosyaları için rezerve edilmiştir. Tablodaki ilk girdi, $ MFT olarak adlandırılır ve MFT' nin disk üzerindeki konumunu tanımlar. Bu nedenle, MFT' nin düzenini ve boyutunu belirlemek için onu işlemeniz gerekir. MFT' nin başlangıç yeri, dosya sisteminin her zaman ilk bölümünde bulunan önyükleme sektöründe verilir. Önyükleme sektörü, MFT' nin parçalanmış olduğunu ve 32'den 34 ve 56'dan 58'e kümelere gittiğini gösteren ilk MFT girişini bulmak için kullanılır. FAT gibi, NTFS de gruplardan oluşan Ardışık sektör kümeleri kullanır.

NTFS uygulamasında MFT, mümkün olduğunca küçük başlar ve daha fazla girdi gerektiğinde genişler. Teorik olarak, bir işletim sistemi, dosya sistemi oluşturulduğunda sabit sayıda girdi oluşturabilir ancak Microsoft'un uygulamadaki dinamik yapısı, volüm genişlemesinden daha fazla alan eklendiğinde dosya sistemini daha kolay hale getirir. Microsoft, MFT girişleri oluşturulduktan sonra silmez.

 

 

 

 

 

 

 

 

Kısaca MFT tablosunu

-MFT bir dizi dosya kaydıdır.
-Her kayıt 1024 bayttır.
-MFT’ de ki ilk kayıt, MFT’ nin kendisidir.
-MFT’ nin adı $ MFT’ dir.
-MFT’ deki ilk 16 kayıt meta data dosyaları için ayrılmıştır.

NTFS İndeksler

NTFS, birçok durumda indeks veri yapılarını kullanır. NTFS' deki bir indeks, sıralanmış bir siparişte depolanan özniteliklerin toplamıdır. İndeksin en yaygın kullanımı bir dizinde bulunur, çünkü dizinler bir $FILE_NAME öznitelikleri içerir. NTFS' nin (Windows 2000 ile birlikte gelen) sürüm 3.0'dan önce bir indekste yalnızca $FILE_NAME özniteliği vardı ancak şimdi indeksleri birkaç kullanımı var ve bunlar farklı öznitelikler içeriyor. Örneğin, güvenlik bilgileri, kota bilgisi olduğu gibi bir indekste saklanır.

-INDEX_ROOT özniteliğinde Ağacın Kökü saklanır.
-$INDEX_ALLOCATION özniteliğinde geri kalan düğümler saklanır.
-$BITMAP özniteliği tahsis durumlarını yönetmek için kullanılır.

NTFS İndeks Atrribution

İndeks oluşturmak için bunların NTFS' de nasıl uygulandığını tanımlamamız gerekiyor. Ağacın her girişi, değerleri her düğümde depolamak için bir indexentries (indeks girişi) adı verilen bir veri yapısı kullanır. Çok sayıda dizin girişi vardır, ancak hepsinin aynı standart başlık alanları vardır. Örneğin, bir klasör indeks girişi birkaç başlık değeri ve bir $ FILE_NAME özniteliği içerir. İndeks girişi girdileri ağacın düğümleri halinde organize edilir ve bir listede saklanır. Listenin sonunu işaretlemek için boş bir giriş kullanılır. Şekilde, dört adet $FILE_NAME dizin girdisine sahip bir dizin indeksindeki bir düğüm örneğini göstermektedir.

Dizin düğümleri iki tür MFT giriş niteliğinde depolanabilir. $ INDEX_ROOT özniteliği her zaman bulunur ve az sayıda indeks girişi içeren yalnızca bir düğüm depolayabilir. $INDEX_ROOT özniteliği daima indeks ağacının köküdür. Daha büyük indeksler, ihtiyaç duyulmayan sayıda düğüm içerebilen, yerleşik olmayan bir $ INDEX_ALLOCATION özniteliği tahsis eder. Bu öznitelik içeriği, bir veya daha fazla indeks girişi içeren büyük bir arabellektir.

Bir indeks kaydı, genellikle 4,096 bayt statik bir boyuta sahiptir ve indeks girdilerinin bir listesini içerir. Her indeks kaydına 0'dan başlayan bir adres verilir. Şekilde üç indeks girdisine sahip bir $INDEX_ROOT özniteliğine ve küme 713'ü ayrılmış olan bir yerinde olmayan $INDEX_ALLOCATION özniteliğine sahibiz ve üç indeks kaydı kullanıyor. Bir $INDEX_ALLOCATION özniteliği indeks kayıtları için kullanılmayan alanı atayabilir. $BITMAP özniteliği, dizin kayıtlarının ayırma durumunu yönetmek için kullanılır. Ağaç için yeni bir düğüm ayrılması gerekiyorsa, kullanılabilir bir indeks kaydı bulmak için $ BITMAP kullanılır; Aksi halde daha fazla alan eklenir. Her indekse bir ad verilir ve indeks için $INDEX_ROOT, $ INDEX_ALLOCATION ve $ BITMAP niteliklerine, nitelik headerın da aynı ad verilir. Her indeks girişi, herhangi bir çocuk düğümü olup olmadığını gösteren bir bayrağı vardır. Çocuk düğümleri varsa, indeks kayıt adresleri indeks girdisinde verilir. Bir düğümdeki indeks girdileri isteğe göre sıralanmıştır ve aradığınız değer indeks girdisinden küçükse ve indeks girişi bir çocuk varsa, çocuğuna bakarsınız.  $ INDEX_ROOT  üç girişi olan bir indeksi düşünün. Bu durumda, yalnızca bir $ INDEX_ROOT ayrılır ve üç dizin girişi veri yapısı içerir ve boş giriş, listenin sonundadır.

Indexes | NTFS Concepts