Struktura fizyczna NTFS

Nie można sobie wyobrazić systemów operacyjnych Microsoft z zestawu Windows NT bez systemu plików NTFS – jednego z najbardziej złożonych i udanych z istniejących systemów plików. W tym artykule dowiesz się, jakie funkcje i wady ma ten system, na jakich zasadach opiera się organizacja informacji i jak utrzymywać system w stabilnym stanie, jakie możliwości oferuje NTFS i jak może z nich korzystać zwykły użytkownik.

– Zacznijmy od wspólnych faktów. Partycja NTFS teoretycznie może mieć prawie dowolny rozmiar. Limit z pewnością istnieje, ale nie będę go wskazywał, ponieważ będzie on wystarczający na kolejne setki lat rozwoju technologii komputerowej przy każdym tempie wzrostu. Co z praktyką? Prawie w ten sam sposób. Maksymalny rozmiar partycji NTFS w tej chwili jest ograniczony tylko rozmiarami dysków twardych. NT4 prawdopodobnie będzie miał pewne problemy przy próbie instalacji na partycji, jeśli którakolwiek z jej części cofnie się więcej niż o 8 GB od fizycznego początku dysku, ale ten problem dotyczy tylko partycji ładowania.

Sposób instalacji NT4.0 na pustym dysku jest dość oryginalny i może prowadzić do niepoprawnych przemyśleń na temat możliwości NTFS. Jeśli wskażesz programowi instalacyjnemu, że chcesz sformatować dysk w systemie plików NTFS, maksymalny rozmiar, jaki będzie on oferował, to tylko 4 GB. Dlaczego jest tak mało, jeśli rozmiar partycji NTFS faktycznie jest nieograniczony? Odpowiedź jest taka, że ​​sekcja instalacji po prostu nie zna tego systemu plików. 🙂 Program instalacyjny formatuje ten dysk w zwykły FAT, którego maksymalny rozmiar w NT wynosi 4 GB (przy użyciu nietypowego ogromnego klastra 64 KB) NT jest zainstalowany na tym FAT. Podczas pierwszego ładowania systemu operacyjnego (w fazie instalacji) następuje szybka konwersja partycji do NTFS, aby użytkownik nie zauważył nic poza dziwnym „ograniczeniem” rozmiaru NTFS w czasie instalacji.

Przegląd struktury partycji.

Podobnie jak każdy inny system NTFS dzieli wszystkie przydatne miejsca na klastry – bloki danych używane jednocześnie. NTFS obsługuje prawie wszystkie rozmiary klastrów – od 512 bajtów do 64 KB. Klaster 4 KBytes jest uważany za jakiś standard. NTFS nie ma żadnych anomalii w strukturze klastra i nie mam nic do powiedzenia na ten temat.

Dysk NTFS jest symbolicznie podzielony na dwie części. Pierwsze 12% dysku jest przypisane do tak zwanego obszaru MFT – przestrzeni, w której rośnie metaplik MFT. Zapisywanie danych w tym obszarze jest niemożliwe. Obszar MFT jest zawsze pusty, aby nie pozwolić na fragmentację najważniejszego pliku usługi (MFT) przy wzroście. Pozostałe 88% dysków stanowi zwykłe miejsce do przechowywania plików.

Wolne miejsce na dysku obejmuje jednak wszystkie fizycznie wolne miejsce – są tam również wolne fragmenty obszaru MFT. Mechanizm wykorzystania obszaru MFT jest następujący: gdy plików już nie można nagrać w zwykłym miejscu, obszar MFT jest po prostu zredukowany (w obecnych wersjach systemów operacyjnych – dwa razy), czyszcząc miejsce na nagrywanie plików. Po wyczyszczeniu zwykłego obszaru MFT można ponownie rozszerzyć. W ten sposób zwykłe pliki mogą pozostać w tym obszarze i jest to normalne. System próbował go zachować, ale nie powiódł się. Życie toczy się dalej… Metaplik MFT może być podzielony, choć byłoby to niepożądane.

MFT i jego struktura

System plików NTFS jest wyróżniającym się osiągnięciem strukturyzacji: każdy element systemu jest plikiem – nawet informacją systemową. Najważniejszy plik w systemie plików NTFS nosi nazwę MFT lub Master File Table – wspólna tabela plików. Znajduje się w obszarze MFT i jest scentralizowanym katalogiem wszystkich pozostałych plików dyskowych i samego siebie. MFT jest podzielony na rekordy o ustalonym rozmiarze (zwykle 1 KB), a każdy rekord odpowiada niektórym plikom. Pierwsze 16 plików to sprzątanie i są niedostępne dla systemu operacyjnego. Są one nazywane metaplikami, a pierwszym metaplikiem jest sam MTF. Te pierwsze 16 elementów MFT są jedyną częścią dysku o stałej pozycji. Interesujące jest to, że druga kopia pierwszych 3 rekordów, dla niezawodności (są one bardzo ważne), jest przechowywana dokładnie na środku dysku. Pozostały plik MFT może być przechowywany, podobnie jak każdy inny plik, w dowolnym miejscu na dysku. Możliwe jest przywrócenie swojej pozycji z własną pomocą na podstawie – pierwszego elementu MFT.

Metapliki

Pierwsze 16 plików NTFS (metapliki) to pliki systemowe. Każdy z nich odpowiada za pewien aspekt działania systemu. Zaletą takiego modułowego podejścia jest niesamowita elastyczność – na przykład w FAT fizyczna awaria w obszarze FAT jest śmiertelna dla wszystkich operacji na dyskach. Jeśli chodzi o NTFS, może on przesuwać, a nawet fragmentować na dysku wszystkie obszary systemu, unikając uszkodzenia powierzchni z wyjątkiem pierwszych 16 elementów MFT.

Metapliki znajdują się w katalogu głównym dysku NTFS, zaczynają się od znaku „$”, chociaż trudno jest uzyskać jakiekolwiek informacje na ich temat w standardowy sposób. Ciekawe, że nawet w przypadku tych plików zgłaszany jest dość rzeczywisty rozmiar, i można na przykład dowiedzieć się, ile systemów operacyjnych wydaje na katalogowanie całego dysku po przejrzeniu rozmiaru pliku $ MFT. W poniższej tabeli podano aktualnie używane metapliki i ich funkcje.

Pliki i strumienie

Więc system ma pliki i nic oprócz plików. Co obejmuje ta koncepcja w systemie plików NTFS?

Przede wszystkim elementem obowiązkowym jest zapis w MFT. Jak wspomniano powyżej, wszystkie pliki dyskowe są wymienione w MFT. Wszystkie informacje o pliku, z wyjątkiem samych danych, są przechowywane w tym miejscu: nazwa pliku, jego rozmiar, pozycja oddzielnych fragmentów na dysku itp. Jeśli jeden rekord MFT nie wystarcza do uzyskania informacji, wówczas używanych jest kilka rekordów, które nie są obowiązkowe po inne.

Opcjonalnym elementem są strumienie danych plików. Definicja „opcjonalna” wydaje się nieco dziwna, ale nie ma w tym nic dziwnego. Po pierwsze, plik może nie zawierać danych iw tym przypadku nie jest na nim wykorzystywane wolne miejsce na dysku. Po drugie, plik może nie mieć bardzo dużego rozmiaru. Następnie podejmowana jest raczej udana decyzja: dane pliku są przechowywane tylko w MFT, w miejscu wolnym od danych podstawowych w granicach jednego rekordu MFT. Pliki o wielkości setek bajtów zwykle nie mają „fizycznego” obrazu w podstawowym obszarze plików. Wszystkie takie dane plików są przechowywane w jednym miejscu – w MFT.

Istnieje ciekawy przypadek z danymi pliku. Każdy plik w NTFS ma raczej abstrakcyjną strukturę – nie ma danych, ma strumienie. Jeden ze strumieni ma zwykle dla nas sens – plik danych. Ale większość atrybutów plików to także strumienie! Mamy więc, że podstawową naturą pliku jest tylko liczba w MFT, a reszta jest opcjonalna. Daną abstrakcję można wykorzystać do stworzenia raczej wygodnych rzeczy – na przykład możliwe jest „przyklejenie” jeszcze jednego strumienia do pliku, po zarejestrowaniu w nim dowolnych danych – na przykład informacji o autorze i zawartości pliku, jaka była wykonane w systemie Windows 2000 (najodpowiedniejsza zakładka we właściwościach pliku dostępna z eksploratora). Interesujące jest to, że te dodatkowe strumienie nie są widoczne w standardowy sposób: obserwowany rozmiar pliku to tylko rozmiar głównego strumienia zawierającego tradycyjne dane. Możliwe jest na przykład posiadanie pliku o zerowej długości i po jego usunięciu 1 GB miejsca zostaje zwolnione tylko dlatego, że jakiś program lub technologia umieściła na nim dodatkowy strumień (dane alternatywne) o wielkości gigabajta. Ale w tej chwili strumienie praktycznie nie są używane, więc możemy nie bać się takich sytuacji, choć są one hipotetycznie możliwe. Pamiętaj tylko, że plik w systemie plików NTFS jest o wiele głębszy i bardziej globalny, niż można sobie wyobrazić obserwowanie katalogów dysku. No i wreszcie: nazwa pliku może składać się z dowolnych znaków, w tym pełnego zestawu alfabetów narodowych, ponieważ dane są reprezentowane w Unicode – 16-bitowa reprezentacja, która daje 65535 różnych znaków.

Katalogi

Katalog w systemie plików NTFS to konkretny plik przechowujący odniesienia do innych plików i katalogów ustanawiających hierarchiczną strukturę danych na dysku. Plik katalogu jest podzielony na bloki, każdy z nich zawiera nazwę pliku, podstawowe atrybuty i odniesienie do elementu MFT, który już zawiera pełną informację o elemencie katalogu. Wewnętrzna struktura katalogu to drzewo binarne. Oznacza to, że aby wyszukać plik o podanej nazwie w katalogu liniowym, takim jak na przykład FAT, system operacyjny powinien przejrzeć wszystkie elementy katalogu, aż znajdzie potrzebny. Drzewo binarne przydziela nazwy plików, aby przyspieszyć wyszukiwanie plików – za pomocą uzyskania binarnych odpowiedzi na pytania dotyczące pozycji pliku. Drzewo binarne jest w stanie udzielić odpowiedzi na pytanie, w jakiej grupie znajduje się wymagana nazwa – powyżej lub poniżej danego elementu. Zaczynamy od takiego pytania do elementu średniego i każda odpowiedź zawęża dwukrotnie obszar wyszukiwania. Pliki są sortowane według alfabetu, a odpowiedź na pytanie odbywa się w sposób oczywisty – dopasowanie pierwszych liter. Obszar poszukiwań, który został dwukrotnie zawężony, zaczyna być badany w ten sam sposób, zaczynając od średniego elementu.

Aby dodać plik do katalogu, należy najpierw upewnić się, że plik o takiej nazwie jeszcze nie istnieje, a następnie będziemy mieć problemy w systemie liniowym z wyszukiwaniem pliku opisanego powyżej. Problemy te kompensują z zainteresowaniem łatwość dodawania plików w katalogu.

Jakie informacje można uzyskać po przeczytaniu pliku katalogu? Tak podaje polecenie reż. Aby wykonać elementarną nawigację na dysku, nie trzeba wchodzić w MFT dla każdego pliku, wystarczy jedynie odczytać najczęstsze informacje o plikach z plików katalogów. Główny katalog dysku – root – różni się od zwykłych katalogów niczym innym, jak tylko specjalnym odniesieniem do niego od początku metapliku MFT.