System plików NTFS. Wady i zalety. Master File Table Klastry na
Transkrypt
System plików NTFS. Wady i zalety. Master File Table Klastry na
Temat: System plików NTFS. Wady i zalety. Master File Table Klastry na dysku mają przyporządkowane kolejne numery począwszy od 0 (Logical Cluster Numbers - LCN). Klastry każdego strumienia danych są podobnie ponumerowane (Virtual Cluster Numbers - VCN). Master File Table jest plikiem zawierającym informacje o atrybutach plików i ich położeniu (mapowaniu VCN na LCN). MFT składa się z rekordów po 1 KB - jeden lub więcej na plik. Każdy rekord zawiera następujące po sobie atrybuty. Atrybut zaczyna się nagłówkiem. Jeśli dane atrybutu są niewielkie, umieszczane są po nagłówku (atrybut jest resident). Gdy danych jest więcej, alokowane są dla nich klastry poza MFT (atrybut nonresident). Atrybuty nonresident mają w nagłówku wypisane klastry, w których zostały umieszczone ich dane: Mapowanie VCN na LCN jest zapisane w seriach. Każda seria to numer klastra na dysku (LCN), odpowiadającego mu numeru klastra danych (VCN), oraz liczba kolejnych klastrów należących do serii gdy w rekordzie pliku w MFT zabraknie miejsca na nagłówki atrybutów, dla pliku zostają przydzielone dodatkowe rekordy w MFT, a w rekordzie bazowym zostaje założony nowy atrybut: $ATTRIBUTE_LIST. Zawiera on listę pozostaych atrybutów pliku oraz informację o ich położeniu w innych rekordach MFT. Ponieważ $Mft jest takim samym plikem jak inne, to może zostać pofragmentowany. Aby temu zapobiec NTFS definiuje MFT-Zone - obszar dysku wokoło pliku $Mft, przeznaczony na jego powiększenie. Klastry z MFT-Zone mogą zostać zaalokowane na inne pliki tylko wtedy, gdy na dysku zaczyna brakować miejsca. Pliki skompresowane Plik podlegający automatycznej kompresji dzielony jest na 16-klastrowe kawałki. Każdy kawałek kompresowany jest oddzielnie. Jeśli skompresuje się on do mniej niż 16 klastrów jest zapisywany skompresowany, wpw. jest zapisany rozkompresowany. Przykład pliku skompresowanego: Pliki rzadkie i małe 1 Pliki w systemie NTFS mogą mieć zaalokowanych mniej klastrów, niż wynikałoby to z ich rozmiaru. Niezaalokowane klastry mają swoje numery wirtualne (VCN), ale nie mają numerów logicznych (LCN). Przy odczycie są traktowane jak zawierające same zera. Przy zapisie, w niewidoczny dla użytkownika sposób, alokowane są dla nich klastry logiczne. Jeśli plik jest dostatecznie mały, żeby jego atrybut $DATA zmieścił się w rekordzie w MFT, to nie są dla niego alokowane żadne dodatkowe klastry. Oszczędza się w ten sposób miejsce i zwiększa szybkość dostępu do pliku. Katalogi Katalogi trzymają informacje o plikach w nich zawartych w atrybucie $INDEX_ROOT. Oprócz refernecji do rekordów plików w MFT są tam też często używane atrybuty plików, zduplikowane z MFT: o nazwy plików, o czasy utworzenia, ostaniego dostępu i modyfikacji, o wielkość pliku. Referencje do plików w MFT są 64-bitowymi liczbami: o 48 bitów to numer rekordu pliku w MFT, o 16 bitów to licznik wykorzystywany do sprawdzania spójności danych, zwiększany za każdym rzazem, gdy rekord zostaje użyty na nowy plik. Małe katalogi Małe katalogi, podobnie jak małe pliki, mogą być zawarte całkowicie w swoim rekordzie w MFT. Duże katalogi Pliki w dużych katalogach są indeksowane i sortowane po nazwie. Indeksy są zaimplementowane jako B+ - drzewa, z korzeniem umieszczonym w atrybucie $INDEX_ROOT. Kolejne węzły drzewa (index-buffers) są alokowane w razie konieczności, a ich położenie jest zapisywane w atrybucie $INDEX_ALLOCATION. Dodatkowy atrybut $BITMAP określa które klastry w węzłach drzewa są jeszcze wolne. Journal 2 Jedną z najważniejszych cech systemu plików NTFS jest jego niezawodność. Jedynym sposobem na rozspójnienie go jest uszkodzenie dysku. Niezawodność ta jest zapewniona przez zastosowanie jouralling-u. System NTFS ochrania w ten sposób tylko metadane definiujące strukturę woluminu oraz prawa dostępu. Dane w plikach nie podlegają journalling-owi i mogą być stracone np. w przypadku utraty zasilania. Transakcje Wszystkie zmiany struktury woluminu, np.: o zmiana drzewa katalogów, o utworzenie pliku, o zmiana rozmiaru pliku, organizowane są w transakcje. Transakcje mogą składać się z pewnej liczby podoperacji, a zakończone są zawsze operacją commit. NTFS gwarantuje wykonanie całych transakcji atomowo. Zasada działania journala Aby journal był wiarygodny zapis danych musi się odbywać odpowiedniej kolejności: 1. NTFS zapisuje transakcję w kopii log'a w pamięci. 2. NTFS modyfikuje wolumin w pamięci. 3. Cache manager zapisuje log na dysk. 4. Cache manager zapisuje modyfikacje woluminu na dysk. Dzięki temu plik journalla zawsze wyprzedza faktyczną modyfikację struktury woluminu. Ponadto driver NTFS co kilka sekund zapisuje do log'a tablice niedokończonych transakcji i niezaaplikowanych podoperacji, oraz tzw. checkpoint record zawierający ich położenie i informacje o tym, jak daleko w log'u trzeba się wrócić aby rozpocząć przywracanie spójności. Uprawnienia do plików W systemie NTFS każdy plik i katalog ma przypisany Deskryptor Uprawnień, opisujący uprawnienia do niego dla poszczególnych użytkowników. Deskryptory te są zapisane w atrybucie $SDS pliku $Secure. Plik $Secure ma również atrybut $SII zawierający indeks deskryptorów według ich numerów, oraz atrybut $SDH zawierający indeks deskryptorów według ich hash'a. 3 Podczas dostępu do pliku w celu znalezienia odpowiedniego deskryptora używany jest numer deskryptora z atrybutu $STANDARD_INFORMATION pliku w połączeniu z indeksem $SII. Podczas ustawiania deskryptora dla pliku używany jest indeks $SDH w celu wyeliminowania identycznych deskryptorów w tablicy $SDS. Zalety NTFS w stosunku do FAT32: tzw. quota - czyli ograniczenie przestrzeni dyskowej dla danego użytkownika; znany standard ze systemów Unix'owych zabezpieczenia dostępu szyfrowanie -do nich ma dostęp jedynie szyfrujący, bądź ktoś kto ma odpowiedni klucz programowy rozmiar klastra - w przypadku gdy mamy na dysku małe pliki (np. wielkości 1-5 KB) i w skrajnym przypadku gdy mamy np. klaster wielkości 16 KB a pliki zajmują po 1-2 KB to na każdym klastrze tracimy od 14 do 15 KB. Nie jest to dużo ale przy 6000 tysiącach plików wyszło mi straty 88 MB. journaling - jest to chyba największa zaleta NTFS'a. System dzięki temu na bieżąco zapisuje wszelkie informacje o kopiowaniu (bądź przenoszeniu) i innych operacjach na danych. W momencie startu systemu sprawdzany jest dziennik journal i to czy wszystkie operacje zostały zakończone. Jeśli nie to wszystkie są powtarzane lub dokańczane. Dla porównania mają go jedynie najnowsze systemy plików takie jak ext3 czy reiserfs (pod linuxa) oraz befs (BeOS). Windows 2000 czy XP czasami się zawiesi, lub jeśli zdarzy się nam że wyłączą nam prąd w elektrowni, lub nam wywali korki. I akurat wtedy gdy pracowaliśmy w jakimś ważnym programie. W przypadku NTFS plik zostanie uratowany (i do tego nawet bez naszej wiedzy), natomiast w FAT32 nie dość że będziemy mieli podczas startu systemu chkdsk to jeszcze nie jest pewne że uda nam się go uratować. Jest to zdecydowana zaleta tego systemu plików, która powinna zdecydowanie przeważyć szalę na jego korzyść, oczywiście dla tych dla których bezpieczeństwo jest na tyle ważne. ilość obsługiwanych klastrów - standardowo partycja na FAT32 może mieć maksymalnie wielkość 8,4 GB. Jednak nasz dobry Microsoft zrobił rozszerzenie (tzw. obsługa dużych dysków twardych) i dzięki temu mamy FAT32x, który nieco naciąga te standardy. dwie kopie MFT - system automatycznie robi dwie(lub więcej, w zależnośći od wielkości dysku) kopii tej tablicy w celu zwiększenia bezpieczeństwa hard links - technologia pozwalająca dwóm różnym nazwom plików, znajdujących się w różnych katalogach, wskazywać na te same dane. Minusy NTFS'a : rozmiar klastra - to co przedtem było plusem (choć małym) teraz jest DUŻYM minusem. Właśnie przez to że NTFS ma standardowy klaster wielkości 512 B lub 1 KB, MFT (Meta File Table) rozrasta się do ogromnych rozmiarów, czasami nawet zajmuje 100 MB (jest to skrajny przypadek ale możliwy). I przez to system musi cache'ować aż tyle danych, co w konsekwencji sprowadza się do wolniejszej pracy. Wynika z tego że najszybszy będzie tutaj FAT16 z 64 KB klasterem, ale jest to już astronomiczna wielkość, i straty są wtedy ogromne. Wynika z tego również że TEORETYCZNIE FAT32 powinien być szybszy w odczycie dużych plików (później to obalę). 4 zabezpieczenia dostępu - też są plusem, ale jak wszyscy wiemy w momencie żądania odczytu pliku na partycji NTFS system musi sprawdzać zabezpieczenia (co jest jednak pewnym procesem zajmującym cenny czas) i nieco spowalnia system kompatybilność - jak wiadomo NTFS jest niemożliwy (w standardowy sposób) do odczytania w starszych systemach z rodziny DOS'a. Jest to kolejna bariera, do obejścia choć nie dla każdego. FAT32 wypada tutaj lepiej gdyż możliwość jego czytania systemu mają wbudowane począwszy od Win95 OS2, (niewiadomo tylko dlaczego NT4.0 nie mógł go czytać, skoro został wydany mniej więcej w czasie Win98 OS2, choć później w kolejnych Service Pack'ach obsługa tego systemu została dodana) dwie kopie MFT - znowu plus jako minus, niestety wymaga to znów cennego miejsca Według danych statystycznych system NTFS jest zalecany dla nośników o pojemności ponad 400 MB. Coraz większe dyski nie powodują bowiem spadku wydajności. W przypadku niewielkich dysków NTFS nie jest optymalny, gdyż sporo przestrzeni nośnika wykorzystuje się do organizacji systemu plików. Na przykład na partycji 100 MB będzie do tego celu potrzebnych 4 MB Porównanie położenia danych na partycjach. Sposób na uniknięcie fragmentacji MFT: Instalujemy programy i gry, których mamy zamiar używać. Uruchamiamy wiersz poleceń (Start - Uruchom - wpisz "cmd") i wpisujemy kolejno polecenia: - C: - lub inna litera partycji, którą chcemy zabezpieczyć przed fragmentacją MFT - md s - tworzy katalog s - cd s - otwiera katalog s - FOR /L %f in (1,1,20000) do echo Hey > %f - tworzy 20000 plików, które nie zawierają danych, ich jedynym zadaniem jest utworzenie nowych 20000 rekordów w MFT. Będzie to dodatkowy ogromny bufor, który powinien uchronić MFT przed fragmentacją, nawet jeżeli podzielony zostanie MFT Zone 5 - del *.* /q - kasuje wszystkie utworzone pliki, spełniły one już swoje zadanie, bufor wewnątrz MFT został utworzony - cd.. - cofamy się o jeden poziom w strukturze katalogów - rd s - usuwamy katalog s Polecenie "convert c: /fs:ntfs" ma za zadanie w bezbolesny sposób pozwolić użytkownikom Windows zmienić FAT32 na NTFS. Problem polega na tym, że jest ono bardzo mało efektywne. Użyte bez dodatkowych parametrów zapisuje MFT nie w ciągu klastrów, ale tam gdzie się zmieści. Z tego powodu może powstać fragmentacja MFT, co bardzo negatywnie wpłynie na wydajność partycji. Poza tym MFT nie jest zapisany po 1/3 powierzchni partycji, więc mamy do czynienia z kolejnym spadkiem wydajności. Jest to zatem kolejny powód, który spowodował, że NTFS jest uważany za wolniejszy od FAT32. Najlepszym rozwiązaniem będzie pobranie demonstracyjnej wersji Perfect Disc 7 i użycie "offline defragmentation". Opcja ta pozwoli na scalenie i umieszczenie MFT, MFT Zone i Metadaty w odpowiednim miejscu na partycji 6