fdisk(8) obsługa dyskowej tablicy partycji

SKŁADNIA

fdisk [-uc] [-b rozmiar-sektora] [-C cylindry] [-H głowice] [-S sektory] urządzenie

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

fdisk -s partycja...

fdisk -v

fdisk -h

OPIS

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

fdisk nie potrafi obsłużyć tablic partycji GUID (GPT) i nie jest przeznaczony do obsługi dużych partycji. W tych przypadkach, proszę użyć bardziej zaawansowanego GNU parted(8).

fdisk nie używa trybu kompatybilnego z DOS-em i wyświetlania cylindrów jako jednostek domyślnych. To przestarzałe zachowanie DOS-a można włączyć opcją wiersza poleceń "-c=dos -u=cylinders".

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 slice" i etykietach 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.

URZĄDZENIA

Urządzenie jest to z reguły /dev/sda, /dev/sdb itp. Nazwy urządzeń odnoszą się do całego dysku. Stare systemy bez libata (biblioteki używanej wewnątrz jądra Linux do obsługi kontrolerów i urządzeń ATA) rozróżniają dyski IDE i SCSI. W takich przypadkach nazwami urządzeń będą /dev/hd* (IDE) lub /dev/sd* (SCSI).

Partycja to nazwa urządzenia, za którą następuje numer partycji. Na przykład, /dev/sda1 jest pierwszą partycją pierwszego dysku twardego w systemie. Proszę również zapoznać się z dokumentacją jądra Linux (plik Documentation/devices.txt).

ETYKIETY DYSKU

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 wypisywana 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żywany jest 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 /dev/sda1programem cfdisk (po wyjściu z fdiska lub cfdiska i przeładowaniu Linuksa, dzięki czemu informacje o tablicy partycji będą poprawne), 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 powinno się używać fdiska specyficznego dla danego systemowi operacyjnemu. Na przykład, partycje dosowe powinno się tworzyć dosowym FDISK-iem, a linuksowe --- linuksowym fdiskiem lub cfdiskiem.

OPCJE

-b rozmiar-sektora
Określa rozmiar sektora dysku. Możliwe wartości są następująca: 512, 1024, 2048 lub 4096. (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). Od util-linux-2.17 fdisk rozróżnia logiczny i fizyczny rozmiar sektora. Ta opcja zmienia obie wartości rozmiarów sektora na rozmiar-sektora.
-c[=tryb]
Określa tryb kompatybilności, "dos" lub "nondos". Domyślnym trybem jest niedosowy. Aby zachować kompatybilność wsteczną, możliwe jest użycie tej opcji bez argumentu <tryb> - używana jest wówczas wartość domyślna. Proszę zauważyć, że opcjonalny argument <tryb> nie może być oddzielony od opcji -c spacją, poprawną formą jest np. "-c=dos".
-C cylindry
Określa liczbę cylindrów dysku. Prawdopodobnie nie ma osoby, która miałaby powód aby używać tej opcji.
-H głowice
Określa liczbę głowic dysku (oczywiście nie ich fizyczną liczbę, lecz liczbę używaną do tablic partycji). Rozsądnymi wartościami są 255 i 16.
-S sektory
Określa liczbę sektorów dysku na ścieżkę (oczywiście nie ich fizyczną liczbę, lecz liczbę używaną do tablic partycji). Rozsądną wartością jest 63.
-h
Wyświetla pomoc i kończy pracę.
-l
Wypisuje 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).
-s partycja...
Wypisuje rozmiar każdej podanej partycji (w blokach).
-u[=jednostka]
Podczas wypisywania tablic partycji pokazuje rozmiary w "sectors" (sektorach) lub w "cylinders" (cylindrach). Domyślnie używane są sektory. Ze względu na kompatybilność wsteczną, możliwe jest użycie tej opcji bez argumentu <jednostki> - używana jest wówczas wartość domyślna. Proszę zauważyć, że opcjonalny argument <jednostki> nie może być oddzielony od opcji -u spacją, poprawną formą jest np. "-u=cylinders".
-v
Wypisuje 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 nieinteraktywnie).

Obecnie istnieje także program parted. Interfejs użytkownika cfdisk jest lepszy, ale parted potrafi o wiele więcej: nie tylko zmieniać wielkość partycji, ale również systemów plików, które się na nich znajdują.

Etykiety dysku typu IRIX/SGI nie są obecnie 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".

DOSTĘPNOŚĆ

Polecenie fdisk jest częścią pakietu util-linux i jest dostępne pod adresem ftp://ftp.kernel.org/pub/linux/utils/util-linux/.

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Przemek Borys (PTM) <[email protected]>, Robert Luberda (PTM) <[email protected]> i Michał Kułach <[email protected]>.

Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 2.20.1 oryginału.