r13-07.doc

(852 KB) Pobierz
Oto przykłady stylów nagłówków:

Rozdział 13.
Zarządzanie systemami plików

Zanim zostałem informatykiem, pracowałem jako operator w elektrowni jądrowej i byłem marynarzem na okręcie podwodnym. Wbrew temu, co można przeczytać w powieściach Toma Clancy’ego, w czasach zimnej wojny okresy zmagań o utrzymanie bezpieczeństwa dla demokracji przeplatały się z okresami spokoju. Nie myślcie jednak, że gdy było spokojnie, marynarze–profesjonaliści marnowali swój cenny czas oglądając filmy czy grając w bezika. Nieliczne wolne chwile spędzaliśmy zadając sobie wzajemnie pytania dotyczące działania elektrowni jądrowej, projektowania okrętów podwodnych i procedur bojowych. (No dobrze, może graliśmy troszeczkę w bezika

Strona: 1
Do tłumacza: co to za gra? W Polsce nie ma takiej gry...

U.Płonka — OK, jest taka gra. Można dać przyp. red.

).

W trakcie tych testów ulubione pytanie brzmiało następująco: „Prześledź drogę kropli wody z oceanu poprzez rdzeń reaktora i z powrotem i opisz działanie każdego elementu, przez który przechodzi.” Ktoś, kto potrafił odpowiedzieć na to pytanie, dokładnie znał systemy okrętu. Ktoś, kto potrafił odpowiedzieć na to pytanie jednocześnie zwyciężając w grze w bezika, był wybitnym specjalistą.

Podobnie można bawić się przy projektowaniu systemu plików, na przykład podążając za bajtem od twardego dysku do monitora i opisując każdy sterownik, który napotyka na drodze. Jako administratorzy nie musimy znać odpowiedzi na tego rodzaju pytania na poziomie wymaganym od projektanta systemu lub sprzętu komputerowego, ale znajomość przynajmniej budowy systemu plików może być bardzo przydatna. Pomaga przewidywać problemy, tworzyć plany na wypadek awarii i wykrywać dziwne zachowania.

W poprzednim rozdziale opisano, w jaki sposób Menedżer Dysku Logicznego (Logical Disk Manager — LDM) przygotowuje dysk na potrzeby systemu plików. Po zakończeniu działania LDM dysk jest w „stanie surowym”, więc Windows 2000 za pomocą sterowników Installable File System (IFS) zamienia go na nadający się do zapisu i odczytu danych w użytecznym formacie. A oto lista sterowników IFS sterujących dostępem do danych przechowywanych na dysku twardym:

·         FASTFAT.SYS. Sterownik FAT (obsługuje również FAT32),

·         NTFS.SYS. System plików Windows NT,

·         CDFS.SYS. System plików CD-ROM. Obsługuje płyty CD-ROM w formacie ISO 9660 z długimi nazwami plików o długości maksymalnej do 32 znaków,

·         UDF.SYS. Sterownik systemu plików Universal Disk Format. System ten obsługuje napędy DVD z plikami o standardowych nazwach długich,

·         PINBALL.SYS. Sterownik systemu plików HPFS, używanego przez system operacyjny OS/2. Ten system plików nie jest już obsługiwany przez systemy NT,

·         EFS.SYS. Sterownik szyfrowania plików systemu plików NTFS (Encrypting File System),

·         RSFILTER.SYS. Sterownik plików archiwalnych (Remote Storage System). Jest to system plików zapewniający niemal natychmiastowy dostęp do plików zapisanych na taśmie.

Szczegółowy opis wymienionych wyżej sterowników IFS nie mieści się w zakresie niniejszej książki. Zainteresowanym polecam książkę Edwarda Dekkera i Josepha Newcomera Developing Windows NT Device Drivers.

Pomijając zawiłości projektowania sterowników dla systemu plików, pewne typowe aspekty ich działania uzasadniają zainteresowanie nimi administratorów systemu. Rozdział niniejszy zawiera szczegółowy opis trzech głównych systemów plików Windows 2000: FAT16, FAT32 i NTFS, podając praktyczne zalety i ograniczenia każdego z nich. Opisano również krok po kroku następujące zagadnienia:

·         Kompresja dysku i obsługa zapisywania na dysku plików o dużych rozmiarach (Sparse Files),

·         Dynamiczny wskaźnik lokalizacji danych (Reparse Points) i katalogi dołączania (Mount Points),

·         Obsługa połączeń rozproszonych (Distributed Link Tracking),

·         Defragmentacja dysku,

·         Odporność na błędy, śledzenie dziennika zdarzeń i nowego dziennika zmian (Change Journal),

·         Przydzielanie użytkownikom ograniczeń wolnej przestrzeni na zasobach dyskowych (Quota Management),

·         Usługi archiwizacji plików (Remote Storage Services).

 

Przegląd systemów plików Windows 2000

 

Z systemami plików związane są następujące pojęcia:

·         Sektory i jednostki alokacji. Jest to podstawowy podział danych na dysku. Sektory są określone poprzez geometrię dysku i ustalone przez producenta najczęściej jako 512–bajtowe. Jednostka alokacji jest to logiczne połączenie sektorów w większą strukturę, co poprawia wydajność systemu plików.

·         Partycje i woluminy. Logiczny podział dysku lub zestawu dysków tworzący granice dla systemu plików. W poprzednim rozdziale dokonano rozróżnienia na partycję i wolumin, ponieważ jest to istotne dla działania Menedżera Dysków Logicznych (Logical Disk Manager — LDM), jednak na poziomie abstrakcji reprezentowanym przez system plików, pojęcia te są równoznaczne.

·         Sektor rozruchowy (Boot Sector). Pierwszy sektor partycji zawierający informacje o systemie plików oraz kawałek programu ładującego.

·         Blok parametrów BIOS (BIOS Parameter Block — BPB). Fragment sektora rozruchowego zawierający informacje właściwe systemowi plików na danej partycji.

·         Tablica alokacji plików (FAT). Mapa jednostek alokacji zawierających pliki. Standardowa tablica FAT używa adresów 16–bitowych. W celu zwiększenia pojemności tablica FAT systemu plików FAT32 używa adresów 32–bitowych.

·         Główna tablica plików (Master file table — MFT). Obiektowa baza danych stosowana w systemie plików NTFS.

·         Katalogi. Spis nazw plików tworzący hierarchiczną strukturę systemu plików.

·         Indeksy dodatkowe. NTFS umożliwia indeksowanie dowolnego atrybutu w bazie MFT. Budowa i działanie tych indeksów stanowią znaczną część opisu dodatkowych właściwości systemu plików zamieszczonego w niniejszym rozdziale.

Poniżej przedstawiono charakterystykę wyżej wymienionych elementów i na tej podstawie sporządzono porównanie trzech rodzimych systemów plików Windows 2000: FAT, FAT32 i NTFS pod względem funkcjonalności. Na końcu każdego podrozdziału znajduje się streszczenie podanych informacji.

 

Sektory i jednostki alokacji

Dane na twardym dysku zapisywane są w sektorach, po 512 bajtów każdy, tworzących koncentryczne ścieżki. Na dysku o pojemności 10 GB, sformatowanym jako jeden wolumin znajduje się w przybliżeniu 20 milionów sektorów.

Numerowanie i śledzenie tak dużej liczby sektorów może być dla systemu plików zadaniem przekraczającym jego możliwości. W celu poprawienia wydajności, sektory zostały połączone w grupy zwane jednostkami alokacji (clusters).

Rozmiar jednostki alokacji podaje liczbę sektorów w tej jednostce, na przykład rozmiar jednostki alokacji równy 8 sektorów oznacza, że w każdej z nich zapisane są 4 kB danych. Jeśli plik nie zapełni całkowicie jednej lub kilku jednostek alokacji, to pozostała część powierzchni dyskowej jest tracona, tak więc najefektywniejsze jest utworzenie jednostek alokacji o rozmiarze jednego sektora.

Stopień wykorzystania dysku maleje wraz ze wzrostem rozmiaru jednostki alokacji. Wszystkie systemy plików Windows 2000 zawierają rozwiązania kompromisowe pomiędzy efektywnym wykorzystaniem dysku, a wydajnością.

FAT

Standardowy system plików FAT wykorzystuje adresowanie 16–bitowe, co ogranicza maksymalną liczbę jednostek alokacji do 216 czyli do 65 535

Myślę, że ma być 65 536.

. Gdyby rozmiar jednostki alokacji woluminu FAT wynosił jeden sektor, wtedy wolumin ten mógłby zawierać nie więcej niż 65536´512 bajtów, czyli 32 MB. Jeśli wolumin FAT jest większy niż 32 MB, system plików zwiększa rozmiar jednostki alokacji.

Ograniczenia pamięci w trybie rzeczywistym nakładają także ograniczenia na rozmiar jednostki alokacji systemu FAT dla DOS i Windows 9x, który wyraża się potęgą 2 mniejszą od maksymalnej wartości adresu, a zatem wynosi on 215 bajtów, czyli 32 kB. Stąd maksymalny rozmiar partycji FAT dla DOS i Windows 95 to 65535

65 536?

´32 kB lub inaczej około 2 GB. FAT dla Windows 2000, dzięki adresowaniu pamięci w trybie chronionym, ma górną granicę rozmiaru jednostki alokacji równą 216 czyli 64 kB.

Wolumin FAT dla Windows 2000 może urosnąć do 4 GB, ale jeśli rozmiar jednostki alokacji tego woluminu będzie większy niż 32 kB, DOS i Windows 95 nie będą miały do niego dostępu. Należy o tym pamiętać w przypadku komputera z możliwością wyboru systemu operacyjnego przy starcie (dual-boot). Z tej samej przyczyny program instalacyjny NT przyjmuje 2 GB jako wartość domyślną rozmiaru woluminu. Wykorzystując opcję ExtendPartition w trybie instalacji bezdotykowej (Unattended Install) możliwe jest zwiększenie tej wartości do 4 GB. Windows 2000 pozwala na utworzenie partycji systemowych większych niż 2 GB pierwszy raz formatując dysk z zastosowaniem systemu plików FAT32.

FAT32

Microsoft wprowadził system plików FAT32 w Windows 95 OSR2. System ten wykorzystuje trzydziestodwubitową tablicę FAT powiększając maksymalny rozmiar pliku do 232 bajtów, czyli około 4 GB. DOS Windows95 i NT nie mogą odczytywać ze standardowej partycji FAT32. Do zaadresowania jednostki alokacji w tym systemie plików stosuje się obcięty adres 32–bitowy z niewykorzystanymi najstarszymi czterema bitami i dlatego wolumin FAT32 może zawierać 228 jednostek alokacji.

Najmniejsza jednostka alokacji wyżej wymienionego systemu plików zawiera 4 kB, największa zaś 32 kB. Teoretycznym ograniczeniem górnym rozmiaru woluminu FAT32 jest 8 TB, praktyczne ograniczenie to liczba 232 sektorów, czyli 2 TB, na jednym dysku lub macierzy dysków. Windows 2000 obniża tę wartość jeszcze bardziej, maksymalny rozmiar woluminu FAT32 dla Windows 2000 wynosi 32 GB, co umożliwia zapis całej tablicy FAT w pamięci podręcznej poprawiając wydajność systemu.

NTFS

W systemie plików NT zastosowano adresowanie 64–bitowe, co daje teoretyczny rozmiar pojedynczego pliku równy 264 bajtów czyli około 16 exabajtów

Dalej jest eksabajtów, trzeba ujednolicić, ale nie ma w słowniku.

, ale jak już wspomniano wcześniej, w praktyce stosuje się ograniczenie maksymalnego rozmiaru woluminu do 2 TB.

Podsumowanie

Oto najważniejsze informacje do zapamiętania o wykorzystywaniu sektorów i jednostek alokacji przez trzy wyżej wymienione systemy plików:

·         Maksymalny rozmiar jednostki alokacji systemu plików FAT wynosi 32 kB.

·         Maksymalny rozmiar partycji FAT dla DOS i Windows 95 to 2 GB.

·         Maksymalny rozmiar partycji FAT dla Windows 2000 wynosi 4 GB. DOS i Windows 95 nie mają dostępu do partycji większych niż 2 GB.

·         Windows 2000 umożliwia tworzenie partycji systemowych większych niż 2 GB poprzez pierwsze sformatowanie dla systemu plików FAT32.

·         Maksymalny rozmiar woluminu FAT32 wynosi 8 TB, ale w praktyce stosuje się woluminy do 2 TB.

·         Windows 2000 ogranicza rozmiar woluminów FAT32 do 32 GB.

·         Maksymalny rozmiar woluminu NTFS, który teoretycznie może wynosić 16 eksabajtów

eksa-, czy exa- ?

·         , w praktyce ograniczony jest do 2 TB.

Sektor rozruchowy partycji (Boot sector) i blok parametrów BIOS (BPB)

W poprzednim rozdziale opisano, w jaki sposób LDM przygotowuje cały dysk lub jego część dla systemu plików. LDM może również połączyć kilka dysków w jeden wolumin logiczny. System plików, formatując taki wolumin, pozostawia pierwszy sektor wolny, przeznaczając go dla specjalnej struktury nazwanej sektorem rozruchowym partycji (Partition Boot Sector) lub w skrócie sektorem rozruchowym (boot sector), nawet jeśli partycja nie jest partycją rozruchową. Sektor rozruchowy zawiera informacje o systemie plików i strukturach danych systemu.

Program ładujący (bootstrap loader)

Zawartość sektora rozruchowego jest zależna od zastosowanego systemu plików, jednakże kilka pierwszych pozycji jest wspólnych dla wszystkich. Poniższy wydruk przedstawia pierwsze 16 bajtów sektora rozruchowego FAT:

<<Pierwsze 16 bajtów sektora rozruchowego>>

EB 3C 90 4D 53 44 4F 53 2E 30 00 02 04 01 00 .<.MSDOS5.0.....

Pierwsze trzy bajty sektora rozruchowego zawierają instrukcję skoku do jego fragmentu, w którym mieści się program rozpoczynający ładowanie systemu (bootstrap loader). Program ten jest na tyle dobry, aby znależć i wywołać program ładujący (secondary bootstrap loader) rozpoczynający sekwencję startową systemu operacyjnego. Dla DOS i Windows 9x jest to IO.SYS a dla NT i Windows 2000 –– NTLDR. Komputery z procesorem Alpha nie mają sektora rozruchowego, ścieżka ARC zapisana w pamięci ROM pozwala na wyszukanie programu ładującego OSLOADER.

Następne 8 bajtów sektora rozruchowego zawiera nazwę wykorzystywanego systemu plików oraz, opcjonalnie, jego wersję. Windows 2000 używa nazwy MSDOS 5.0 zarówno dla systemu plików FAT, jak i dla FAT32, zapewniając poprawną pracę starszych aplikacji, które sprawdzają system plików i jego wersję. Co prawda w Windows 2000 można użyć polecenia SETVER w trybie wirtualnej maszyny DOS (Virtual DOS Machine – VDM), ale po co zmuszać administratora do marnowania czasu, skoro można uniknąć problemu podając przy rozruchu nieprawdziwe informacje o systemie plików i jego wersji.

Od bajtu nr 12 zaczynają się: blok parametrów BIOS (BIOS Parameter Block – BPB) i rozszerzony blok parametrów BIOS (Extended BPB). Ich zawartość zależy od systemu plików.

BPB dla systemu plików FAT

BIOS Parameter Block na partycji FAT ma 25 bajtów. Następujące po nim 26 bajtów tworzy Extended BPB. Poniżej przedstawiono obydwie struktury oraz opis ich zawartości. W komputerach z procesorami Intela dane zapisywane są w kolejności: młodszy bajt–starszy bajt, dlatego aby otrzymać właściwą wartość słowa lub podwójnego słowa, należy odwrócić kolejność bajtów. Np. 00 02 to w zapisie szesnastkowym 0200 lub w zapisie dziesiętnym 512.

<<BPB i rozszerzony BPB woluminu FAT16. Zamieszczono również pierwsze 11 bajtów sektora rozruchowego.>>

EB 3C 90 4D 53 44 4F 53 35 2E 30 00 02 04 01 00 .<.MSDOS5.0.....

02 00 02 00 00 F8 C8 00 20 00 40 00 20 00 00 00 ........ .@. ...

E0 1F 03 00 80 00 29 20 24 ED 64 4E 4F 20 4E 41 ......) $.Dn0 NA

4D 45 20 20 20 20 46 41 54 31 36 20 20 20 33 C9 ME    FAT16   3.

·         Liczba bajtów w sektorze (00 02). W zapisie szesnastkowym 200h, w zapisie dziesiętnym 512. Większość dysków ma sektory 512–bajtowe.

·         Liczba jednostek alokacji w sektorze (04). W zapisie szesnastkowym 4h, w zapisie dziesiętnym 4. Przy 512 bajtach w sektorze daje to 2048 bajtów w jednostce alokacji. Jest to partycja 100 MB, niewielka jak na dzisiejsze standardy. Ograniczenie przestrzeni adresowej systemu plików FAT jest przyczyną nieekonomicznego wykorzystywania dysku twardego.

·         Liczba sektorów rezerwowych poprzedzających tablicę alokacji plików FAT (01 00). W zapisie szesnastkowym 0001h, w zapisie dziesiętnym 1. Liczba ta mówi, że pomiędzy początkiem danej partycji a początkiem tablicy alokacji plików FAT znajduje się jeden sektor. Ponieważ wielkość sektora rozruchowego wynosi jeden, więc tablica FAT zaczyna się zaraz za nim. Takie położenie tablicy FAT jest wymuszone przez system plików FAT16 i jest to jedna z kluczowych słabości tego systemu. Lokalizacja tablicy FAT, niezmienna w stosunku do sektora rozruchowego, czyni ją podatną na zniszczenie w przypadku uszkodzenia sektora, w którym jest umieszczona, ogranicza także elastyczność systemu plików FAT pod względem zapisu dodatkowych metadanych (metadata).

·         Liczba kopii tablicy FAT (02). W każdej partycji FAT16 zapisane są dwie wersje tablicy FAT: oryginał i kopia. System plików, nie mogąc odczytać jakiejkolwiek pozycji z pierwotnej tablicy FAT, ratuje się sięgając do jej kopii. W takiej sytuacji sterownik FASTFAT Windows 2000 zapisuje do dziennika zdarzeń (Event Log) komunikat o błędzie. System plików FAT nie ma możliwości przeniesienia tablicy FAT do nieuszkodzonego sektora. Jeśli sterownik systemu plików informuje o wystąpieniu błędów odczytu lub zapisu pierwotnej tablicy FAT, należy jak najszybciej ponownie sformatować dysk i odtworzyć dane z kopii zapasowej.

·         Maksymalna liczba pozycji w głównym katalogu systemowym (root directory)(00 02). W zapisie szesnastkowym 200h, w zapisie dziesiętnym 512. Katalog ten w przypadku systemu plików FAT16 ma stały rozmiar, ograniczający liczbę pozycji do 512. Stanowi to problem przy długich nazwach plików, ponieważ każde 13 dodatkowych znaków nazwy stanowi kolejną pozycję w katalogu systemowym.

·         Liczba sektorów (00 00). Nazywana jest czasami liczbą małych sektorów (small sector value) i używana tylko dla partycji 32 MB lub mniejszej. Umożliwia bezpośrednie numerowanie 216 sektorów w przypadku, gdy rozmiar jednostki alokacji równy jest jednemu sektorowi, jak to miało miejsce dla DOS 3.0 lub wersji wcześniejszych. Dla partycji powyżej 32 MB w pozycji tej wpisane jest zero.

·         Deskryptor mediów (F8). F8 oznacza dysk twardy, w tym również wyjmowany. Dyskietkom przyporządkowano inne wartości.

·         Liczba sektorów zajętych przez tablicę FAT (C8 00). W zapisie szesnastkowym 00C8h, w zapisie dziesiętnym 200 sektorów. Przy rozmiarze sektora równym 512 bajtów daje to 100 kB. Należy jeszcze podwoić tę liczbę ze względu na kopię tablicy FAT. Stosunek obszaru dysku zajętego przez system plików do wielkości partycji wynosi w przybliżeniu 0,2%. To niewiele, znacznie mniej niż w przypadku FAT32 czy NTFS, ale zostało osiągnięte kosztem dużych rozmiarów jednostki alokacji i nieekonomicznego wykorzystania dysku.

·         Liczba sektorów na ścieżkę (20 00), 20h lub 32 oraz liczba głowic (40 00), 40h lub 64. Wartości te określają wirtualną geometrię dysku używaną przez system plików do znajdowania jednostek alokacji.

·         Liczba sektorów ukrytych (20 00 00 00). W zapisie szesnastkowym 20h, w zapisie dziesiętnym 32. Jest to liczba sektorów pomiędzy fizycznym początkiem dysku a początkiem partycji. System operacyjny wykorzystuje ten obszar do zapisywania dodatkowych danych dotyczących dysku. Liczba 32 wskazuje, że jest to pierwsza partycja na dysku.

·         Całkowita liczba sektorów (E0 1F 03 00). W zapisie szesnastkowym 31FE0h, w zapisie dziesiętnym 204768 sektorów, co przy rozmiarze sektora równym 512 bajtów daje około 102 MB. Rozmiar partycji wyświetlany przez konsolę Zarządzanie Dyskami (Disk Management console) jest tylko przybliżeniem. W systemie Windows 2000 partycja FAT16 może być sformatowana z jednostkami alokacji o rozmiarze 64 kB, więc maksymalny rozmiar partycji wynosi 4 GB. Rozmiar partycji instalacyjnej Windows NT został ograniczony do 2 GB, ponieważ sterownik FAT znajdujący się na dyskach instalacyjnych może odczytywać dane z jednostek alokacji o maksymalnym rozmiarze 32 kB. Jeśli rozmiar partycji instalacyjnej Windows 2000 przekracza 2 GB, to system automatycznie formatuje ją z wykorzystaniem systemu plików FAT32.

·         Numer dysku (Drive Type) (80). W zapisie szesnastkowym 80h (nie stosuje się postaci dziesiętnej). Z punktu widzenia systemu operacyjnego dyski numerowane są kolejno, rozpoczynając od 80h (pierwszy dysk), drugi dysk ma numer 81h itd. Ta pozycja w BPB prawie zawsze jest równa 80h niezależnie od rzeczywistego położenia dysku.

·         Pozycja specjalna (00). Dwa najmłodsze bity są wykorzystywane jako flagi. Bit zerowy jest nazywany flagą błędu (dirty flag) i jest ustawiany w wypadku nieprawidłowego zamknięcia systemu. Ustawienie tej flagi powoduje uruchomienie przez Windows 2000 wersji rozruchowej programu Chkdsk nazwanej Autochk. Następny bit jest bitem diagnostyki i powoduje, że system w trakcie rozruchu sprawdza poprawność plików i katalogów oraz skanowanie powierzchni dysku. Ten bit jest zwykle ustawiany razem ze znacznikiem błędu.

·         Sygnatura dysku (Disk signature) (29). W zapisie szesnastkowym 29h (nie stosuje się postaci dziesiętnej). Wartość taka oznacza obecność Extended BPB. Windows 2000 rozpoznaje wartości 28h lub 29h.

·         Numer seryjny woluminu (Serial number of the volume) (20 24 ED 64). W zapisie szesnastkowym 64ED-2420 (nie stosuje się postaci dziesiętnej). Numer ten pozwala na jednoznaczną identyfikację woluminu. Nie należy mylić tego numeru z unikalnym

Lepiej unikatowym, ale nie wiem, czy nie funkcjonuje to jako część nazwy.

·         identyfikatorem globalnym (Globally Unique Identifier) wykorzystywanym przez LDM. Informacje o partycjach sprzętowych są zapisane w innym miejscu.

...

Zgłoś jeśli naruszono regulamin