Przejdź do głównej zawartości

Linux RHCSA cz.5 - Dyski i partycje - Tworzenie partycji - fdisk , parted , partprobe

Partycjonowanie dysków jest jednym z wielu kroków, jakie należy wykonać podczas przygotowywania systemu do pracy. W każdym systemie operacyjnym fizyczne dyski dzielone są na logiczne partycje, udostępniające miejsce do przechowywania danych. Istnieją także specjalne typy partycji takiej jak RAID o zwiększonej wydajności, redundancji lub obu na raz. LVM podobnie jak RAID jest bardziej zaawansowanym rodzajem partycji z możliwością łatwiejszego zarządzania tworząc większą przestrzeń do magazynowania danych. Jedynym punktem jaki należ dobrze zapamiętać to to by przed przystąpieniem do tworzenia i organizowania partycji mieć ustalony i przemyślany dobry plan działania. Należy zastanowić się, jakiego rozmiaru partycji będziemy potrzebować w przyszłości i jak będzie rozrastał się filesystem. W jaki sposób będą rozmieszczone dane. Planowanie sprawi, że administrowanie systemem będzie przyjemniejsze i oszczędzi bólu związanego z migrowaniem partycji.  

PARTYCJE PODSTAWOWE

Praca z dyskami jest ważną częścią zarządzania przestrzenią dla przechowywania danych w systemie. Partycje określają ilość miejsca dla systemu i jego użytkowników. Podczas instalacji systemu istnieją automatyczne kreatory partycji ale zawsze można dodać nowe jeżeli zajdzie taka potrzeba. Do dyspozycji mamy dwa różne narzędzia służące do partycjonowania dysków, są to : 

# fdisk       - Narzędzie partycjonowania dysków 
# parted     - Kolejne narzędzie partycjonowania dysków 

O ile "fdisk" jest bardziej powszechne i częściej używane to pomału jest tendencja by częściej stosować "parted" ponieważ jest bardziej elastyczne. Można również użyć polecenia "cat" na pliku "/proc " zawierającym informacje o systemie. Plik ten jest tworzony w momencie uruchomienia systemu i zawiera aktualne informacje dotyczące jego parametrów. 

# cat /proc/partitions | grep hd
8 0 20971520 hda
8 1 512000 hda1
8 2 20458496 hda2
8 16 8388608 hdb
8 32 8388608 hdc
8 48 8388608 hdd


Jeżeli zamiast dysków IDE stosujemy SCSI należy delikatnie zmodyfikować polecenie do postaci : 


# cat /proc/partitions | grep sd

W wyniku można zobaczyć różne dyski : hda, hdb, hdc i hdd. Pierwsze dwie litery określają z jakim dyskiem mamy do czynienia : SCSI (sd) lub IDE (hd). Kolejna litera (a,b,c,d...) oznacza który to dysk w kolejności, a cyfra na końcu informuje, która to partycja na danym dysku. Powyżej w przykładzie widać że mamy 4 dyski (a,b,c,d), w tym pierwszy (a) posiada 3 partycje (0,1,2). Zacznijmy od komendy "fdisk".

Składnia polecenia fdisk:  # fdisk [opcje] urządzenie

Opcje polecenia fdisk:
  • -b     Specyfikacja rozmiaru sektora na dysku 
  • -h     Specyfikacja numeru nagłówka na dysku 
  • -l      Aktualna tabela partycji 
Równie dobrze można zastosować drugie polecenie : # parted 

Składnia polecenia parted : # parted [opcje] urządzenie [opcje]

Opcje polecenia parted: 
  • -l     - Tabela partycji 
  • -s    - Nie używaj prompta w interakcjach (zastosowanie w skryptach) 
By zobaczyć wszystkie partycje stosując polecenie # parted : # parted -l 

TWORZENIE PARTYCJI


FDISK

Na początek użyjemy "fdisk" do utworzenia partycji.

Krok 1 - wybór dysku : # fdisk /dev/hdb

Krok 2  - Zobacz jakie są dostępne opcje: komenda "m" dla pomocy
  • a     - przełącznik flagi botowania 
  • b     - edycja bsd opisu dysku (disk label) 
  • c     - przełącznik flagi kompatybilności z DOS
  • d     - usunięcie partycji (delete)
  • l      - lista znanych typów partycji 
  • m    - wyświetlenie menu
  • n     - nowa partycja
  • o     - utworzenie nowej pustej partycji DOS
  • p     - wyświetlenie tabeli partycji 
  • q     - wyjście z zapisaniem zmian 
  • s     - utworzenie nowego pustego dysku typu SUN
  • t      - zmiana ID partycji 
  • u     - zmiana wyświetlania unitów
  • v     - weryfikacja tabeli partycji 
  • w    - zapis tabeli na dysku i wyjście 
  • x     - ekstra funkcjonalności (expres only) 
Jak widać mamy do wyboru sporo opcji do wykorzystania z narzędziem "fdisk".

Krok 3  - Stosując przełącznik "p" zobaczmy aktualną tabelę partycji 
Jeżeli zobaczymy dyski możemy wybrać nowy nie używany dysk (dodany w celu zwiększenia rozmiaru przestrzeni ) i rozpoczynamy podział na partycje.

Krok 4 - Utworzenie nowej partycji stosując opcję "n". 
Najłatwiej jest oczywiście operować rozmiarem przedstawionym w megabajtach. Tym sposobem pierwsza partycja zostanie utworzona w kilka sekund.

Krok 5 - Utworzenie drugiej partycji

Command (m for help): n
Command action
      e extended
      p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (549-1044, default 549):
Using default value 549
Last cylinder or +size or +sizeM or +sizeK (8322-16644, default16644):
Using default value 1044


Dla tej partycji nie ma potrzeby określać jej rozmiaru, domyślnie do jej utworzenia zostanie wykorzystana całą wolna przestrzeń. W momencie pytania o rozmiar nie wpisujemy niczego i potwierdzamy tylko ENTER'em. 

Krok 6 - Weryfikacja utworzonych partycji. 

Command (m for help): p
Disk /dev/hdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004b72d


Device    Boot Start End Blocks Id System
/dev/hdb1 1    548   4401778+   83 Linux
/dev/hdb2 549  1044  3984120    83 Linux


Widać już dwie utworzone partycje z informacją o zajętych przez nie blokach.

Krok 7 - Zapisanie zmian na dysku.

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.


Teraz utworzone dwie nowe partycje zostały utworzone i zapisane na dysku. Można już zweryfikować ich istnienie, jednak zanim to zrobisz jądro powinno utworzyć i odczytać nową tablicę partycji by mieć pewność, że wszystkie dyski i partycje są uznawane za poprawne. Do tego celu użyjemy polecenia: "partprobe". Czasami gdy tworzymy partycje system wyświetla komunikat, iż po utworzeniu partycji potrzebny jest restart systemu co nie zawsze jest wskazane w środowiskach produkcyjnych i tutaj również idealnie sprawdza się : partprobe

Składnia polecenia partprobe: # partprobe [opcje] [nazwa_urządzenia] 

Opcje polecenia partprobe: 
  • -d     - Dla nieaktualnych informacji w systemie operacyjnym 
  • -s     - Wyświetlenie podsumowania. 

Krok 8 - Wywołaj komendę partprobe na nowo utworzonym dysku.

# partprobe /dev/hdb w wyniku nie zobaczymy niczego na ekranie.

Dobrym pomysłem jest wywoływanie polecenia partprobe przed poleceniem fdisk -l. Partprobe wymusi ponowne odczytanie aktualnej tablicy partycji i da najnowsze informacje co zapobiegnie różnym niezgodnością czy dziwnym błędom. 

Krok 9 - Ponowna weryfikacja utworzonych partycji.  

# fdisk -l 

Disk /dev/hda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00021654


Device   Boot Start End  Blocks   Id System
/dev/hda1 *   1     64   512000   83 Linux
/dev/hda2     64    2611 20458496 8e Linux LVM


Disk /dev/hdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004b72d


Device    Boot Start End Blocks Id System
/dev/hdb1 1    548   4401778+   83 Linux
/dev/hdb2 549  1044  3984120    83 Linux


Disk /dev/hdc: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/hdc doesn’t contain a valid partition table

Disk /dev/hdd: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00079351


Disk /dev/hdd doesn’t contain a valid partition table





PARTED


Stworzyliśmy już partycję przy użyciu komendy "fdisk" teraz zróbmy to narzędziem "parted". Utworzymy takie same partycje na trzecim dysku.

Krok 1 - Wywołanie narzędzie "parted" dla kolejnego dysku.

# parted /dev/hdc lub jeżeli to dysk SCSI # parted /dev/sdc

Krok 2 - Przegląd możliwości oferowanych przez narządzie "parted"

# help

(parted) help
check NUMBER do a simple check on the file
cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to
another
help [COMMAND] prints general help, or help on
mklabel,mktable LABEL-TYPE create a new disklabel
(partition)
mkfs NUMBER FS-TYPE make a FS-TYPE file system on
mkpart PART-TYPE [FS-TYPE] START END make a partition
mkpartfs PART-TYPE FS-TYPE START END make a partition with a
file system
move NUMBER START END move partition NUMBER
name NUMBER NAME name partition NUMBER as NAME
print [free|NUMBER|all] display the partition table, or all
quit exit program
rescue START END rescue a lost partition near START
resize NUMBER START END resize partition NUMBER and its rm NUMBER delete partition NUMBER select DEVICE choose the device to
edit set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on
unit UNIT set the default unit to UNIT


UWAGA
Proces tworzenia etykiety dla dysku przy użyciu narzędzia parted powoduje usunięcie danych z dysku. Nie używamy narzędzia parted dla etykiet dysków jeżeli znajdują się na nich jakiekolwiek dane. 


Krok 3 - Utworzenie nowej partycji ( bardzo podobnie jak w przypadku fdisk) 

(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]? ext4
Start? 0
End? 4294m


W tym miejscu może pojawić się komunikat z błędem sugerującym, iż takie ustawienie nie jest najlepsze dla osiągnięcia najlepszej wydajności, ale w tej chwili możemy je zignorować. (tutaj ćwiczymy narzędzie parted, nie super konfiguracje dla korporacji ) 


Krok 4 - Utworzenie drugiej partycji

(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]? ext4
Start? 4294m
End? 8590m


Krok 5 - Przed zapisaniem zmian możemy zweryfikować czy wszystko się zgadza.

(parted) print
Model: VBOX HARDDISK (ide)
Disk /dev/hdc: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos


Number  Start  End    Size   Type     File system Flags
1       512B   4294MB 4294MB primary
2       4295MB 8590MB 4295MB primary


Krok 6 - Wyjście z narzędzia z zapisaniem zmian 


# (parted) quit 


Krok 7 - Zaktualizowanie tablicy partycji w jądrze systemu

# partprobe

Krok 8 - Weryfikacja czy wszystkie partycje utworzono prawidłowo

# parted -l 

Model: VBOX HARDDISK (ide)
Disk /dev/hda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 525MB 524MB primary ext4 boot
2 525MB 21.5GB 20.9GB primary lvm
Model: VBOX HARDDISK (ide)
Disk /dev/hdb: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos



Number Start End Size Type File system Flags
1 32.3kB 4507MB 4507MB primary
2 4507MB 8587MB 4080MB primary
Model: VBOX HARDDISK (ide)
Disk /dev/hdc: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 512B 4294MB 4294MB primary
2 4295MB 8590MB 4295MB primary
Error: Unable to open /dev/hdd - unrecognised disk label.




Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1044, default 1):
Użyj domyślnej wartości 1
Last cylinder or +size or +sizeM or +sizeK (1-1044, default1044): +4294M


Ponieważ podzielono dysk na połowę stosując jako jednostkę megabajty można użyć składnie :
  • +sizeM dla megabajtów 
  • +sizeK dla kilobajtów
  • +size dla cylindrów

Komentarze

  1. Witam
    Swietny blog. Cos takiego potrzebowalem.
    W przypadku parted, przed pkt mkpart, dodalbym jeszcze "mklabel msdos" w przypadku gdy mamy zupelnie "nowy" dysk.
    Pozdrawiam

    OdpowiedzUsuń
  2. Jestem pod wrażeniem. Bardzo ciekawie napisany artykuł.

    OdpowiedzUsuń

Prześlij komentarz

Najczęściej czytane w tym miesiącu

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)

Generowanie testowych plików o określonej wielkości