Następna strona Poprzednia strona Spis treści

3. Geometria dysku i partycje

Jeśli posiadasz na jednym dysku kilka systemów operacyjnych, wtedy każdy z nich używa jednej lub więcej partycji. Niezgodność w ocenie, gdzie te partycje się dokładnie znajdują może mieć katastrofalne konsekwencje.

Rekord MBR zawiera tabelę partycji określającą, gdzie znajdują się partycje (podstawowe). Tabela zawiera 4 pozycje (dla 4 partycji) i wygląda mniej więcej tak:

struct partition {
        char active;    /* 0x80: startowa, 0: nie strtowa */
        char begin[3];  /* CHS pierwszego sektora partycji */
        char type;
        char end[3];    /* CHS ostatniego sektora partycji */
        int start;      /* 32 bitowy numer sektora (licząc od 0) */
        int length;     /* 32 bitowa liczba sektorów */
};
(gdzie CHS oznacza numer cylindra/głowicy/sektora).

Jak widać informacja jest nadmiarowa: lokalizacja partycji jest podana zarówno w 24-ro bitowych polach begin i end, oraz w 32-dwu bitowych polach start i length.

Linux korzysta jedynie z pól start i length, dlatego potrafi obsłużyć partycje o liczbie sektorów nie przekraczającej 2^32 tzn. partycje o rozmiarze nie większym niż 2 TB. Czyli dwieście razy większą od dysków obecnie dostępnych na rynku. Możemy mieć nadzieje, że będzie to wystarczające na najbliższe 10 lat, a może więcej.

Niestety, funkcja BIOSu INT13 korzysta z inforamacij CHS zakodowanych w polach 3bajtowych, przy czym na numer cylindra przeznaczonych jest 10 bitów, 8 bitów na numer głowicy i 6 bitów na numer sektora na ścieżce. Dozwolone numery cylindrów to 0-1023, głowic 0-255 i dozwolona liczba sektorów na ścieżce wynosi 1-63 (tak, sektory na ścieżce są liczone od 1, a nie od 0). Na tych 24 bitach można zaadresować nie więcej niż 8455716864 bajtów (7.875 GB), dwieście razy więcej niż rozmiar dysków dostępnych w roku 1983.

Kolejne, ważniejsze (groźniejsze) ograniczenie polega na tym, że standard interfejsu IDE pozwala jedynie na: 256 sektorów na ścieżce, 65536 cylindrów i 16 głowic. Sam w sobie pozwala na dostęp do 2^37 = 137438953472 bajtów (128 GB), lecz w połączeniu z ograniczeniami nałożonymi przez BIOS, faktycznie umożliwia na dostęp tylko do 528482304 bajtów (504 MB).

Nie jest to wystarczające dla dostępnych obecnie dysków i ludzie są zmuszeni do stosowania różnego rodzaju sztuczek, zarówno sprzętowych, jak i programowych.


Następna strona Poprzednia strona Spis treści