Nota: questo è un obiettivo d’esame RHCSA 7.
Presentazione
Un disco (disk) può essere utilizzato come entità semplice o suddiviso in una o più partizioni.
I dischi sono generalmente chiamati /dev/sda, /dev/sdb, ecc, nei server fisici (s per scsi anche se hanno interfacce IDE, SATA o SAS) e /dev/vda, /dev/vdb, ecc, in macchine virtuali.
Le partizioni prendono il loro nome dal nome del disco stesso e aggiungono un numero che inizia da 1 (/dev/sda1, /dev/sda2, etc o /dev/vda1, /dev/vda2, ecc.).
Una tabella delle partizioni è una struttura speciale che contiene l’organizzazione delle partizioni.
I dischi non recenti utilizzano settori da 512 byte e la tabella delle partizioni MBR (MBR sta per Master Boot Record). Questa organizzazione consente solo 4 partizioni primarie. Se si desidera altro, è necessario creare una partizione estesa (utilizzando uno dei 4 slot principali) e quindi creare all’interno partizioni logiche. Più fastidioso, su dischi con capacità superiore a 2 TB, lo spazio sopra questo limite non è disponibile.
Per ovviare a tutte queste limitazioni, i dischi recenti utilizzano i settori a 4096 byte e la tabella delle partizioni GPT (GPT sta per GUID – IDentificatore globalmente univoco – Tabella delle partizioni). Maggiori dettagli sono disponibili sulla pagina Wikipedia di GPT.
Storicamente, esistono due comandi per manipolare dischi e partizioni: fdisk e parted.
Poiché il comando fdisk non gestisce le tabelle delle partizioni GPT, non è consigliabile utilizzarlo più (per vostra informazione, alcuni dettagli sono forniti alla fine di questa pagina sul comando fdisk).
Recentemente, un nuovo strumento chiamato gdisk è stato creato per gestire le tabelle delle partizioni GPT, offrendo un’alternativa al comando parted.
Attenzione: in questo tutorial, abbiamo a che fare con dischi reali. Ogni errore potrebbe distruggere completamente il tuo sistema.
Il comando parted
Per avviare il comando parted, digitare:
# parted GNU Parted 2.1 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
Per elencare tutti i dischi e le partizioni, digitare:
(parted) print all Model: ATA Hitachi HDP72505 (scsi) Disk /dev/sda: 500GB 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 500GB 500GB primary lvm Model: ATA Hitachi HDP72505 (scsi) Disk /dev/sdb: 500GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags Model: Linux device-mapper (linear) (dm) Disk /dev/mapper/vg_root-lv_root: 497GB Sector size (logical/physical): 512B/512B Partition Table: loop Number Start End Size File system Flags 1 0.00B 497GB 497GB ext4 Model: Linux device-mapper (linear) (dm) Disk /dev/mapper/vg_root-lv_swap: 2147MB Sector size (logical/physical): 512B/512B Partition Table: loop Number Start End Size File system Flags 1 0.00B 2147MB 2147MB linux-swap(v1)
Qui, abbiamo un disco chiamato /dev/sdb senza partizione ma con una tabella delle partizioni MBR (Partition Table: msdos).
Per selezionare il disco /dev/sdb, digitare:
(parted) select /dev/sdb Using /dev/sdb
o creare una tabella delle partizioni GPT sul disco /dev/sdb, digitare:
(parted) mktable 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) print Model: ATA Hitachi HDP72505 (scsi) Disk /dev/sdb: 500GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags
Nota: digitare mktable msdos per creare una tabella delle partizioni MBR.
Per creare una partizione primaria con il tipo ext4 (qui a partire da 1 MB e terminando a 400 GB), digitare:
(parted) mkpart primary ext4 1MB 400GB
Nota 1: la specifica di ext4 non formatta la partizione in ext4, la contrassegna solo come partizione ext4.
Nota 2: la partizione non inizia a 0 ma 1 MB per evitare problemi di allineamento del disco.
Nota3: per specificare tutto lo spazio rimanente, utilizzare -1 come posizione finale.
Nota4: Con parted, 1 GB = 1000 MB.
A volte quando si imposta la prima partizione, viene visualizzato un avviso: “Warning: The resulting partition is not properly aligned for best performance.”
Per risolvere questo problema, digitare il seguente comando in cui 400 GB è la dimensione della partizione (è possibile utilizzare il 100% anziché 400 GB se si desidera allocare tutto il disco):
(parted) mkpart primary ext4 0% 400GB
Per verificare che la prima partizione sia allineata correttamente, digitare:
(parted) align-check optimal 1 1 aligned
Per creare una partizione di swap con una dimensione di 2 GB (qui a partire da 400 GB e terminando a 402 GB), digitare:
(parted) mkpart primary linux-swap 400GB 402GB
Nota 1: parted controlla che entrambe le partizioni non si sovrappongano.
Nota 2: se in un secondo momento si desidera modificare il tipo di partizione, non rilasciare e ricreare la partizione: formattare la partizione come si desidera e parted rileverà normalmente il nuovo tipo.
Per stampare il risultato, digitare:
(parted) print Model: ATA Hitachi HDP72505 (scsi) Disk /dev/sdb: 500GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 1049kB 400GB 400GB ext4 primary 2 400GB 402GB 2000MB primary
Per impostare la prima partizione come avviabile(bootable), digitare:
(parted) set 1 boot on (parted) print Model: ATA Hitachi HDP72505 (scsi) Disk /dev/sdb: 500GB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 1049kB 400GB 400GB ext4 primary boot 2 400GB 402GB 2000MB primary
Nota: digitare set 1 boot off per rimuovere il flag di avvio.
Per rimuovere la partizione di swap (qui numero di partizione 2), digitare:
(parted) rm 2
Per uscire dal prompt parted, digitare:
(parted) quit
Per aggiornare la configurazione del disco vista dal kernel, digitare:
# partprobe /dev/sdb
Il comando parted può anche essere utilizzato per la gestione del file system. Tuttavia, questo utilizzo è deprecato.
Il comando gdisk
Installa il pacchetto gdisk:
# yum install -y gdisk
Esegui il comando gdisk (qui con il /dev/vda disk come parametro):
# gdisk /dev/vda GPT fdisk (gdisk) version 0.8.6 Partition table scan: MBR: MBR only BSD: not present APM: not present GPT: not present
Digitare ? per visualizzare tutte le opzioni:
Command (? for help): ? b back up GPT data to a file c change a partition's name d delete a partition i show detailed information on a partition l list known partition types n add a new partition o create a new empty GUID partition table (GPT) p print the partition table q quit without saving changes r recovery and transformation options (experts only) s sort partitions t change a partition's type code v verify disk w write table to disk and exit x extra functionality (experts only) ? print this menu
Digitare p per stampare la tabella delle partizioni:
Command (? for help): p Disk /dev/vda: 12582912 sectors, 6.0 GiB Logical sector size: 512 bytes Disk identifier (GUID): C6F7C323-530D-40B5-A985-241A1B181354 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 12582878 Partitions will be aligned on 2048-sector boundaries Total free space is 1318845 sectors (644.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 1026047 500.0 MiB 8300 Linux filesystem 2 1026048 11266047 4.9 GiB 8E00 Linux LVM
Digitare n per creare una nuova partizione:
Command (? for help): n Partition number (3-128, default 3): 3 First sector (34-12582878, default = 11266048) or {+-}size{KMGTP}: 34 Last sector (34-2047, default = 2047) or {+-}size{KMGTP}: 2047 Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): 8300 Changed type of partition to 'Linux filesystem'
Digitare p per visualizzare la tabella delle partizioni:
Command (? for help): p Disk /dev/vda: 12582912 sectors, 6.0 GiB Logical sector size: 512 bytes Disk identifier (GUID): C6F7C323-530D-40B5-A985-241A1B181354 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 12582878 Partitions will be aligned on 2048-sector boundaries Total free space is 1316831 sectors (643.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 1026047 500.0 MiB 8300 Linux filesystem 2 1026048 11266047 4.9 GiB 8E00 Linux LVM 3 34 2047 1007.0 KiB 8300 Linux filesystem
Digita w per scrivere la tabella delle partizioni sul disco:
Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to /dev/vda. The operation has completed successfully.
Per forzare il kernel a leggere la tabella delle partizioni aggiornata, digitare:
# partprobe
Il comando fdisk
Per elencare tutte le partizioni, digitare:
# fdisk -l
Per creare una partizione primaria su un disco (qui /dev/vda), digitare:
# fdisk /dev/vda
Premere “c“, “u“, quindi “p” per stampare la tabella delle partizioni.
Quindi premere ‘n‘ (per nuovo), digitare il numero della partizione (tra 1 e 4), il primo settore e la dimensione.
Infine, premi “w“ per salvare la tabella delle partizioni.
Per eliminare una partizione primaria su un disco (qui /dev/vda), digitare:
# fdisk /dev/vda
Premere “c“, “u“, quindi “p” per stampare la tabella delle partizioni.
Quindi premere “d” (per eliminare) e digitare il numero della partizione (tra 1 e 4).
Infine, premi “w” per salvare la tabella delle partizioni.
Per impostare il tipo di una partizione primaria (qui /dev/vda3), digitare:
# fdisk /dev/vda
Premere “c“, “u“, quindi “p” per stampare la tabella delle partizioni.
Quindi premere ‘t‘ (per tag), digitare il numero di partizione (qui ‘3’) e il tipo di partizione (83 per linux, 8e per Linux LVM, 82 per lo scambio).
Infine, premi “w” per salvare la tabella delle partizioni.
Per forzare il kernel a leggere la tabella delle partizioni aggiornata, digitare:
# partprobe