W systemie Linux (i nie tylko) dysk fizyczny może być podzielony na wiele dysków logicznych tzw. partycji. Informacje o partycjach składowane są na dysku w pewnym małym regionie czytanym przez system operacyjny w trakcie ładowania systemu (bootowania). W komputerach z BIOSem tym regionem jest Master Boot Record (MBR), w komputerach UEFI tym regionem jest GUID Partition Table (GPT). Chociaż MBR i GPT przeznaczone są do komputerów o innych architekturach mają jednakowe zadanie: przechowywanie informacji o partycjach i o bootowanie systemu.
W czasie ładowania systemu BIOS/UEFI:
- skanuje wszystkie dyski fizyczne komputera,
- sprawdza obecność MBR/GPT,
- identyfikuje dysk, z którego ma ładować system,
- wczytuje boot loader z dysku z ustawioną flagą boot,
- czyta tablicę partycji,
- wczytuje jądro systemu i przekazuje mu kontrolę.
MBR rezyduje na pierwszym sektorze dysku z ustawioną flagą boot. Pozwala na istnienie na jednym fizycznym dysku maksymalnie czterech partycji podstawowych (primary). Jedna z tych podstawowych partycji może być ustawiona jako tzw. partycja rozszerzona (extended), która może zawierać wiele partycji logicznych (logical). MBR może zaadresować tylko dyski o maksymalnej pojemności 2TB co wynika z pracy w architekturze 32 bitowej i 512 bajtowego rozmiaru sektora dysku. Rekord dysku zawierający MBR nie jest redundantny, uszkodzenie MBR powoduje brak możliwości załadowania systemu.
Wraz ze wzrostem pojemności dysków twardych powstał nowy 64 bitowy standard partycjonowania nazywany Globally Unique IDentifiers (GUID) Partition Table (GPT), który został zintegrowany z archiekturą UEFI. GPT zawiera wiele ulepszeń w porównaniu do MBR:
- 128 partycji
- korzystanie z dysków o pojemności większej niż 2TB
- sektor dysku o rozmiarze 4KB
- redundantne składowanie tablicy partycji
- komputery z BIOSem również mogą ładować system z dysków z GPT
Wyświetlanie partycji obecnych na dysku fizycznym:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
xvda 202:0 0 300G 0 disk
├─xvda1 202:1 0 299G 0 part /
└─xvda2 202:2 0 1023M 0 part
└─centos_centos-swap 253:0 0 1020M 0 lvm [SWAP]
# cat /proc/partitions
major minor #blocks name
202 0 314572800 xvda
202 1 313524224 xvda1
202 2 1047552 xvda2
11 0 1048575 sr0
253 0 1044480 dm-0
Programy do partycjonowania w systemie Linux:
MBR | GPT | |
Dialog | fdisk parted |
fdisk gdisk parted |
Pseudo graficzne | cfdisk | cfdisk cgdisk |
Nie interaktywne | sfdisk parted |
sfdisk sgdisk parted |
Graficzne | GParted partitionmanager |
GParted partitionmanager |
Jeżeli na dysku potrzebujemy tylko jedną przestrzeń dyskową to najlepiej nie zakładać żadnych partycji. Takie rozwiązanie często stosuje się w komputerach typu NAS (Network Attached Storage), gdzie system operacyjny zainstalowany jest na dysku USB a dyski HDD służą tylko do składowania danych.
Jeżeli partycjonujemy dyski z poziomu konsoli SSH to najłatwiej korzystać z takich narzędzi do partycjonowania jak cfdisk i cgdisk gdzie bez znajomości specjalnych poleceń programu (jak to jest w parted i gdisk) możemy w trybie pseudo-okienkowym utworzyć partycję na dysku.