SDB:Partizionamento

(Reindirizzamento da SDB:Partitioning)
Provato su openSUSE Articoli consigliati Articoli correlati
Icon-checked.png

Icon-manual.png Icon-help.png

Schemi di partizionamento

Linux richiede almeno una partizione, assegnata a /, che è il file system principale. È però comune mettere delle directory particolari in partizioni separate, ad esempio /home: le varie partizioni create sono connesse alla partizione / montandole nei dei punti di montaggio che sono stati scelti. In Linux lo schema di partizionamento dipende dallo scopo dell'installazione: per un'installazione standard e generale si possono avere le partizioni /, /boot, /home e swap. Ci sono tuttavia molte configurazioni diverse per scopi diversi, quindi ecco un elenco di alcune directory che possono risiedere in una partizione separata:

/boot - la partizione montata in /boot contiene il kernel del sistema operativo, insieme ai file utilizzati durante il processo di avvio. Per la maggior parte degli utenti, 500 MB sono sufficienti questa partizione.

swap - di norma dovrebbe essere il doppio della dimensione della RAM installata nel sistema (vedere la sezione numero 3).

/home - è utile mettere le directory home degli utenti in una partizione separata: infatti, anche se la partizione root viene danneggiata o distrutta, i dati degli utenti hanno una buona possibilità di rimanere intatti. Il sistema può inoltre continuare a funzionare anche dopo che la directory / home di un utente si è riempita.

/usr - contiene la maggior parte delle librerie e dei dati del sistema. La creazione di una partizione /usr separata rende l'aggiornamento del sistema più semplice se c'è la necessità di reinstallarlo da capo.

/opt - se si installano prodotti di terze parti si potrebbe voler avere /opt in una partizione separata: essa conserverà le applicazioni di terze parti durante l'aggiornamento del sistema.

/srv - se il sistema viene usato come server, si dovrebbe creare una partizione /srv: essa contiene i server web e FTP.

/tmp - mettere /tmp in un file system separato fa sì che la dimensione dei file temporanei sia limitata, ed evita di dover creare una copia di sicurezza dei file.

/var - dal momento che i file di registro (log) sono tenuti in /var, può essere una buona idea che essa si trovi in una partizione separata. Se la partizione di root è piccola e c'è anche/ var, il computer si potrebbe bloccare a causa del riempimento della root.

Nota: la struttura del file system può variare nelle diverse distribuzioni. Potrebbe quindi esserci bisogno di consultare il sito web della distribuzione scelta per i dettagli sull'uso di una directory specifica. Qui, in openSUSE, la directory /srv serve per i contenuti web; altre distribuzioni, come Debian, Ubuntu e RHEL, utilizzano invece /var/www.

Tabella delle partizioni

MBR

L'MBR (Master Boot Record) si trova nel primo settore (512 bytes) del disco rigido. Consiste di 3 parti:
1 - il bootloader, che si trova nei primi 446 byte;
2 - la tabella delle partizioni, che si trova nei 64 byte successivi (4 voci di 16 byte ciascuna, una voce per ogni partizione primaria);
3 - gli ultimi 2 byte contengono la firma del record di avvio (55 AA).

L'MBR è limitato alle unità di 2TB. È possibile avere solo 4 partizioni primarie, oppure 3 partizioni primarie ed una partizione estesa; quest'ultima può essere suddivisa ulteriormente fino a 24 partizioni logiche, in base alle proprie esigenze. Viene utilizzato nei computer che dispongono di un BIOS (Basic Input/Output System).

Partizionamento sotto MBR

Lo strumento di partizionamento usato con l'MBR si chiama fdisk.

Nota: per poter eseguire questa procedura è necessario possedere i permessi di amministratore.

Innanzitutto è possibile elencare tutte le unità presenti nel sistema, se non se ne conosce il nome:

# fdisk -l

Se invece il nome dell'unità è conosciuto, si deve selezionarla con fdisk per poterne modificare le partizioni:

# fdisk /dev/sdX
Welcome to fdisk (util-linux 2.28).                                   
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help):
Note: Non c'è nessun dispositivo (sdX): esso viene utilizzato per convenzione. I dispositivi SATA sono elencati con /dev/sdX, per esempio /dev/sda, /dev/sdb, ecc, mentre le partizioni all'interno di un'unità sono elencate come sda1, sda2, oppure sdb1, sdb2 e così via. Le unità IDE sono invece elencate come /dev/hdX, per esempio /dev/hda, /dev/hdb ecc, mentre le partizioni all'interno di esse sono elencate come hda1, hda2, oppure hdb1, hdb2 e così via.

Una volta che si è nel prompt di fdisk, per prima cosa è raccomandabile vedere le partizioni attuali. Nell'esempio seguente viene mostrato un USB da 15 GiB che contiene due partizioni, /dev/sdb1 e /dev/sdb2:

Command (m for help): p
Disk /dev/sdb: 15 GiB, 16131293184 bytes, 31506432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc8e0e6ee

Device     Boot Start     End Sectors  Size Id Type
/dev/sdb1  *        0 1638399 1638400  800M  0 Empty
/dev/sdb2       13200   37775   24576   12M ef EFI (FAT-12/16/32)

Se si vuole eliminare una partizione, digitare d. Se si vuole invece aggiungere una nuova partizione senza toccare quelle esistenti, digitare n. Dopo aver premuto "n" si può scegliere il tipo di partizione desiderata: primaria (p) oppure estesa (e). Inserire quindi il numero della partizione (premere Invio per accettare il valore predefinito). Successivamente è possibile selezionare il primo settore della partizione (è sicuro accettare l'impostazione predefinita, poiché "fdisk" seleziona il settore successivo che viene dopo l'ultima partizione del disco). Quindi, per l'ultimo settore, accettare l'impostazione predefinita se si desidera che la partizione occupi tutto lo spazio rimanente sul disco, oppure specificare la quantità di spazio nei settori o in KB, MB, GB, ecc. Nell'esempio mostrato viene creata una partizione primaria, e le vengono assegnati 5 GB di spazio.

Command (m for help): n
Partition type
   p   primary (2 primary, 0 extended, 2 free)
   e   extended (container for logical partitions)
Select (default p): p

Using default response p.
Partition number (3,4, default 3): 
First sector (1638400-31506431, default 1638400): 
Last sector, +sectors or +size{K,M,G,T,P} (1638400-31506431, default 31506431): +5G

Created a new partition 3 of type 'Linux' and of size 5 GiB.

Adesso si può premere t se si volesse modificare il tipo di partizione, specificando poi il numero della partizione che si intende modificare; infine è necessario specificare il tipo di partizione. Nell'esempio, la partizione numero 3 viene modificata nella FAT32 di Windows.

Command (m for help): t
Partition number (1-3, default 3): 
Partition type (type L to list all types): L

Partition type (type L to list all types): b

Changed type of partition 'Linux' to 'W95 FAT32'.

In questo esempio lo spazio rimanente viene assegnato ad una partizione estesa: la procedura è simile a quella per la partizione primaria. Dopo la creazione si può continuare ad aggiungere altre partizioni logiche.

Command (m for help): n
Partition type
   p   primary (3 primary, 0 extended, 1 free)
   e   extended (container for logical partitions)
Select (default e): 

Using default response e.
Selected partition 4
First sector (12124160-31506431, default 12124160): 
Last sector, +sectors or +size{K,M,G,T,P} (12124160-31506431, default 31506431): 

Created a new partition 4 of type 'Extended' and of size 9.2 GiB.

Command (m for help): n
All primary partitions are in use.
Adding logical partition 5
First sector (12126208-31506431, default 12126208): 
Last sector, +sectors or +size{K,M,G,T,P} (12126208-31506431, default 31506431): +3.2G

Created a new partition 5 of type 'Linux' and of size 3.2 GiB.

Adesso la tabella delle partizioni dell'USB assomiglia a questa:

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sdb1  *           0  1638399  1638400  800M  0 Empty
/dev/sdb2          13200    37775    24576   12M ef EFI (FAT-12/16/32)
/dev/sdb3        1638400 12124159 10485760    5G  b W95 FAT32
/dev/sdb4       12124160 31506431 19382272  9.2G  5 Extended
/dev/sdb5       12126208 18827263  6701056  3.2G 83 Linux

Dopo aver completato la creazione delle partizioni bisogna scrivere con w la tabella delle partizioni sul disco.

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

Se viene visualizzato un messaggio del tipo: WARNING: Re-reading the partition table failed with error 16: Device or resource busy, la ragione più probabile è che una partizione dal disco sia ancora montata: è necessario smontarla (in questo caso /dev/sdb) e poi provare a eseguire il seguente comando per sincronizzare la tabella delle partizioni del disco con il kernel:

# umount /dev/sdb
# partprobe /dev/sdb
Icon-warning.png
Attenzione! Se si commette un errore durante il partizionamento del disco con "fdisk", digitare semplicemente (q) per uscire senza salvare le modifiche. Se ci si trova bloccati nel mezzo di un'operazione, come l'aggiunta di una partizione, completare l'operazione quindi digitare (q) quando viene visualizzato il prompt dei comandi (Command (m for help): q).

Ora che le partizioni sono state create e che la tabella delle partizioni è stata scritta sul disco, l'ultimo passo è scrivere un file system su queste partizioni. Per fare ciò viene usato il comando mkfs insieme al nome del file system (se non viene specificato un file system mkfs ne creerà uno ext2 per impostazione predefinita. In questo esempio le due partizioni (in questo caso /dev/sdb3 e /dev/sdb5) verranno formattate una come FAT32, e l'altra come ext4.

# mkfs -t vfat /dev/sdb3
# mkfs -t ext4 /dev/sdb5
Nota: Una partizione primaria è una partizione utilizzata per avviare un sistema operativo, mentre una partizione estesa è una partizione che contiene delle partizioni logiche; infine, una partizione logica è una qualsiasi partizione oltre alle 4 (MBR) o alle 128 (GPT) partizioni primarie che utilizzano lo spazio di una partizione estesa.

GPT (GUID)

La tabella delle partizioni GPT (GUID) viene memorizzata in più posizioni sul disco. Si chiama tabella delle partizioni GUID perché ogni partizione sull'unità ha un "identificatore unico globale", cioè GUID (Globally Unique Identifier). Le unità basate su GPT possono essere molto più grandi: i limiti nella dimensione dipendono dal sistema operativo e dai suoi file system. Si possono avere fino a 128 partizioni primarie, oltre a delle partizioni estese. Nel partizionamento GPT la copia di sicurezza della tabella delle partizioni viene archiviata alla fine del disco. Il GPT viene utilizzato nei computer che hanno UEFI (Unified Extensible Frimware Interface); in quelli dotati di BIOS, invece, il GPT si comporta come l'MBR (il BIOS vede GPT come un'unità con una singola partizione MBR).

Partizionamento in GPT

Lo strumento di partizionamento in MBR si chiama gdisk.

Nota: per eseguire questa procedura è necessario possedere i permessi di amministratore.

In questo esempio viene sempre utilizzato l'USB da 15 GB: attualmente esso contiene una tabella delle partizioni MBR ed ha una sola partizione. La procedura di partizionamento è simile a quella con fdisk. Per prima cosa è consigliabile iniziare elencando le unità, scrivendo gdisk -l, in modo da controllarne il nome.

Nota: se si prova ad elencare le unità in un sistema che ha una tabella MBR si potrebbe avere un errore.

GPT fdisk (gdisk) version 0.8.8

Problem opening -l for reading! Error is 2.
The specified file does not exist!

Per aggirare questo problema, per elencare le unità si può semplicemente usare fdisk.

Selezionare quindi l'unità con gdisk.

Nota: In questo caso l'USB ha una tabella delle partizioni MBR, perciò gdisk restituirà un avviso! Per prima cosa gdisk cerca la tabella delle partizioni. Di seguito, la scansione mostra che esiste una tabella MBR.
Icon-warning.png
Attenzione! Se si digita "w" (write, cioè scrivi) nel prompt dei comandi, esso convertirà semplicemente la tabella da MBR a GPT. Questa azione è distruttiva e causa perdita di dati. Quindi, per prima cosa si potrebbe voler creare una copia di sicurezza di tutti i dati importanti.
# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.8

Partition table scan:
  MBR: MBR only
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************


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/sdb.
The operation has completed successfully.

Ora si può selezionare nuovamente l'USB per creare delle partizioni; nell'esempio ne avrà una sola. Per visualizzare un elenco di opzioni premere ?, e n per creare una nuova partizione. È sicuro accettare il primo settore predefinito, mentre per l'ultimo si può specificare la quantità di spazio in KB, in MB oppure in GB (ad esempio +2G per 2 GB). Dopo di ciò premere L per elencare i tipi di file system e i loro codici; in questo caso selezionare 0700, che è un file system exFAT. Premere poi w per scrivere la tabella delle partizioni (digitare invece p se si volesse controllare prima la tabella delle partizioni).

# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.8

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-31506398, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-31506398, default = 31506398) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 0700                                                                                                                         
Changed type of partition to 'Microsoft basic data'                                                                                                                            

Command (? for help): p
Disk /dev/sdb: 31506432 sectors, 15.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 1D24896C-7AA3-4713-80E0-7DAEA507DD0F
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 31506398
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        31506398   15.0 GiB    0700  Microsoft basic data

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/sdb.
The operation has completed successfully.

Ora il partizionamento è completo e la tabella delle partizioni è stata scritta sul disco: l'ultimo passo è quello di scrivere il file system. Per questo processo si usa il comando mkfs, insieme al tipo di file system e al nome della partizione (in questo caso /dev/sdb1).

# mkfs.exfat /dev/sdb1
mkexfatfs 1.2.4
Creating... done.
Flushing... done.
File system created successfully.

Fin qui la tabella MBR sull'USB è stata convertita in GPT; dopo di ciò l'USB è stato partizionato con una singola partizione ed un file system exFAT su di essa. Ora bisogna vedere come riconvertire da GPT a MBR utilizzando gdisk: per farlo si deve selezionare l'unità con gdisk, poi digitare x per le funzionalità da esperto, quindi z per distruggere le strutture dei dati GPT. Quando viene chiesto di cancellare l'MBR premere Y per eliminare e crearne una nuova, oppure N per mantenerla. Nell'ultimo caso l'unità avrà una singola partizione EFI, poi si può lanciare fdisk e modificare il tipo di partizione con quello desiderato; in questo esempio solo la GPT viene distrutta.

# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.8

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): x

Expert command (? for help): z
About to wipe out GPT on /dev/sdb. Proceed? (Y/N): Y
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
Blank out MBR? (Y/N): N
MBR is unchanged. You may need to delete an EFI GPT (0xEE) partition
with fdisk or another tool.

Now you can change the partitions in the drive, with fdisk.

# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.28).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sdb: 15 GiB, 16131293184 bytes, 31506432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1           1 31506431 31506431  15G ee GPT

Command (m for help):

Il tipo di partizione swap

Uno spazio di scambio (o di swap) è una partizione (o un file) del disco rigido nella quale il computer può parcheggiare i dati dalla RAM qualora il sistema gli richieda più memoria di quella che è fisicamente disponibile. Questi dati vengono quindi ricaricati nella RAM tutte le volte che un programma li richiede. Di solito la quantità di spazio dello swap è doppia rispetto alla memoria fisica (la RAM). A volte si verificano però degli scambi eccessivi, detti anche thrashing: i dati vengono continuamente "palleggiati" tra la RAM e lo swap, perché il sistema cerca disperatamente di trovare della memoria libera per mantenere in esecuzione più applicazioni allo stesso tempo. In questo caso, però, l'unica cosa da fare è aggiungere della RAM. Sebbene sia meglio non eccedere mai le dimensioni della memoria fisica, in quanto le prestazioni subiscono un brusco calo durante questi scambi, essi sono però meglio degli errori che si genererebbero in mancanza di memoria.

Creare un file di swap

Per creare un'area di scambio (swap), bisogna per prima cosa creare un file vuoto delle dimensioni desiderate.

In questo esempio verrà creato, con il comando dd, un file di 1 GB chiamato file_di_swap' nel file system root.

Innanzitutto bisogna specificare il file di input if=/dev/zero (nei sistemi operativi di tipo Unix, /dev/zero è un file speciale: fornisce tanti caratteri null (ASCII NUL, 0x00) quanti ne vengono letti da esso. Viene usato per creare dei file di pagine di memoria riempite solamente di zeri), poi si deve specificare il file di output con of=/percorso/dove/si_vuole_salvare_il/file_di_swap. Qui bs=1M significa che saranno letti e scritti fino a 1M (Mega) byte per volta, mentre count=1024 ripeterà la scrittura per 1024 volte.

# dd if=/dev/zero of=/file_di_swap bs=1M count=1024

Dopo averlo creato bisognerà convertire il file in uno di swap, con il comando mkswap:

# mkswap /file_di_swap

ed impostare i permessi giusti

# chmod 600 /file_di_swap

Infine si deve usare il comando swapon per rendere disponibile il file di swap al computer:

# swapon /file_di_swap

Si deve modificare la configurazione di /etc/fstab per aggiungere una voce per il file di swap

# /file_di_swap none swap defaults 0 0

La disabilitazione del file di swap può essere fatta con il comando swapoff:

# swapoff /file_di_swap

Creare una partizione di swap

La partizione di swap viene generalmente creata durante l'installazione del sistema, tuttavia ciò può anche essere fatto in seguito. Si può seguire questa procedura per creare le partizioni (punto 2.1.1 e 2.2.1) a seconda del sistema, senza dimenticarsi di creare una partizione di tipo Linux Swap. Dopo la sua creazione può essere formattata con il comando mkswap, e quindi abilitata o disabilitata rispettivamente con swapon e swapoff.

# mkswap /dev/sdX
# swapon /dev/sdX
# swapoff /dev/sdX

Eliminare una partizione di swap

La rimozione di una partizione di swap esistente richiede che essa venga rimossa da 3 posti:

1) Disabilitare lo swap

# swapoff /dev/sdX

2) Rimuovere o commentare la voce in /etc/fstab: questo file contiene i volumi e i dischi che il sistema operativo monta all'avvio.

# vim etc/fstab

In questo esempio il file fstab contiene due file di swap, che sono identificati dal loro UUID: il primo, con l'identificatore che inizia per"3ae", è montato, mentre il secondo, il cui UUID inizia con "9058", è stato già disabilitato dal commento: quindi il sistema operativo ignora questo record. Infine, il terzo è la partizione montata come "root" e formattata con il file system butterFS.

UUID=3ae5826b-b3ef-4d7c-8ab2-8af2133c210c  swap                    swap   defaults                       0  0
#UUID=9058a8e5-6703-40e4-8e57-ef880051540d  swap                    swap   defaults                       0  0
UUID=f81c655a-894e-471f-b0a7-6f0cefb02510  /                       btrfs  defaults                       0  0

Se non si è pratici di vim, premere i per entrare nella modalità 'edit' (cioè di modifica), e Esc per tornare alla modalità comandi. Per salvare il file bisogna entrare in quest'ultima modalità (con Esc), e digitare ":wq" per "comandi" "write" (scrivi) e "quit" (esci).

3) Ricostruire il ramdisk iniziale.

# dracut -f

4) È possibile che GRUB stia ancora puntando alla partizione di swap per la sospensione del sistema. Se non si modificasse niente, systemd rimarrebbe in attesa durante la ricerca del file o della partizione. Questo allungherebbe il tempo di avvio, perciò bisogna rimuovere la parte restante aprendo il file con vim:

vim /etc/default/grub

Cercare la riga GRUB_CMDLINE_LINUX_DEFAULT: se c'è un argomento resume bisogna eliminarlo. Così:

GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sdX splash=silent quiet showopts"

viene modificato in:

GRUB_CMDLINE_LINUX_DEFAULT="splash=silent quiet showopts"

salvare con ":wq"

5) Adesso bisogna applicare le modifiche alla riga di comando di GRUB a GRUB inserendo le righe seguenti:

# grub2-mkconfig -o /boot/grub2/grub.cfg

6) Si può riavviare il sistema.


Vedere anche