SDB:Partizionamento
Provato su openSUSE | Articoli consigliati | Articoli correlati | |||
|
Indice
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.
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.
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):
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
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
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.
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.
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.
# 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.
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.