Scroll to navigation

FDISK(8) Podręcznik progrmisty linuksowego FDISK(8)

NAZWA

fdisk - Obsługa tablicy partycji dla Linuksa

SKŁADNIA

fdisk [-u] [-b rozmiar_sektora] urządzenie

fdisk -l [-u] [-b rozmiar_sektora] [urządzenie ...]

fdisk -s partycja ...

fdisk -v

OPIS

Dyski twarde mogą być podzielone na jeden lub więcej logicznych dysków zwanych partycjami. Podział ten jest zapisany w tablicy partycji znajdującej się w sektorze 0 dysku.

W świecie BSD mówi się o tzw. "plastrach dyskowych" (`disk slices') i "etykiecie dysku" (`disklabel').

Linux potrzebuje przynajmniej jednej partycji — mianowicie partycji przeznaczonej na główny system plików. Może używać plików i/lub partycji wymiany, ale te drugie są bardziej wydajne. Tak więc, zazwyczaj używana jest druga partycja linuksowa przeznaczona na partycję wymiany (tzw. swap). Na komputerach o architekturze zgodnej z Intelem, BIOS, używany do uruchamiania systemu, często ma dostęp tylko do pierwszych 1024 cylindrów dysku. Z tego powodu osoby mające duże dyski często tworzą trzecią partycję o rozmiarze kilku MB, zazwyczaj montowaną w katalogu /boot, która przechowuje obraz jądra i kilka dodatkowych plików potrzebnych w czasie uruchamiania systemu, żeby mieć pewność, że te rzeczy są dostępne dla BIOS-u. Mogą być różne przyczyny, związane z bezpieczeństwem, ułatwieniem administrowania i tworzenia kopii zapasowych lub testowaniem, żeby używać większej liczby partycji niż to minimum.

fdisk (w pierwszej wersji jego wywołania) to obsługiwany z pomocą menu program do działania na tablicy partycji dysku twardego. Rozumie partycje DOS-owe oraz etykiety dysków typu BSD lub SUN-a.

Urządzenie jest zwykle jednym z:

/dev/hda
/dev/hdb
/dev/sda
/dev/sdb

(/dev/hd[a-h] — to dyski IDE, /dev/sd[a-p] — dyski SCSI,
  /dev/ed[a-d] — dyski ESDI, /dev/xd[ab] — dyski XT). Nazwa
  urządzenia odnosi się do całego dysku.

Partycja to nazwa urządzenia, za którą następuje liczba. Na przykład, /dev/hda1 jest pierwszą partycją pierwszego dysku twardego IDE w systemie. Dyski IDE mogą zawierać do 63 partycji, a dyski SCSI — do 15. Zobacz także /usr/src/linux/Documentation/devices.txt.

Etykieta dysku typu BSD/SUN może opisywać 8 partycji, z których trzecia powinna być specjalną partycją oznaczającą cały dysk. Partycji, która używa swojego pierwszego sektora (jak na przykład partycja wymiany) nie należy umieszczać w cylindrze 0, ponieważ zniszczy to etykietę dysku.

Etykieta dysku typu IRIX/SGI może opisywać 16 partycji, z których jedenasta powinna być partycją całego "woluminu", natomiast dziewiąta powinna być tzw. "nagłówkiem woluminu". Nagłówek woluminu także pokrywa całą tablicę partycji, tzn. zaczyna się w bloku zerowym i domyślnie ciągnie się przez pięć cylindrów. Pozostałe miejsce w nagłówku woluminu może być użyte przez wpisy głównych katalogów. Żadna partycja nie może nachodzić na nagłówek woluminu. Także, nie należy zmieniać typu nagłówka woluminu, ani tworzyć na nim systemu plików, ponieważ spowoduje to utratę tablicy partycji. Proszę używać tego typu etykiety dysku tylko podczas pracy z Linuksem na komputerach IRIX/SGI lub podczas pracy z dyskami IRIX/SGI pod Linuksem.

Tablica partycji typu DOS może opisać nieograniczoną liczbę partycji. W sektorze 0 jest miejsce na opis 4 partycji (zwanych podstawowymi — `primary'). Jedna z nich może być partycją rozszerzoną; jest ona jakby pudełkiem zawierającym partycje logiczne, których deskryptory można znaleźć w wiązanej liście sektorów, z których każdy poprzedza odpowiadającą partycję logiczną. Cztery podstawowe partycje, niezależnie od tego czy są obecne, czy nie, otrzymują numery od 1 do 4. Numery partycji logicznych zaczynają się od 5.

W tablicy partycji typu DOS początkowe przesunięcie (`offset') i rozmiar każdej partycji przechowywany jest na dwa sposoby: jako bezwzględna liczba sektorów (zapisywana na 32 bitach) i jako trójka Cylindry/Głowice/Sektory (Cylinders/Heads/Sectors) (zapisywana na 10+8+6 bitach). Pierwszy zapis jest w porządku - przy 512-bajtowych sektorach będzie działał aż do 2 TB. W przypadku drugiego zapisu występują dwa małe problemy. Przede wszystkim pola C/H/S mogą być wypełnione tylko wtedy, gdy znana jest liczba głowic oraz liczba sektorów na ścieżce. Po drugie, nawet jeżeli te liczby są znane, to te 24 bity, które są dostępne, nie wystarczają. DOS używa tylko C/H/S, Windows — obu, a Linux nigdy nie używa C/H/S.

Jeśli jest to możliwe, fdisk automatycznie uzyska informacje o geometrii dysku. Niekoniecznie musi to być fizyczna geometria dysku (co więcej, nowoczesne dyski w rzeczywistości nie mają czegoś takiego jak fizyczna geometria, a w każdym razie nie mają niczego, co mogłoby być opisane w prostej postaci cylindry/głowice/sektory), lecz geometria, której używa MS-DOS dla tablicy partycji.

Zazwyczaj wszystko idzie dobrze i nie ma żadnych problemów, jeżeli Linux jest jedynym systemem na dysku. Jednakże, jeśli dysk będzie dzielony z innymi systemami operacyjnymi, to dobrym pomysłem jest utworzenie co najmniej jednej partycji fdiskiem pochodzącym z innego systemu operacyjnego. Linux, podczas uruchamiania, przegląda tablicę partycji i stara się wywnioskować, jaka (fałszywa) geometria dysku jest wymagana, żeby mógł dobrze współpracować z innymi systemami.

Gdy drukowana jest tablica partycji, dokonywane jest sprawdzenie konsystencji wpisów tablicy. Sprawdzane jest, czy fizyczne i logiczne punkty startowe i końcowe są takie same, oraz czy partycja rozpoczyna się i kończy w granicach cylindrów (poza pierwszą partycją).

Niektóre wersje MS-DOS tworzą pierwszą partycję, która nie rozpoczyna się na granicy cylindra, lecz na 2 sektorze pierwszego cylindra. Partycje rozpoczynające się na cylindrze 1 nie mogą rozpoczynać się na granicy cylindra, lecz raczej nie powinno to sprawiać problemów, chyba że używasz OS/2.

Funkcje sync() i ioctl() BLKRRPART są wywoływane (o ile zmieniono tablicę partycji) przed wyjściem, kiedy tablica partycji zostanie już zaktualizowana. Dawno temu było konieczne przeładowanie systemu (reboot) po użyciu fdiska. Teraz nie powinno być takiej potrzeby; co więcej, zbyt szybkie przeładowanie systemu może spowodować utratę jeszcze nie zapisanych danych. Proszę zauważyć, że zarówno jądro, jak i dysk mogą buforować dane.

OSTRZEŻENIE DOS 6.x

Komenda FORMAT z DOS 6.x szuka informacji w pierwszym sektorze obszaru danych partycji i traktuje je jako godniejsze zaufania niż informacje z tablicy partycji. Dosowy FORMAT oczekuje od dosowego FDISK-a, że ten wyczyści pierwsze 512 bajtów obszarów danych przy każdej zmianie rozmiarów. Dosowy FORMAT zajrzy do tych dodatkowych danych nawet z flagą /U -- uważamy to za błąd tych programów.

Tak więc używając cfdiska lub fdiska do zmiany rozmiaru partycji dosowej, należy też użyć dd do wyzerowania pierwszych 512 bajtów tej partycji przed użyciem dosowego FORMAT. Na przykład, po utworzeniu dosowej partycji programem cfdisk, powinno się wykonać polecenie "dd if=/dev/zero of=/dev/hda1 bs=512 count=1", które zeruje pierwszych 512 bajtów partycji.

BĄDŹ NIEWYOBRAŻALNIE OSTROŻNY przy używaniu komendy dd, gdyż mała pomyłka może spowodować zniszczenie wszystkich danych z dysku.

Dla najlepszych wyników, zawsze powinieneś używać fdiska specyficznego dla danego systemowi operacyjnemu. Na przykład, partycje dosowe powinieneś tworzyć dosowym FDISK-iem, a linuksowe — linuksowym fdiskiem lub cfdiskiem.

OPCJE

Określa rozmiar sektora dysku. Możliwe wartości są następująca: 512, 1024 lub 2048. (Ostatnie jądra znają rozmiar sektora. Proszę używać tej opcji tylko dla starych jąder lub w celu nadpisania wartości podanej przez jądro).
Drukuje tablice partycji dla podanych urządzeń i kończy działanie. Jeżeli nie podano żadnych urządzeń, to używane są urządzenia wymienione w pliku /proc/partitions (o ile taki istnieje).
Wypisuje na standardowym wyjściu rozmiar partycji (blokach).
Drukuje numer wersji fdiska i kończy działanie.

BŁĘDY

Istnieje kilka różnych programów *fdisk. Każdy z nich ma swoje problemy i zalety. Prosimy wypróbować ich w następującej kolejności: cfdisk, fdisk, sfdisk. (Istotnie, cfdisk jest pięknym programem, mającym surowe wymagania co do tablic partycji, które akceptuje, tworzącym tablice partycji wysokiej jakości. Należy go używać, jeżeli tylko jest taka możliwość. fdisk jest programem mającym wiele błędów, robiącym mętne rzeczy — zazwyczaj zdarza mu się dać sensowne wyniki. Jego pojedynczą zaletą jest obsługa etykiet dysków typu BSD i innych nie-DOS-owych tablic partycji. Należy go unikać, jeżeli tylko jest taka możliwość. sfdisk jest programem tylko dla hakerów — interfejs użytkownika jest okropny, ale program jest poprawniejszy od fdiska i potężniejszy od zarówno fdiska, jak i cfdiska. Co więcej, może być używany nieinterakcyjnie).

Etykiety dysku typu IRIX/SGI nie są jeszcze obsługiwane przez jądro. Co więcej, katalogi główkowe (header directories) IRIX/SGI nie są jeszcze w pełni obsługiwane.

Brak opcji "zapisz tablicę partycji do pliku".

ZOBACZ TAKŻE

cfdisk(8), parted(8), sfdisk(8).

11 czerwca 1998 Linux 2.0