dysk fizyczny

BUDOWA FIZYCZNA DYSKU

Wewnątrz obudowy mieści się od jednego do kilku talerzy. Po obu stronach każdego z nich znajdują się ścieżki podzielone na sektory zawierające standardowo 512 bajtów. Liczba sektorów na ścieżce zależy zatem od odległości danej scieżki od środka dysku: im dalej w kierunku zewnętrznej krawędzi, tym więcej sektorów na ścieżce.

Zapisane na dysku informacje odczytywane są przez głowice umieszczone na ruchomym ramieniu. Te ścieżki, które można odczytać bez potrzeby przemieszczenia ramienia z głowicami, tworzą jeden cylinder. Cylindry, głowice i sektory zostały ponumerowane, aby łatwo odwoływać się do konkretnego miejsca (standard C/H/S; cylindry i głowice numerowane są od 0, sektory od 1).

Pierwszy sektor na każdym dysku (CHS=001) to MBR (sektor bootujący). MBR składa się z dwóch części: umieszczonego na początku kodu wykonywalnego i tablicy partycji. MBR kończy się sygnaturą 55 AA (takie są dwa ostatnie bajty).

Kod wykonywalny, inaczej IPL (Initial Program Loader) lub bootstrap, ładowany jest do pamięci RAM i uruchamiany podczas startu komputera. W samym kodzie znajdziemy program odpowiedzialny za odnalezienie i odczytanie tablicy partycji oraz określenie, która partycja jest aktywna - czyli z której powinien być uruchamiany system operacyjny. Kod wykonywalny zajmuje około 400 początkowych bajtów MBR. Musi się kończyć najpóźniej na bajcie nr 445.

Tablica partycji złożona jest z czterech rekordów o długości 16 bajtów każdy. W rekordach może być zapisana informacja maksymalnie o czterech partycjach podstawowych (albo o maksymalnie trzech partcjach podstawowych i jednej rozszerzonej). Każdy rekord ma następującą strukturę:

  • pierwszy bajt określa stan partycji (aktywna to 80, nieaktywna to 00)
  • trzy bajty (nr 2, 3, 4) to adres początkowy w formacie CHS
  • piąty bajt to identyfikator (ID), który określa typ partycji (FAT, NTFS, ext2, itp.)
  • trzy następne bajty (nr 6, 7, 8) to adres końcowy w formacie CHS
  • cztery bajty (nr 9, 10, 11) to podana w sektorach odległość między początkiem dysku a początkiem partycji
  • ostatnie cztery bajty to rozmiar partycji, określany jako liczba zajmowanych (alokowanych) przez nią sektorów.

Jeżeli na dysku znajduje się partycja rozszerzona, to zawiera ona kolejną tablicę partycji i informację o dyskach logicznych.

BUDOWA LOGICZNA DYSKU

Zanim zainstalujemy system operacyjny na nowym komputerze, musimy przygotować dyski twarde. Proces ten polega na podzieleniu dysku fizycznego na partycje i ich sformatowaniu. Typowy duży dysk twardy jest podzielony na jedną partycję podstawową (primary) i jedną rozszerzoną (extended), ta ostatnia zaś może się składać z kilku dysków logicznych. Dodatkowy fizyczny dysk twardy, na którym nie będzie instalowany żaden system operacyjny, może zawierać jedynie partycję rozszerzoną podzieloną na dyski logiczne.

Do tworzenia i zmian partycji służy program FDISK. Pozwala on wybrać wielkość i typ partycji. Ustawia się też która partycja podstawowa na dysku jest aktywna. Każda partycja dyskowa ma swoj wpis w tablicy partycji. W tablicy tej oprócz dokładnych adresów początku i końca partycji (numery cylindra, głowicy i sektora) zapisany jest jej identyfikator (ID). Na podstawie tego numeru system operacyjny jest w stanie określić, czy będzie potrafił odwoływać się do danej partycji.

Korzystając z programu FIPS do podziału partycji, z jednej partycji podstawowej możemy uzyskać do czterech partycji podstawowych. Jest to nieoficjalna możliwosc w DOS-ie. Przydaje się to pod Linuksem, gdy chcemy mieć Windows na pierwszej partycji podstawowej, LILO na partycji podstawowej typu Linux native, a trzecią partycję podstawową typu Linux swap.

Na partycji extended można utworzyć wiele dysków logicznych. Na początku każdego dysku logicznego znajduje się odpowiednik MBR - EMBR (Extended MBR), który zawiera adresy poczatku i konca dysku logicznego.

LICZBA I ROZMIAR KLASTRÓW W SYSTEMACH PLIKOW FAT


                                   FAT12    FAT16,VFAT    FAT32
Rozmiar wpisu w tablicy FAT       12 bitów    16 bitów   28 bitów
Max liczba klastrow na partycji    2^12        2^16       2^28
Min rozmiar klastra               512 B        2 KB       4 KB
Max rozmiar klastra                 4 KB      32 KB      32 KB
Max rozmiar partycji               16 MB       2 GB       2 TB

Rozmiar partycji | Klaster w:    FAT16         FAT32
do 128 MB                        2 KB          ---
do 256 MB                        4 KB          ---
do 512 MB                        8 KB          ---
do 1 GB                         16 KB          4 KB
do 2 GB                         32 KB          4 KB
do 4 GB                         64 KB (NT)     4 KB
do 8 GB                          ---           4 KB
do 16 GB                         ---           8 KB
do 32 GB                         ---          16 KB
ponad 32 GB                      ---          32 KB

FAT16 to 16-bitowa tablica alokacji plików. Nośnik z systemem FAT16 składa się

  • z części systemowej: MBR, dwie kopie tablicy alokacji plików i katalog główny dysku (zawiera nazwy plików oraz informacje o ich wielkości i pierwszym zajmowanym klastrze; maksymalnie może mieć zapisane 512 obiektów)
  • części przeznaczonej na dane użytkownika - tu są też informacje o podkatalogach, atrybutach.

MBR (sektor bootujący) zawiera informacje potrzebne do uruchomienia zainstalowanego systemu operacyjnego. FAT to tablica zawierająca informacje łączącą dowolny plik zapisywany przez system operacyjny z jego fizycznym położeniem na dysku. FAT zawiera listę wszystkich plików i folderów oraz adresy kolejnych klastrów używanych przez dany obiekt. W ostatnim klastrze jako adres "następnego" (nie istniejącego) klastra zapisywana jest wartość 0xFFFF. Długość numeru klastra wynosi 16 bitów. Stąd liczba różnych numerów wynosi 2^16 = 65536 i tyle może być klastrów w systemie. Wpis w FAT zajmuje dwa bajty (to wynika z długości numeru). Stąd można oszacować wielkość tablicy alokacji FAT16 na 2^16 * 2 B = 2^17 B = 128 KB.

PRZYKŁAD: szukanie pliku. System zaczyna poszukiwania w katalogu głównym (w części systemowej nośnika). Tu odnajduje adres pierwszego klastra pliku. Adres ten jest jednocześnie wskaźnikiem do FAT. W miejscu wskazanym przez wskaźnik jest adres kolejnego klastra, a zarazem nowy wskaźnik do FAT. Wartość 0xFFFF oznacza, ze odczytano ostatni fragment pliku.

VFAT

VFAT pojawił się w Windows 95. Cechy:

  • partycje o rozmiarach do 2 GB
  • dyski twarde mogą mieć więcej niż 1024 cylindry
  • długość nazwy pliku lub folderu zwiększono do 254 znakow

FAT32

FAT32 to 32-bitowa tablica alokacji plikow. FAT32 pojawił się w Windows 95 OSR2 (OEM Servise Release 2) i jest dostępny w Windows 98. Długość numeru klastra wynosi 28 bitów (4 bity są zarezerwowane). Stąd liczba różnych numerów wynosi 2^28. Wpis w FAT zajmuje cztery bajty. FAT może mieć więcej wpisów. MBR zajmuje dwa sektory fizyczne na dysku. Zawartość katalogu głównego nie jest zapamietana w części systemowej dysku, ale w części na dane, jak dla każdego innego katalogu. Stąd nie ma ograniczenia na 512 obiektów w katalogu głównym.

STRUKTURA PLIKÓW

Sformatowane dyski logiczne są dzielone na jednostki alokacji zwane klastrami. W zależności od rozmiaru dysku klastry mają rożną wielkość. Najmniejszy mieści jeden sektor (sektor ma zawsze 512 bajtów, ale tak małe klastry są tylko w FAT12). Liczba sektorów w klastrze jest przechowywana w systemie FAT16 przez system operacyjny w postaci jednego bajtu. Liczba ta musiała być mniejsza od 256 i musiała stanowić potęgę dwójki. W ten sposób największy możliwy do skonstruowania klaster mógł mieć 128 sektorow, co daje 128 * 512 B = 64 KB. Tak duży klaster może być w Windows NT. Daje to maksymalny rozmiar partycji 2^16 * 64 KB = 4 GB.

Dla klasycznego FAT16 maksymalny klaster zawiera 64 sektory i ma wielkosc 32 KB. Dyski w systemie FAT16 mogą zawierać 65536 (2^16) klastrów, co daje maksymalną pojemność dysku logicznego około 2 GB (2^16 * 32 KB = 2^16 * 2^5 * 2^10 B = 2^31 B = 2 GB).

Dyski w systemie FAT32 mogą zawierać 2^28 klastrów. Minimalna wielkość klastra dla FAT32 to 4 KB. Maksymalna wielkość partycji z FAT32 to 2 TB (2^41 B). NIE ROZUMIEM DLACZEGO. Jeżeli jeden klaster ma 32 KB, to dostajemy pojemność dysku 2^28 * 32 KB = 2^28 * 2^15 B = 2^43 B = 8 TB, a nie 2 TB.

KOMBINACJA OGRANICZEŃ: BIOS I IDE

PARAMETR                 BIOS   IDE          Ograniczenie
Max liczba cylindrów     1024   65536=2^16         1024
Max liczba głowic         256      16                16
Max liczba sektorów        63     256                63
Max pojemność            8 GB   128 GB           504 MB

BARIERY POJEMNOŚCI DLA DYSKÓW TWARDYCH

  • OGRANICZENIE: 504 MB dla standardowych dysków IDE/ATA.
    PRZYCZYNA: BIOS potrafi zaadresować tylko 1024 cylindrów na dysku. 2^10 (C) * 2^4 (H) * 63 (S) * 512 B = 504 MB (w przybliżeniu 2^10*2^4*2^6*2^9 = 2^29)
    ROZWIĄZANIE: upgrade BIOS-u lub zastosowanie nakładki software'rowej.
  • OGRANICZENIE: 2016 MB (1,97 GB).
    PRZYCZYNA: niektóre BIOS-y pozwalają adresować tylko 4096 cylindrów. 2^12 (C) * 2^4 (H) * 63 (S) * 512 B = 2016 MB (w przybliżeniu 2^12*2^4*2^6*2^9 = 2^31
    ROZWIĄZANIE: upgrade BIOS-u lub zastosowanie nakładki software'rowej.
  • OGRANICZENIE: 2 GB.
    PRZYCZYNA: rozmiar klastrów w FAT16 może być maksymalnie 32 KB pod DOS, Windows 3.1x i 95.
    ROZWIĄZANIE: duży dysk trzeba podzielić na partycje i co najmniej na dwa napędy logiczne.
  • OGRANICZENIE: 8 GB.
    PRZYCZYNA: ograniczenia BIOS-u co do sposobu adresowania; funkcja obsługi przerwania Int 13H zapewnia dostęp do 16383 cylindrów (2^14 - 1), 16 głowic (2^4), 63 sektorów (2^6 - 1) zawierających klastry po 512 bajtów; adres miejsca na dysku jest przekazywany za pośrednictwem 24 bitów w konwencji CSH (cylinder-head-sector); można policzyć w przyblizeniu 2^24 * 512 B = 2^33 B = 8 GB.
    ROZWIĄZANIE: wprowadzono w BIOS-ie nową metodę adresowania LBA; metoda ta przesyła pojedyńcze adresy długosci 28 bitów, co daje dostęp do danych o pojemności około 126 GB; można policzyć w przybliżeniu 2^28 * 512 B = 2^37 B = 128 GB; należy więc wymienić BIOS lub wykorzystać program wspomagający adresowanie, np. DiscWizard lub OnTrack Disk Manager.

    TRANSLACJA W BIOS-IE: ROZMIARY PARTYCJI I ILOŚCI BITÓW W ADRESIE

    Liczba adresowanych cylindrów  1024  2048  4096  8192  16384  ---
    Bity wymagane do zaadresowania   10    11    12    13     14  ---
               cylindrów
    Liczna adresowanych głowic       16    16    16    16     16  ---
    Liczba cylindrow po translacji 1024  1024  1024  1024   1024  65536
    Liczba głowic po translacji      16    32    64   128    256    256
    Maksymalna pojemność         504MB 1008MB 2016MB 4032MB 8064MB 128GB
    
    Bity wymagane przez LBA       CHS*     21    22    23     24     28