email: darw32@poczta.onet.pl


Linux - 4.Korzystanie z Różnych Mediów

Partycje

Każdy dysk twardy może zostać podzielony na partycje. Każda partycje stanowi osobną część, tak jakby była osobnym dyskiem. Idea polega na tym, że chcąc mieć dwa systemy operacyjne na jednym dysku możesz stworzyć odpowiednie partycje. Każdy z systemów będzie wykorzystywał swoją część na własny sposób, inne nie będą go interesować. Dzięki temu kilka systemów operacyjnych może koegzystować na jednym dysku.

Dyskietki nie posiadają partycji, nie istnieje taka potrzeba - ze względu na ich niewielką pojemność. CD-ROM-y zazwyczaj nie są dzielone ponieważ łatwiej używać ich jako jedną całość, rzadko kiedy zdarza się potrzeba umieszczenia na nich kilku systemów operacyjnych.

MBR, sektory ładujące i tablica partycji

Informacje o podziale dysku umieszczone są w pierwszym sektorze (dokładniej: pierwszym sektorze pierwszej ścieżki pierwszej płaszczyźny). Sektor ten nazwany jest głównym rekordem ładującym (master boot record) (MBR); część ta odczytywana jest przez BIOS w czasie startu komputera zawiera mały program (~400 bajtów) który odczytuje tablicę partycji, po czym odczytuje pierwszy sektor aktywnej partycji - rekord ładujący. W sektorze tym powinien znajdować się mały program odczytujący część systemu operacyjnego niezbędną do ładowania, po czym uruchomić ją.

Schemat partycjonowania dysku nie jest wbudowany w sprzęt, ani w BIOS. Jest to konwencja używana w wielu systemach operacyjnych. Nie wszystkie z nich przestrzegają ją, istnieją również pewne wyjątki. Niektóre z systemów zajmują jedną partycję, na której używają własnego schematu podziału. Takie działanie umożliwia zainstalowanie kilku systemów operacyjnych, natomiast w przypadku systemów nie obsługujących partycji jeden dysk oznacza możliwość zainstalowania tylko jednego systemu operacyjnego.

Zalecanym jest spisanie na kartce informacji o podziale dysku, w ten sposób uszkodzenie tablicy partycji nie spowoduje straty danych - dzięki zapisanym informacjom będziesz mógł ją odtworzyć. Zepsuta tablica partycji może zostać naprawiona programem fdisk. Oto informacje o partycjach uzyskane poleceniem fdisk -l:

$ fdisk -l /dev/hda

  Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders
  Units = cylinders of 855 * 512 bytes

     Device Boot  Begin   Start     End  Blocks   Id  System
  /dev/hda1           1       1      24   10231+  82  Linux swap
  /dev/hda2          25      25      48   10260   83  Linux native
  /dev/hda3          49      49     408  153900   83  Linux native
  /dev/hda4         409     409     790  163305    5  Extended
  /dev/hda5         409     409     744  143611+  83  Linux native
  /dev/hda6         745     745     790   19636+  83  Linux native
$

Partycje rozszerzone i logiczne

Oryginalny schemat partycjonowania szybko okazał się niewystarczający. Wielu ludzi chciało mieć więcej niż cztery systemy operacyjne na jednym dysku (Linux, MS-DOS, OS/2, Minix, FreeBSD, NetBSD, Windows/NT, itp.), również część ludzi chciała rozmieścić jeden system na kilku partycjach. Dla przykładu: w Linuksie swap ze względu wydajności umieszcza się na osobnej partycji (więcej poniżej).

Aby ominąć te ograniczenia wymyślono partycje rozszerzone. Trik ten umożliwia dzielenie podstawowej partycji na podpartycje. Podstawowa partycja, która jest podzielona nazywa się partycją rozszerzoną; podpartycja nazywa się partycją logiczną. Zachowują się (nie logicznie?) jak zwykłe partycje, ale tworzone są w odmienny sposób. Nie istnieje różnica w prędkości.

Struktura partycji mogłaby wyglądać następująco, jak na rysunku 4_7.1 poniżej. Dysk podzielony jest na trzy partycje podstawowe, druga partycja jest podzielona na dwa dyski logiczne. Część dysku nie jest podzielona. Dysk oraz każda z partycji posiada rekord ładujący.

Rysunek 4_7.1 Przykładowy podział dysku.

Typ partycji

Tablica partycji zawiera, dla każdej, bajt oznaczający typ partycji. Ma to na celu zidentyfikowanie systemu używającego danej partycji, lub celu użycia. Celem było utrudnienie sytuacji, w której dwa systemy operacyjne używałyby tej samej partycji. Jednak, w rzeczywistości wiele systemów nie interesuje się zawartością tegoż bajtu (Linux ma go w nosie). Co gorzej, niektóre z nich interpretują go niepoprawnie - DR-DOS ignoruje najbardziej znaczący bit tegoż bajtu, przy czym inne systemy tego nie robią.

Nie istnieje standard zawierający informacje o dokładnym znaczeniu poszczególnych wartości, część z powszechnie akceptowanych zawarta jest w tabeli poniżej. Tą samą listą posługuje się program fdisk.

Tabela 4_7-1. Typy partycji (z Linuksowego programu fdisk).

0   Pusta              40   Venix 80286            94   Amoeba BBT
1   DOS 12-bit FAT     51   Novell?                a5   BSD/386
2   XENIX root         52   Microport              b7   BSDI fs
3   XENIX usr	       63   GNU HURD               b8   BSDI swap
4   DOS 16-bitf <32M   64   Novell                 c7   Syrinx
5   Rozszerzona        75   PC/IX                  db   CP/M
6   DOS 16-bit >=32M   80   Old MINIX              e1   DOS access
7   OS/2 HPFS	       81   Linux/MINIX            e3   DOS R/O
8   AIX                82   Linux swap             f2   DOS, druga
9   AIX, startowalna   83   Naturalna dla Linuxa   ff   BBT
a   OS/2 Boot Manager  93   Amoeba

Dzielenie dysku twardego

Istnieje wiele programów służących do tego celu. Większość systemów operacyjnych zawiera własne, których powinno się używać - mogą one robić coś niezwykłego, czego nie potrafią zrobić inne. Wiele z tych programów nazywa się fdisk, włączają program Linuxa - odmianę tegoż programu. Szczegóły dotyczące programu znajdują się w jego podręczniku. Istnieje również cfdisk, który jest 'ładniejszą' wersją fdiska.

Używając dysków IDE musisz upewnić się, że partycja z obrazem jądra znajdzie się poniżej 1024 cylindra. Jest to wymagane ponieważ proces bootowania opiera się na działaniu BIOS-u, a ten nie potrafi obsłużyć więcej niż 1024 cylindrów. Możnaby stworzyć partycję zaczynającą się poniżej tej granicy, jednak nie jest to dobrym pomysłem - fragmentacja dysku, lub niefortunne umieszczenie pliku mogą spowodować, że nie będzie można uruchomić komputera. Dla świętego spokoju, upewnij się, że cała partycja znajduje się poniżej 1024 cylindra.

Niektóre nowsze BIOS-y i dyski IDE potrafią obsłużyć więcej niż 1024 cylindrów, jeżeli tak jest masz problem z głowy, jeżeli nie jesteś pewien załóż, że BIOS nie działa - oszczędzi Ci to kłopotów.

Każda partycja powinna mieć parzystą liczbę sektorów - Linux używa systemu plików z blokiem o rozmiarze 1 kB - 2 sektory. Nieparzysta liczba sektorów powoduje, że ostatni z nich nie jest używany, niektóre wersje fdiska powiedzą Ci o tym.

Zmiana rozmiaru partycji zazwyczaj wymaga utworzenia kopi zapasowej (najlepiej całego dysku), usunięcia partycji, utworzenia nowej i odtworzenia danych. Jeżeli powiększasz partycję powinieneś stworzyć kopie zapasowe usuwanych partycji (których miejsce użyjesz aby utworzyć większą partycję).

Ponieważ zmiana rozmiaru partycji nie jest miłą czynnością powinieneś stworzyć odpowiednie za pierwszym razem - zastanów się przed założeniem partycji, pomyśl o przyszłości. Jeżeli instalujesz system z medium niewymagającego obecności człowieka (powiedzmy z CD-ROM-u, a nie dyskietek :-) warto najpierw przetestować kilka rozwiązań. Taki system można bez problemu usunąć - nie ma tam żadnych danych użytkowników, itd.

Istnieje program dla MS-DOS, nazywający się fips, który zmienia rozmiar partycji MS-DOS bez potrzeby tworzenia kopii zapasowej i odtwarzania, w przypadku innych systemów plików musisz wykonać te kroki.

Pliki urządzeń i partycje

Każda z partycji posiada swój plik urządzenia. Plik taki ma część wskazującą na dysk (innymi słowy nazwa dysku), zakończoną numerem. Liczby 1-4 wskazują na partycje podstawowe (obojętnie od liczby partycji - możesz mieć partycje 2, 4, itp.), 5-8 oznaczają dyski logiczne ( niezależnie od partycji podstawowej, na której się znajdują). Dla przykładu: /dev/hda1 oznacza pierwszą podstawową partycję na dysku hda, /dev/sdb7 jest trzecią partycją rozszerzoną na drugim dysku SCSI. Lista urządzeń zawiera więcej szczegółów.