Partycjonowanie dysków o pojemności powyżej 2TB.

Standardowa tablica partycji zapisana w MBR posiada limit na pojemność jednej partycji wynoszący ok. 2TB. Aby stworzyć większą jednolitą przestrzeń danych należy zmienić schemat partycjonowania dysku np. na GPT. Poniżej przedstawiam procedurę zakładania partycji GPT na „dysku” (sprzętowej macierzy dysków) o pojemności 7TB.

Zupełnie na marginesie dodam, że istnieją także inne sposoby stworzenia dużej, jednorodnej przestrzeni dyskowej.

Schemat tablicy partycji

Narzędziem przeznaczonym do partycjonowania dużych dysków w systemie Linux w trybie wiersza poleceń jest parted. Uruchamiamy go, podobnie jak fdisk, poleceniem:

hercules@system0:~$ sudo parted /dev/sdb 
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

Następnie ustawiamy schemat tablicy partycji na GPT:

(parted) mklabel gpt                                                      
Warning: The existing disk label on /dev/sdb will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? y                                                                 
(parted)

Jak widać powyżej, musimy potwierdzić, że na pewno chcemy wprowadzić zmiany. Polecenie print potwierdza wprowadzenie zmian oraz wyświetla aktualną tablicę partycji.

(parted) print                                                            
Model: Promise VTrak E310s (scsi)
Disk /dev/sdb: 7000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

(parted)

Jedna duża partycja

Czas więc założyć jedną dużą partycję o pojemności całego dostępnego dysku / macierzy. Tutaj najlepiej posłużyć się poleceniem:

(parted) mkpart primary ext4 0% 100%

Powyższe polecenie praktycznie samo siebie opisuje. Zakładam partycję nr 1 z planowanym systemem plików ext4 od początku do końca dysku. Zobaczmy wynik jego pracy. W tym celu najpierw przełączymy domyślną jednostkę z MB na sektor.

(parted) unit s                                                           
(parted) print                                                            
Model: Promise VTrak E310s (scsi)
Disk /dev/sdb: 13671872256s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End           Size          File system  Name     Flags
 1      2048s  13671870463s  13671868416s               primary

Jak widać partycja nr 1 zaczyna się na 2048 sektorze i kończy na sektorze 13671870463. Zastanawiające może być czemu partycja nie rozciąga się do samego końca dysku. Widać bowiem powyżej, iż pojemność /dev/sdb wynosi (w sektorach):

Disk /dev/sdb: 13671872256s

Nieoptymalny rozmiar partycji

Owszem, nic nie stoi na przeszkodzie, aby utworzyć partycję o maksymalnym dostępnym rozmiarze, ale wtedy spotkamy się z takim oto komunikatem ostrzegającym:

(parted) mkpart primary ext4 34s 13671872255s
Warning: You requested a partition from 34s to 13671872255s.              
The closest location we can manage is 34s to 13671872222s.
Is this still acceptable to you?
Yes/No? yes                                                               
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore                                                     
(parted) print                                                            
Model: Promise VTrak E310s (scsi)
Disk /dev/sdb: 13671872256s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End           Size          File system  Name     Flags
 1      34s    13671872222s  13671872189s               primary

Jak widać – można na siłę, ale po co? Usuńmy partycję i załóżmy ją jeszcze raz, bez ostrzeżeń.

(parted) rm 1                                                             
(parted) mkpart primary ext4 0% 100%                                      
(parted) print                                                            
Model: Promise VTrak E310s (scsi)
Disk /dev/sdb: 13671872256s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End           Size          File system  Name     Flags
 1      2048s  13671870463s  13671868416s               primary

Podsumowanie

Na koniec możemy jeszcze przejrzeć ilość wolnego miejsca w jednostce sektorów oraz megabajtów (MB).

(parted) print free                                                       
Model: Promise VTrak E310s (scsi)
Disk /dev/sdb: 13671872256s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start         End           Size          File system  Name     Flags
        34s           2047s         2014s         Free Space
 1      2048s         13671870463s  13671868416s               primary
        13671870464s  13671872222s  1759s         Free Space

(parted) unit MB                                                          
(parted) print free                                                       
Model: Promise VTrak E310s (scsi)
Disk /dev/sdb: 6999999MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start      End        Size       File system  Name     Flags
        0.02MB     1.05MB     1.03MB     Free Space
 1      1.05MB     6999998MB  6999997MB               primary
        6999998MB  6999999MB  0.90MB     Free Space

Ilość niewykorzystanego miejsca jest nieznacząco mała.

System plików ext4

Na koniec pozostaje już tylko wyjść z programu parted i założyć system plików, czyli innymi słowy sformatować dysk.

(parted) quit
hercules@system0:~$ sudo mkfs.ext4 -m 0 /dev/sdb1 
[sudo] password for hercules: 
mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
213626880 inodes, 1708983552 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
52155 block groups
32768 blocks per group, 32768 fragments per group
4096 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
    102400000, 214990848, 512000000, 550731776, 644972544

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Bibliografia