NAZWA¶
fdisk - 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".
ZOBACZ TAKŻE¶
cfdisk(8),
sfdisk(8),
mkfs(8),
parted(8),
partprobe(8),
kpartx(8)
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) <pborys@p-soft.silesia.linux.org.pl>,
Robert Luberda (PTM) <robert@debian.org> i Michał Kułach
<michal.kulach@gmail.com>.
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.