System plików NTFS

Nie można sobie wyobrazić systemów operacyjnych Microsoft z rodziny Windows NT bez systemu plików NTFS – jednego z najbardziej złożonych i odnoszących sukcesy systemów plików istniejących w tej chwili. W tym artykule dowiesz się, jakie są cechy i wady tego systemu, na jakich zasadach opiera się organizacja informacji oraz jak utrzymać system w stabilnym stanie, jakie możliwości oferuje NTFS i jak może z nich korzystać zwykły użytkownik .

Część 1. Fizyczna budowa NTFS

Zacznijmy od ogólnych faktów. Teoretycznie partycja NTFS może mieć prawie dowolny rozmiar. Oczywiście jest granica, ale nawet jej nie wskażę, bo wystarczy na następne sto lat rozwoju technologii komputerowej – w każdym tempie wzrostu. Jak wygląda to w praktyce? Prawie to samo. Maksymalny rozmiar partycji NTFS jest obecnie ograniczony tylko rozmiarem dysków twardych. NT4 może jednak napotkać problemy podczas próby instalacji na partycji, jeśli jakakolwiek jej część jest dalej niż 8 GB od początku dysku fizycznego, ale ten problem dotyczy tylko partycji rozruchowej.

Liryczna dygresja. Metoda instalacji NT4.0 na czystym dysku jest dość oryginalna i może prowadzić do nieporozumień co do możliwości NTFS. Jeśli powiesz instalatorowi, że chcesz sformatować dysk do systemu plików NTFS, maksymalny rozmiar, który zaoferuje, to tylko 4 GB. Dlaczego jest tak mały, skoro rozmiar partycji NTFS jest praktycznie nieograniczony? Faktem jest, że sekcja instalacji po prostu nie zna tego systemu plików 🙂 Instalator formatuje ten dysk do zwykłego FAT, którego maksymalny rozmiar w NT wynosi 4 GB (przy użyciu niezupełnie standardowego, ogromnego klastra 64 KB) i instaluje NT na tym FAT … Ale już podczas pierwszego rozruchu samego systemu operacyjnego (nawet w fazie instalacji) partycja jest szybko konwertowana na NTFS; aby użytkownik niczego nie zauważył, z wyjątkiem dziwnego „ograniczenia” rozmiaru NTFS podczas instalacji. 🙂

Struktura przekroju – widok ogólny

Jak każdy inny system, NTFS dzieli całą użyteczną przestrzeń na klastry – bloki danych, które są używane jednocześnie. NTFS obsługuje prawie każdy rozmiar klastra – od 512 bajtów do 64 KB, klaster 4 KB jest uważany za pewien standard. NTFS nie ma żadnych anomalii w strukturze klastra, dlatego nie ma nic specjalnego do powiedzenia na ten temat, ogólnie rzecz biorąc, dość banalny.

Dysk NTFS jest tradycyjnie podzielony na dwie części. Pierwsze 12% dysku jest przeznaczone na tak zwaną strefę MFT – przestrzeń, do której rośnie metaplik MFT (więcej o tym poniżej). Żadne dane nie mogą być zapisywane w tym obszarze. Strefa MFT jest zawsze pusta – dzieje się tak, aby najważniejszy plik usługi (MFT) nie ulegał fragmentacji w miarę wzrostu. Pozostałe 88% dysku to konwencjonalne przechowywanie plików.

Wolne miejsce na dysku obejmuje jednak całą fizycznie wolną przestrzeń – są tam również zawarte puste fragmenty strefy MFT. Mechanizm korzystania ze strefy MFT jest następujący: gdy nie można już zapisać plików w zwykłej przestrzeni, strefa MFT jest po prostu zmniejszana (w obecnych wersjach systemów operacyjnych dokładnie dwukrotnie), zwalniając w ten sposób miejsce na zapisywanie plików. Gdy przestrzeń stanie się dostępna w normalnym obszarze MFT, obszar może ponownie się rozszerzyć. Jednocześnie możliwe jest, że zwykłe pliki pozostaną w tej strefie: nie ma tutaj anomalii. Cóż, system próbował go uwolnić, ale nic nie działało. Życie toczy się dalej … Metaplik MFT nadal może być pofragmentowany, nawet jeśli byłoby to niepożądane.

MFT i jego struktura

System plików NTFS stanowi wyjątkowe osiągnięcie w tworzeniu struktury: każdy element systemu to plik – a nawet informacje serwisowe. Najważniejszy plik w systemie plików NTFS nosi nazwę MFT lub Master File Table – ogólna tabela plików. To on znajduje się w strefie MFT i jest scentralizowanym katalogiem wszystkich innych plików na dysku oraz, paradoksalnie, samym sobą. MFT jest podzielony na rekordy o stałym rozmiarze (zwykle 1 KB), a każdy rekord odpowiada plikowi (w ogólnym znaczeniu tego słowa). Pierwsze 16 plików ma charakter usługowy i jest niedostępnych dla systemu operacyjnego – nazywane są metaplikami, a pierwszym metaplikiem jest sam MFT. Te pierwsze 16 elementów MFT to jedyna część tarczy, która ma ustaloną pozycję. Co ciekawe, druga kopia pierwszych trzech rekordów dla niezawodności – są one bardzo ważne – jest przechowywana dokładnie na środku dysku. Resztę pliku MFT można zlokalizować

Metapliki

Pierwsze 16 plików NTFS (metapliki) ma charakter usługowy. Każdy z nich jest odpowiedzialny za jakiś aspekt systemu. Zaletą takiego modułowego podejścia jest niesamowita elastyczność – na przykład na FAT fizyczne uszkodzenie samego obszaru FAT jest śmiertelne dla funkcjonowania całego dysku, a NTFS może przemieszczać, nawet fragmentarycznie na dysku, wszystkie jego obszary usługowe z pominięciem wszelkich usterek powierzchniowych – z wyjątkiem pierwszych 16 elementów MFT.

Metapliki znajdują się w katalogu głównym dysku NTFS – zaczynają się od symbolu nazwy „$”, chociaż trudno jest uzyskać o nich jakiekolwiek informacje przy użyciu standardowych środków. Ciekawe, że w przypadku tych plików wskazany jest bardzo rzeczywisty rozmiar – można na przykład dowiedzieć się, ile system operacyjny wydaje na katalogowanie całego dysku, patrząc na rozmiar pliku $ MFT. W poniższej tabeli przedstawiono aktualnie używane metapliki i ich przeznaczenie.

$ MFT Sam MFT
$ MFTmirr kopia pierwszych 16 rekordów MFT znajdujących się na środku dysku
$ LogFile plik obsługi logowania (patrz poniżej)
$ Tom informacje serwisowe – etykieta woluminu, wersja systemu plików itp.
$ AttrDef lista standardowych atrybutów plików w woluminie
$. katalog główny
$ Bitmap mapa wolnej przestrzeni
$ Boot sektor rozruchowy (jeśli partycja jest bootowalna)
$ Quota plik, w którym zapisywane są prawa użytkowników do korzystania z miejsca na dysku (działa tylko w NT5)
$ Upcase plik – tabela zgodności między dużymi i małymi literami w nazwach plików na bieżącym woluminie. Jest to potrzebne głównie dlatego, że w plikach NTFS nazwy zapisywane są w Unicode, czyli 65 tys. Różnych znaków, szukanie dużych i małych odpowiedników jest bardzo nietrywialne.

Pliki i strumienie

Tak więc system zawiera pliki – i tylko pliki. Co obejmuje ta koncepcja w systemie plików NTFS?

  • Przede wszystkim obowiązkowym elementem jest wpis w MFT, ponieważ, jak wspomniano wcześniej, wszystkie pliki dyskowe są wymienione w MFT. To miejsce przechowuje wszystkie informacje o pliku, z wyjątkiem rzeczywistych danych. Nazwa pliku, rozmiar, pozycja na dysku poszczególnych fragmentów itp. Jeśli brakuje jednego rekordu MFT do celów informacyjnych, to używanych jest kilka, niekoniecznie po kolei.
  • Opcjonalnym elementem są strumienie danych plików. Definicja „opcjonalnego” może wydawać się dziwna, niemniej jednak nie ma w tym nic dziwnego. Po pierwsze, plik może nie zawierać danych – w tym przypadku nie zajmuje on wolnego miejsca na samym dysku. Po drugie, plik może nie być bardzo duży. Wtedy pojawia się dość dobre rozwiązanie: dane pliku są przechowywane bezpośrednio w MFT, w miejscu pozostałym z danych głównych w jednym rekordzie MFT. Pliki zajmujące setki bajtów zwykle nie mają swojego „fizycznego” wykonania w głównym obszarze pliku – wszystkie dane takiego pliku są przechowywane w jednym miejscu – w MFT.

Interesująca jest również sytuacja z danymi w plikach. Ogólnie każdy plik w systemie NTFS ma nieco abstrakcyjną strukturę – nie zawiera danych jako takich, ale są strumienie. Jeden ze strumieni ma zwykłe znaczenie – dane pliku. Ale większość atrybutów plików to także strumienie! W ten sposób okazuje się, że plik ma tylko jedną jednostkę podstawową – liczbę w MFT, a wszystko inne jest opcjonalne. Tej abstrakcji można użyć do tworzenia całkiem wygodnych rzeczy – na przykład można „przykleić” inny strumień do pliku, zapisując w nim dowolne dane – na przykład informacje o autorze i zawartości pliku, tak jak to się dzieje w systemie Windows 2000 (karta znajdująca się po prawej stronie we właściwościach pliku, przeglądana z Eksploratora). Co ciekawe, te dodatkowe strumienie nie są widoczne standardowo: obserwowany rozmiar pliku to tylko rozmiar strumienia głównego, który zawiera tradycyjne dane. Możesz na przykład mieć plik o zerowej długości, którego wymazanie spowoduje zwolnienie 1 GB wolnego miejsca – po prostu dlatego, że jakiś przebiegły program lub technologia zablokował w nim dodatkowy strumień (dane alternatywne) o rozmiarze gigabajta. Ale w rzeczywistości w tej chwili strumienie praktycznie nie są używane, więc nie należy obawiać się takich sytuacji, chociaż hipotetycznie są one możliwe. Pamiętaj tylko, że plik NTFS to głębsza i bardziej globalna koncepcja, niż można sobie wyobrazić po prostu przeglądając katalogi na dysku. I wreszcie: nazwa pliku może zawierać dowolne znaki, w tym pełny zestaw alfabetów narodowych, ponieważ dane są reprezentowane w Unicode – 16-bitowej reprezentacji, która daje 65535 różnych znaków. Maksymalna długość nazwy pliku to 255 znaków.

Katalogi

Katalog NTFS to określony plik, który przechowuje łącza do innych plików i katalogów, tworząc hierarchiczną strukturę danych na dysku. Plik katalogu jest podzielony na bloki, z których każdy zawiera nazwę pliku, podstawowe atrybuty oraz odsyłacz do elementu MFT, który już dostarcza kompletnych informacji o elemencie katalogu. Wewnętrzna struktura katalogu to drzewo binarne. Oto co to oznacza: aby znaleźć plik o podanej nazwie w katalogu liniowym, takim jak FAT, system operacyjny musi przeglądać wszystkie wpisy katalogu, aż znajdzie ten, którego potrzebuje. Drzewo binarne porządkuje nazwy plików w taki sposób, że wyszukiwanie plików odbywa się w sposób szybszy – poprzez uzyskanie dwucyfrowych odpowiedzi na pytania dotyczące lokalizacji pliku. Pytanie, na które drzewo binarne jest w stanie odpowiedzieć, brzmi: w której grupie w stosunku do tego elementu, czy pożądana nazwa jest wyższa czy niższa? Zaczynamy od tego pytania do środkowej pozycji, a każda odpowiedź zawęża obszar wyszukiwania średnio o połowę. Pliki są, powiedzmy, po prostu posortowane alfabetycznie, a odpowiedź na pytanie jest udzielana w sposób oczywisty – poprzez porównanie pierwszych liter. Zwężony o połowę obszar poszukiwań zaczyna być eksplorowany w podobny sposób, zaczynając ponownie od środkowego elementu.

Wniosek – aby wyszukać na przykład jeden plik spośród 1000, FAT będzie musiał wykonać średnio 500 porównań (najprawdopodobniej plik zostanie znaleziony w środku wyszukiwania), a system drzewkowy będzie miał tylko około 12 (2 ^ 10 = 1024). Oszczędność czasu wyszukiwania jest oczywista. Nie powinieneś jednak myśleć, że w tradycyjnych systemach (FAT) wszystko działa tak: po pierwsze, utrzymywanie listy plików w postaci drzewa binarnego jest dość pracochłonne, a po drugie nawet FAT przy wykonaniu nowoczesnego systemu ( Windows2000 lub Windows98) wykorzystuje podobne wyszukiwanie optymalizacyjne. To tylko kolejny fakt w twojej skrzynce wiedzy. Chciałbym również rozwiać powszechne nieporozumienie (którym się podzieliłem całkiem niedawno), że dodanie pliku do katalogu w postaci drzewa jest trudniejsze niż do katalogu liniowego: są to operacje dość porównywalne w czasie – Faktem jest, że aby

Jakie informacje można uzyskać po prostu czytając plik katalogu? Dokładnie to, co produkuje polecenie dir. Aby wykonać najprostszą nawigację na dysku, nie musisz wspinać się do MFT dla każdego pliku, wystarczy przeczytać najbardziej ogólne informacje o plikach z katalogu pliki. Główny katalog dysku – root – nie różni się od zwykłych katalogów, z wyjątkiem specjalnego linku do niego z początku metapliku MFT.

Logowanie

NTFS to system odporny na awarie, który może doprowadzić do prawidłowego stanu w przypadku niemal każdej rzeczywistej awarii. Każdy nowoczesny system plików oparty jest na koncepcji transakcji – akcji wykonanej całkowicie i poprawnie lub w ogóle niewykonanej. NTFS po prostu nie ma stanów pośrednich (błędnych lub niepoprawnych) – kwant zmiany danych nie może zostać podzielony na przed i po awarii, powodując zniszczenie i zamieszanie – jest albo doskonały, albo anulowany.

Przykład 1: dane są zapisywane na dysku. Nagle okazuje się, że nie mogliśmy napisać do miejsca, w którym właśnie postanowiliśmy zapisać kolejną porcję danych – fizyczne uszkodzenie powierzchni. Zachowanie NTFS w tym przypadku jest całkiem logiczne: cała transakcja zapisu jest wycofywana – system zdaje sobie sprawę, że zapis nie został wykonany. Lokalizacja jest oznaczona jako niewłaściwa, a dane są zapisywane w innej lokalizacji – rozpoczyna się nowa transakcja.

Przykład 2: sprawa bardziej skomplikowana – dane są zapisywane na dysku. Nagle huk – wyłącza się zasilanie i system uruchamia się ponownie. Na jakim etapie zakończyło się nagrywanie, gdzie są dane, a gdzie nonsens? Z pomocą przychodzi kolejny mechanizm systemu – dziennik transakcji. Faktem jest, że system, zdając sobie sprawę z chęci zapisu na dysku, oznaczył swój stan w metapliku $LogFile. Po ponownym uruchomieniu plik ten jest sprawdzany pod kątem obecności niekompletnych transakcji, które zostały przerwane przez wypadek i których wynik jest nieprzewidywalny – wszystkie te transakcje są anulowane: miejsce, do którego dokonano zapisu, jest ponownie oznaczone jako wolne, indeksy i MFT elementy są doprowadzane do stanu, w jakim były przed awarią, a system jako całość pozostaje stabilny. A co jeśli wystąpił błąd podczas zapisywania do dziennika? To też jest w porządku: transakcja albo jeszcze się nie rozpoczęła (jest tylko próba zarejestrowania intencji jej dokonania), albo już się zakończyła – to znaczy trwa próba zarejestrowania, że ​​transakcja faktycznie została już zakończona. W tym drugim przypadku przy następnym uruchomieniu system w pełni zorientuje się, że tak naprawdę wszystko jest już napisane poprawnie i nie zwróci uwagi na „niedokończoną” transakcję.

Pamiętaj jednak, że logowanie nie jest absolutnym panaceum, ale sposobem na znaczne zmniejszenie liczby błędów i awarii systemu. Jest mało prawdopodobne, aby zwykły użytkownik NTFS kiedykolwiek zauważy błąd systemowy lub zostanie zmuszony do uruchomienia programu chkdsk – doświadczenie pokazuje, że NTFS jest przywracany do całkowicie poprawnego stanu, nawet w przypadku awarii, czasami bardzo obciążonych aktywnością dysku. Możesz nawet zoptymalizować dysk i nacisnąć reset w trakcie tego procesu – prawdopodobieństwo utraty danych, nawet w tym przypadku, będzie bardzo niskie. Ważne jest jednak, aby zrozumieć, że odzyskiwanie NTFS zapewnia poprawność systemu plików , a nie danych. Jeśli zapisujesz na dysku i nastąpiła awaria, Twoje dane mogą nie zostać zapisane. Nie ma cudów.

Kompresja

Pliki NTFS mają jeden raczej przydatny atrybut – „skompresowane”. Faktem jest, że NTFS ma wbudowaną obsługę kompresji dysków – coś, co wcześniej musiało być używane ze Stackerem lub DoubleSpace. Każdy plik lub katalog można indywidualnie przechowywać na dysku w postaci skompresowanej – proces ten jest całkowicie niewidoczny dla aplikacji. Kompresja plików ma bardzo dużą prędkość i tylko jedną dużą negatywną właściwością jest ogromna wirtualna fragmentacja skompresowanych plików, która jednak tak naprawdę nikomu nie przeszkadza. Kompresja odbywa się w blokach po 16 klastrów i wykorzystuje tzw. „Wirtualne klastry” – znowu niezwykle elastyczne rozwiązanie, które pozwala na uzyskanie ciekawych efektów – np. Połowa pliku może zostać skompresowana, a połowa nie. Osiąga się to dzięki temu

klastry plików od 1 do 43 są przechowywane w klastrach dysków od 400

klastry plików od 44 do 52 są przechowywane w klastrach dysków począwszy od 8530 …

Fizyczny układ typowego skompresowanego pliku:

klastry plików od 1 do 9 są przechowywane w klastrach dysków, począwszy od 400

klastry plików od 10 do 16 nie są nigdzie przechowywane

klastry plików od 17 do 18 są przechowywane w klastrach dysków, począwszy od 409

klastry plików od 19 do 36 nie są nigdzie przechowywane

Można zauważyć, że skompresowany plik ma „wirtualne” klastry, w których nie ma prawdziwych informacji. Gdy tylko system zobaczy takie wirtualne klastry, od razu zdaje sobie sprawę, że dane z poprzedniego bloku, które są wielokrotnością 16, muszą zostać zdekompresowane, a wynikowe dane po prostu wypełnią wirtualne klastry – jest to w rzeczywistości cały algorytm.

Bezpieczeństwo

NTFS zawiera wiele sposobów rozróżniania praw do obiektów – uważa się, że jest to najdoskonalszy system plików spośród wszystkich istniejących. W teorii tak jest niewątpliwie, ale niestety w obecnych wdrożeniach system praw jest daleki od ideału i reprezentuje, choć sztywny, ale nie zawsze logiczny zestaw cech. Prawa przypisane dowolnemu obiektowi i jednoznacznie obserwowane przez system ewoluują – duże zmiany i uzupełnienia praw były już kilkakrotnie przeprowadzane, a przez Windows 2000 nadal osiągały dość rozsądny zestaw.

Prawa systemu plików NTFS są nierozerwalnie związane z samym systemem – to znaczy, ogólnie rzecz biorąc, nie muszą być przestrzegane przez inny system, jeśli ma on fizyczny dostęp do dysku. Aby zapobiec fizycznemu dostępowi, w Windows2000 (NT5) wprowadzono standardową funkcję – więcej informacji na ten temat znajdziesz poniżej. System praw w obecnym stanie jest dość złożony i wątpię, czy mogę powiedzieć coś ciekawego i pożytecznego dla ogólnego czytelnika w życiu codziennym. Jeśli jesteś zainteresowany tym tematem, znajdziesz wiele książek na temat architektury sieci NT, które opisują to bardziej szczegółowo.

Tu można uzupełnić opis struktury systemu plików, pozostaje tylko opisać kilka rzeczy po prostu praktycznych lub oryginalnych.

Twarde linki

Ta rzecz była w NTFS od niepamiętnych czasów, ale była używana bardzo rzadko – a mimo to: Hard Link ma miejsce, gdy ten sam plik ma dwie nazwy (kilka wskaźników do katalogu plików lub różnych katalogów wskazuje na ten sam rekord MFT) … Powiedzmy, że ten sam plik ma nazwy 1.txt i 2.txt: jeśli użytkownik usunie plik 1, pozostanie plik 2. Jeśli usunie plik 2, pozostanie plik 1, czyli obie nazwy od momentu utworzenia są absolutnie równy. Plik jest fizycznie usuwany tylko wtedy, gdy usuwane jest jego nazwisko.

Łącza symboliczne (NT5)

O wiele bardziej praktyczna funkcja, która pozwala tworzyć katalogi wirtualne, podobnie jak dyski wirtualne za pomocą polecenia subst w systemie DOS. Aplikacje są bardzo zróżnicowane: po pierwsze, uproszczenie systemu katalogów. Jeśli nie podoba ci się katalog Documents and settingsAdministratorDocuments, możesz go połączyć z katalogiem głównym – system nadal będzie komunikował się z katalogiem gęstą ścieżką, a ty – o znacznie krótszej nazwie, w pełni jej równoważnej. Aby utworzyć takie linki, możesz użyć programu skrzyżowań ( junction.zip , 15 Kb), który został napisany przez słynnego specjalistę Marka Russinovicha. Program działa tylko w systemie NT5 (Windows 2000), podobnie jak sama funkcja.

Możesz użyć standardowego polecenia rd, aby usunąć łącze.

UWAGA: Próba przypisania łącza za pomocą Eksploratora lub innych menedżerów plików, które nie rozumieją wirtualnej natury katalogu (na przykład FAR), spowoduje usunięcie danych, do których odwołuje się łącze! Bądź ostrożny.

Szyfrowanie (NT5)

Przydatna funkcja dla osób, które martwią się o swoje sekrety – każdy plik lub katalog może być również zaszyfrowany, uniemożliwiając odczytanie go przez inną instalację NT. W połączeniu ze standardowym i prawie niezniszczalnym hasłem rozruchowym ta funkcja zapewnia wystarczające bezpieczeństwo ważnych danych dla większości aplikacji.

Część 2: Funkcje defragmentacji NTFS

Wróćmy do jednego dość interesującego i ważnego punktu – fragmentacji NTFS i defragmentacji. Chodzi o to, że obecnej sytuacji z tymi dwoma pojęciami nie można nazwać zadowalającą. Na początku argumentowano, że NTFS nie jest podatny na fragmentację plików. Okazało się to nie do końca prawdą, a oświadczenie zostało zmienione – NTFS zapobiega fragmentacji. Okazało się, że to nie do końca prawda. To znaczy, oczywiście, przeszkadza, ale sens z tego jest bliski zeru … Teraz już jest jasne, że NTFS to system, który jak żaden inny jest podatny na fragmentację, bez względu na to, co jest oficjalnie zatwierdzone. Jedyną rzeczą jest to, że logicznie nie cierpi z tego powodu. Wszystkie struktury wewnętrzne są zbudowane w taki sposób, aby fragmentacja nie przeszkadzała w szybkim wyszukiwaniu fragmentów danych. Ale oczywiście nie chroni to przed fizycznymi konsekwencjami fragmentacji – niepotrzebnymi ruchami głów. A zatem – naprzód i razem z piosenką.

Do źródeł problemu

Jak wiecie, system najprawdopodobniej będzie fragmentował pliki, gdy skończy się wolne miejsce, gdy konieczne jest wykorzystanie małych otworów pozostałych po innych plikach. Tutaj pojawia się pierwsza właściwość NTFS, która bezpośrednio przyczynia się do poważnej fragmentacji.

Dysk NTFS jest podzielony na dwie strefy. Na początku dysku znajduje się strefa MFT – strefa, w której rośnie MFT, Master File Table. Strefa zajmuje co najmniej 12% dysku, a zapis danych w tej strefie nie jest możliwy. Dzieje się tak, aby przynajmniej MFT nie ulegał fragmentacji. Ale kiedy reszta dysku jest pełna, strefa zmniejsza się dokładnie o połowę :). Itp. W ten sposób mamy nie jeden bieg końca płyty, ale kilka. W rezultacie, jeśli NTFS działa z dyskiem zapełnionym w około 90%, fragmentacja rośnie jak szalona.

Przypadkowa konsekwencja – dysk zapełniony w ponad 88% jest prawie niemożliwy do defragmentacji – nawet interfejs API defragmentacji nie może przenieść danych do strefy MFT. Może się okazać, że nie będziemy mieli wolnego pola manewru.

Dalej. NTFS działa samodzielnie i działa, a mimo to jest pofragmentowany – nawet jeśli wolne miejsce jest dalekie od wyczerpania. Ułatwia to dziwny algorytm znajdowania wolnego miejsca do zapisywania plików – drugie poważne zaniedbanie. Algorytm działań dla dowolnego nagrania jest następujący: pewna ilość dysku jest pobierana i wypełniana plikiem, aż się zatrzyma. I według bardzo ciekawego algorytmu: najpierw wypełnia się duże dziury, potem małe. Te. typowa dystrybucja fragmentów plików według rozmiaru na pofragmentowanym systemie plików NTFS wygląda następująco (rozmiary fragmentów):

16 – 16 – 16 – 16 – 16 – [wyścigi wstecz] – 15 – 15 – 15 – [wstecz] – 14 – 14 – 14 …. 1 – 1 – 1 -1 – 1 …

W ten sposób proces sprowadza się do najmniejszych dziur w 1 klastrze, mimo że na dysku są prawdopodobnie znacznie większe fragmenty wolnego miejsca.

Pamiętaj o plikach skompresowanych – podczas aktywnego przepisywania dużych ilości skompresowanych informacji w systemie plików NTFS powstaje ogromna liczba „dziur” w wyniku redystrybucji skompresowanych woluminów na dysku – jeśli jakakolwiek część pliku zaczęła się kompresować lepiej lub gorzej, należy zdjąć z ciągłego łańcucha i umieścić w innym miejscu lub zmniejszyć objętość, pozostawiając dziurę.

Celem tego wprowadzenia jest wyjaśnienie prostego faktu, że nie można powiedzieć, że NTFS zapobiega fragmentacji plików. Wręcz przeciwnie, szczęśliwie je dzieli. Fragmentacja NTFS po pół roku pracy będzie prawdziwym zaskoczeniem dla każdej osoby zaznajomionej z pracą systemu plików. Dlatego musisz uruchomić defragmentator. Ale to nie koniec wszystkich naszych problemów, ale niestety tylko początek.

Rozwiązanie oznacza?

NT ma standardowe API do defragmentacji. Ma ciekawe ograniczenie w przenoszeniu bloków plików: co najmniej 16 klastrów (!) Może być przenoszonych na raz, a te klastry muszą zaczynać się od pozycji będącej wielokrotnością 16 klastrów w pliku. Ogólnie operacja jest przeprowadzana wyłącznie na 16 klastrach. Konsekwencje:

  1. Nie możesz niczego przenieść do dziury wolnej przestrzeni mniejszej niż 16 klastrów (z wyjątkiem plików skompresowanych, ale nie są to w tej chwili interesujące subtelności).
  2. Plik przeniesiony w inne miejsce pozostawia (w nowej lokalizacji) „tymczasowo zajęte miejsce”, które uzupełnia go wielkością do wielokrotności 16 klastrów.
  3. Jeśli spróbujesz przenieść plik w jakiś nieprawidłowy sposób („nie jest to wielokrotność 16”), wynik jest często nieprzewidywalny. Coś jest zaokrąglone, coś po prostu się nie porusza … Niemniej cała scena hojnie rozpada się w „chwilowo zajęte miejsce”.

„Tymczasowo zajęte miejsce” służy do ułatwienia przywrócenia systemu w przypadku awarii sprzętu i jest zwalniane po pewnym czasie, zwykle około pół minuty.

Jednak logiczne byłoby użycie tego interfejsu API, ponieważ istnieje. Używają go. Dlatego standardowy proces defragmentacji, dostosowany do ograniczeń API, składa się z następujących faz (niekoniecznie w tej kolejności):

  • Usuwanie plików ze strefy MFT. Nie celowo – po prostu odkładanie ich tam nie jest możliwe. To nieszkodliwa faza, a nawet trochę przydatna.
  • Defragmentacja plików. Niewątpliwie przydatny proces, choć nieco skomplikowany ze względu na ograniczenia częstotliwości ruchów – pliki często muszą być przenoszone silniej, niż byłoby to logiczne.
  • Defragmentacja MFT, maszyny wirtualnej (pagefile.sys) i katalogów. Jest to możliwe przez API tylko w Windows 2000, w przeciwnym razie – po restarcie, jako oddzielny proces, jak w starym Diskeeperze.
  • Umieszczenie plików bliżej początku to tzw. Defragmentacja wolnego miejsca. To naprawdę straszny proces.

Powiedzmy, że chcemy umieścić pliki w rzędzie na początku dysku. Umieściliśmy jeden plik. Pozostawia ogon zajęciowy dopełniacza aż do wielokrotności 16. Kolejny stawiamy – oczywiście po ogonie. Po jakimś czasie, po uwolnieniu ogona, mamy dołek o rozmiarze <16 klastrów. To jest wtedy niemożliwe do wypełnienia przez interfejs API do defragmentacji! W rezultacie przed optymalizacją obraz wolnej przestrzeni wyglądał następująco: wiele otworów o mniej więcej tej samej wielkości. Po optymalizacji jest jeden otwór na końcu dysku i wiele małych skupisk otworów <16 w obszarze wypełnionym plikami. Jakie miejsca są zajęte jako pierwsze? Zgadza się, małe dziury położone bliżej początku dysku <16 klastrów … Każdy plik płynnie utworzony na zoptymalizowanym dysku będzie składał się z dzikiej liczby fragmentów. Tak, dysk można następnie ponownie zoptymalizować. A potem jeszcze raz … i jeszcze raz … i tak – najlepiej co tydzień. Bredzić? Rzeczywistość.

Tak więc istnieją dwie z grubsza równoważne opcje. Pierwszą z nich jest często optymalizacja dysku takim defragmentatorem, przy jednoczesnym rezygnacji z dzikiej fragmentacji nowo tworzonych plików. Druga opcja to w ogóle niczego nie ruszać i znosić jednolitą, ale znacznie słabszą fragmentację wszystkich plików na dysku.

Jak dotąd istnieje tylko jeden defragmentator, który ignoruje interfejs API defragmentacji i działa w sposób bardziej bezpośredni – Norton Speeddisk 5.0 dla NT. Kiedy próbują porównać to ze wszystkimi innymi – Diskeeper, O&O defrag itp. – nie wspominają o tej głównej, najbardziej fundamentalnej różnicy. Po prostu dlatego, że ten problem jest starannie ukryty, a przynajmniej na pewno nie jest reklamowany na każdym kroku. Speeddisk jest obecnie jedynym programem, który może w pełni zoptymalizować dysk bez tworzenia małych, pustych fragmentów wolnego miejsca. Należy również dodać, że przy użyciu standardowego API nie można defragmentować woluminów NTFS z klastrem większym niż 4 KB, a SpeedDisk też to potrafi.

Niestety, w systemie Windows 2000 został umieszczony defragmentator, który działa przez API i odpowiednio tworzy dziury <16 klastrów. Więc jak tylko się pojawi (jeśli jeszcze się nie pojawił), musisz od razu pobrać Speeddisk dla W2k.

Na przykład: wszystkie inne defragmentatory są szkodliwe, gdy są używane raz. Jeśli uruchomiłeś go przynajmniej raz, musisz go uruchamiać przynajmniej raz w miesiącu, aby pozbyć się fragmentacji nowo przybyłych plików. To jest główny punkt złożoności defragmentacji NTFS przy użyciu narzędzi, które rozwinęły się w przeszłości

Część 3. Co wybrać?

Każdy z prezentowanych dzisiaj systemów plików ma swoje korzenie w głębokiej przeszłości – z powrotem do lat 80-tych. Tak, co dziwne, NTFS to bardzo stary system! Faktem jest, że przez długi czas komputery osobiste korzystały wyłącznie z systemu operacyjnego DOS, któremu FAT zawdzięcza swój wygląd. Ale równolegle opracowano i po cichu istniały systemy ukierunkowane na przyszłość. Dwa takie systemy, które zyskały powszechną akceptację, to NTFS, stworzony dla systemu operacyjnego Windows NT 3.1 od niepamiętnych czasów, oraz HPFS jest wiernym towarzyszem OS / 2.

Wprowadzenie nowych systemów było trudne – jeszcze w 95. roku, kiedy pojawiło się Windows95, nikt nawet nie pomyślał, że coś trzeba zmienić – FAT dostał drugi oddech przez łatkę „długie nazwy”, która utknęła na górze, której wdrożenie tam, choć blisko ideału możliwe bez zmiany systemu, ale nadal dość głupkowate. Ale w kolejnych latach potrzeba zmian całkowicie dojrzała, ponieważ naturalne ograniczenia FAT zaczęły się ujawniać. FAT32, który pojawił się w Windows 95 OSR2, po prostu przesunął granice – nie zmieniając istoty systemu, który po prostu nie daje możliwości zorganizowania wydajnej pracy przy dużej ilości danych.

HPFS (High Performance File System), który nadal jest aktywnie używany przez użytkowników OS/2, okazał się dość udanym systemem, ale miał też istotne wady – całkowity brak narzędzi do automatycznego odzyskiwania, niepotrzebną złożoność organizacji danych i małą elastyczność .

Z drugiej strony NTFS przez długi czas nie mógł podbić komputerów osobistych ze względu na to, że do zorganizowania efektywnej pracy z jego strukturami danych potrzebne były znaczne ilości pamięci. Systemy z 4 lub 8 MB (standard 95-96) po prostu nie były w stanie uzyskać żadnej korzyści z NTFS, więc miał niezbyt dobrą reputację jako powolny i nieporęczny. W rzeczywistości nie jest to prawdą – nowoczesne systemy komputerowe z więcej niż 64 MB pamięci uzyskują po prostu ogromny wzrost wydajności dzięki używaniu NTFS.

Ta tabela podsumowuje wszystkie istotne wady i zalety systemów powszechnych w naszych czasach, takich jak FAT32, FAT i NTFS. Nie ma sensu omawiać innych systemów, ponieważ obecnie 97% użytkowników wybiera między Windows98, Windows NT4.0 i Windows 2000 (NT5.0), a innych opcji po prostu nie ma.

GRUBY
FAT32
NTFS
Systemy, które to obsługują DOS, Windows9X, NT wszystkie wersje Windows98, NT5 NT4, NT5
Maksymalny rozmiar wolumenu 2 GB praktycznie nieograniczone praktycznie nieograniczone
Maks. liczba plików na woluminie około 65 tys praktycznie nieograniczone praktycznie nieograniczone
Nazwa pliku z obsługą długich nazw – 255 znaków, systemowy zestaw znaków z obsługą długich nazw – 255 znaków, systemowy zestaw znaków 255 symboli, dowolne symbole dowolnego alfabetu (65 tysięcy różnych wag)
Możliwe atrybuty plików Zestaw podstawowy Zestaw podstawowy cokolwiek przychodzi na myśl producentom oprogramowania
Bezpieczeństwo Nie Nie tak (od NT5.0 wbudowana jest możliwość fizycznego szyfrowania danych)
Kompresja Nie Nie tak
Tolerancja błędów średni (system jest zbyt prosty i dlatego nie ma co zepsuć :)) źle (narzędzia optymalizacji szybkości doprowadziły do ​​pojawienia się słabych punktów niezawodności) pełne – automatyczne przywracanie systemu w przypadku jakichkolwiek awarii (nie licząc fizycznych błędów zapisu, gdy jeden jest zapisywany, a faktycznie zapisywany jest inny)
Rentowność minimalne (duże rozmiary klastrów na dużych dyskach) poprawione przez zmniejszenie rozmiarów klastrów maksymalny. Bardzo wydajny i wszechstronny system przechowywania
Prędkość wysoka dla małej liczby plików, ale szybko spada, ponieważ duża liczba plików pojawia się w katalogach. wynik – dla słabo wypełnionych dysków – maksymalny, dla pełnego – słaby całkowicie podobny do FAT, ale na dużych dyskach (dziesiątki gigabajtów) poważne problemy zaczynają się od ogólnej organizacji danych system nie jest zbyt efektywny dla małych i prostych partycji (do 1 GB), ale praca z ogromnymi ilościami danych i imponującymi katalogami jest zorganizowana tak wydajnie, jak to tylko możliwe i jest znacznie szybsza niż inne systemy

 

Chciałbym powiedzieć, że jeśli twój system operacyjny to NT (Windows 2000), to użycie innego systemu plików niż NTFS oznacza znaczne ograniczenie Twojej wygody i elastyczności samego systemu operacyjnego. NT, a zwłaszcza Windows 2000, jest jak dwie części jednej całości z NTFS – wiele przydatnych funkcji NT jest bezpośrednio związanych z fizyczną i logiczną strukturą systemu plików i sensowne jest używanie tam FAT lub FAT32 tylko ze względu na kompatybilność – jeśli masz zadanie odczytać te dyski z innych systemów.