unito differenti repository
This commit is contained in:
292
lpic/101/023_tabella _partizioni.md
Normal file
292
lpic/101/023_tabella _partizioni.md
Normal file
@ -0,0 +1,292 @@
|
||||
## Introduzione
|
||||
|
||||
Su qualsiasi OS, un disco deve essere partizionato, prima di poter essere utilizzato. Una *partizione* e' un sottoinsieme logico di un disco fisico; le informazioni sulle partizioni sono archiviate in una *tabella delle partizioni*.
|
||||
|
||||
Su Linux, ogni partizione e' assegnata a una directory sotto `/dev`, come `/dev/sda1`.
|
||||
|
||||
## MBR e GPT
|
||||
|
||||
Esistono due modi principali per memorizzare le informazioni sulle partizioni:
|
||||
|
||||
- MBR (*Master Boot Record*)
|
||||
- GPT (*Guid Partition Table*)
|
||||
|
||||
### MBR
|
||||
|
||||
La tabella delle partizioni é memorizzata nel primo settore di un disco, chiamato *Boot Sector*, insieme a un bootloader, solitamente GRUB. Ha diverse limitazioni:
|
||||
|
||||
- incapacità di indirizzare dischi di dimensione superiore ai 2TB
|
||||
- un massimo di 4 partizioni primarie per disco
|
||||
- per rendere il disco avviabile, la prima partizione deve essere primaria
|
||||
|
||||
Un disco MBR puo' avere due tipi differenti di partizioni: *primaria* ed *estesa*. In Linux sono trattate ugualmente, per cui non ci sono vantaggi nell'uso dell'una piuttosto che dell'altra.
|
||||
|
||||
### GPT
|
||||
|
||||
Risolve molti dei limiti di MBR. Non esiste un limite alla dimensione del disco e il numero massimo di partizioni dipende dal OS.
|
||||
|
||||
#### fdisk
|
||||
|
||||
L'utilità standard per la gestione delle partizioni. Esiste anche `cfdisk`.
|
||||
|
||||
```bash
|
||||
fdisk -l /dev/sda
|
||||
|
||||
Disk /dev/sda: 465.76 GiB, 500107862016 bytes, 976773168 sectors
|
||||
Disk model: CT500BX500SSD1
|
||||
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: gpt
|
||||
Disk identifier: E224383F-FD8C-4067-8F01-09A7965B7EFA
|
||||
|
||||
Device Start End Sectors Size Type
|
||||
/dev/sda1 2048 976773119 976771072 465.8G Linux filesystem
|
||||
```
|
||||
|
||||
dove:
|
||||
|
||||
- `Device`: il dispositivo assegnato alla partizione
|
||||
- `Start`: il settore in cui inizia la partizione
|
||||
- `End`: il settore in cui termina la partizione
|
||||
- `Sectors`: il numero totale di settori della partizione
|
||||
- `Size`: la dimensione della partizione
|
||||
|
||||
#### gdisk
|
||||
|
||||
Utilità equivalente a *fdisk* e con comandi molto simili.
|
||||
|
||||
```bash
|
||||
sudo gdisk -l /dev/sda
|
||||
GPT fdisk (gdisk) version 1.0.10
|
||||
|
||||
Partition table scan:
|
||||
MBR: protective
|
||||
BSD: not present
|
||||
APM: not present
|
||||
GPT: present
|
||||
|
||||
Found valid GPT with protective MBR; using GPT.
|
||||
Disk /dev/sda: 937703088 sectors, 447.1 GiB
|
||||
Model: KINGSTON SA400S3
|
||||
Sector size (logical/physical): 512/512 bytes
|
||||
Disk identifier (GUID): 2393AA2C-252F-46A4-AAB9-35EE402D3D71
|
||||
Partition table holds up to 128 entries
|
||||
Main partition table begins at sector 2 and ends at sector 33
|
||||
First usable sector is 2048, last usable sector is 937703054
|
||||
Partitions will be aligned on 2048-sector boundaries
|
||||
Total free space is 1679 sectors (839.5 KiB)
|
||||
|
||||
Number Start (sector) End (sector) Size Code Name
|
||||
1 2048 937701375 447.1 GiB 8300
|
||||
```
|
||||
|
||||
- Ogni disco ha un identificatore (**GUI**) univoco: si tratta di un numero esadecimale a 128 bit, assegnato casualmente quando viene creata la tabella delle partizioni
|
||||
- Un disco GPT puo' avere fino a 128 partizioni
|
||||
- Le partizioni GPT possono essere facilmente riordinare o riorganizzate, utilizzando il comando `s`
|
||||
- Rispetto a fdisk, durante la creazione delle partizione, é possibile specificare il tipo di partizione (Linux, Windows, ecc.)
|
||||
- Fornisce utilità per aiutare nel ripristino, accessibili col comando `r`
|
||||
- Con GPT, la dimensione di una partizione non é limitata dalla quantità massima di spazio contiguo non allocato.
|
||||
|
||||
## Creare un file-system
|
||||
|
||||
Prima di utilizzare una partizione, occorre creare un file-system. *Controlla il modo in cui i dati vengono archiviati e acceduti*. Lo strumento standard utilizzato é `mkfs`.
|
||||
|
||||
### ext2/ext3/ext4
|
||||
|
||||
L'`extended file-system` (ext) é stato il primo file-system per Linux e nel corso degli anni é stato sostituito da nuove versioni, chiamate ext2, ext3 e ext4.
|
||||
|
||||
Le utilità `mkfs.ext2`, `mkfs.ext3` e `mkfs.ext4` sono utilizzate per creare file-system ext2, ext3 e ext4. Queste utilità sono collegamenti simbolici a `mke2fs`.
|
||||
|
||||
#### Sintassi
|
||||
|
||||
```bash
|
||||
mkfs.ext4 TARGET
|
||||
|
||||
mke2fs -t ext4 TARGET
|
||||
```
|
||||
|
||||
dove TARGET é il nome della partizione. Alcuni dei parametri principali:
|
||||
|
||||
- `-L` o Volume_Label: imposta un'etichetta
|
||||
- `-n`: simula la creazione del file-system
|
||||
- `-q`: modalità silenziosa
|
||||
- `-c`: controllo dei blocchi danneggiati prima di creare un file-system
|
||||
- `-d` (DIRECTORY): copia il contenuto della directory specificata nel nuovo file-system
|
||||
|
||||
### FAT o VFAT
|
||||
|
||||
Il file-system FAT ha avuto origine con MS-DOS e negli anni ha ricevuto diverse versioni, culminate in FAT32, rilasciato nel 1996. VFAT é a estensione di FAT16 con supporto a nomi di file lunghi (fino a 255 caratteri). Entrambi sono gestiti da `mkfs.fat`.
|
||||
|
||||
FAT16 supporta volumi di massimo 4GB e file con una dimensione massima di 2GB. FAT32 aumenta la dimensione massima dei file a 4GB e dei dischi a 2 PB.
|
||||
|
||||
```bash
|
||||
mkfs.fat TARGET
|
||||
```
|
||||
|
||||
### exFAT
|
||||
|
||||
É stato creato da Microsoft nel 2006, al fine di superare i limiti di FAT32: supporta file di dimensione massima di 16 exabyte e dischi di 128 petabyte. Ottima scelta per garantire l'interoperabilitá Linux-Windows. L'utilità predefinita é `mkfs.exfat`:
|
||||
|
||||
```bash
|
||||
mkfs.exfat TARGET
|
||||
```
|
||||
|
||||
### Btrfs
|
||||
|
||||
btrfs (*better FS*) é un file system specifico per Linux. Ha diverse caratteristiche interessanti, come: supporto ai volumi, quote, snapshot, backup incrementali, ecc. É un file-system *copy-on-write*: i dati vengono scritti nello spazio libero su disco e i metadati originali aggiornati per fare riferimento ai nuovi dati e solo allora i vecchi dati vengono eliminati. Questo riduce la possibilitá di perdita di dati in caso di arresto anomalo.
|
||||
|
||||
```bash
|
||||
mkfs.btrfs TARGET -L LABEL
|
||||
```
|
||||
|
||||
É possibile passare dispositivi multipli al comando. Per specificare come verranno distribuiti i metadati nell'array di dischi, utilizzare il parametro `-m`. I parametri validi sono: `raid0`, `raid1`, `raid5`, `raid6`, `raid10`, `single` e `dup`.
|
||||
|
||||
#### subvolume
|
||||
|
||||
Sono come filesystem dentro altri filesystem. Una specie di directory che puo' essere montata e trattata come un filesystem separato.
|
||||
|
||||
```bash
|
||||
btrfs subvolume create /mnt/disk/BKP
|
||||
|
||||
btrfs subvolume list /
|
||||
```
|
||||
|
||||
Per verificare che il volume sia attivo:
|
||||
|
||||
```bash
|
||||
btrfs subvolume show /mnt/disk/BKP
|
||||
```
|
||||
|
||||
Per *montare* il subvolume:
|
||||
|
||||
```bash
|
||||
mount -t btrfs -o subvol=BK /dev/sda1 /mnt/bk
|
||||
```
|
||||
|
||||
#### snapshot
|
||||
|
||||
Uno snapshot duplica l'albero del filesystem, mentre punta ai dati originali.
|
||||
|
||||
```bash
|
||||
btrfs subvolume snapshot /mnt/disk /mnt/disk/snap
|
||||
```
|
||||
|
||||
Per creare istantanee di sola lettura, basta aggiungere il parametro `-r`.
|
||||
|
||||
## GNU Parted
|
||||
|
||||
`GNU Parted` é un potente editor delle partizioni. Esistono dei front-end grafici, come *GParted*.
|
||||
|
||||
> WARNING: Parted apporta modifiche al disco immediatamente dopo che il comando é stato dato, senza attese, diversamente da fdisk e gdisk
|
||||
|
||||
```bash
|
||||
parted DEVICE
|
||||
|
||||
parted /dev/sda
|
||||
```
|
||||
|
||||
### Selezionare i dischi
|
||||
|
||||
Per passare da un disco diverso da quello selezionato, basta usare il comando `select`:
|
||||
|
||||
```bash
|
||||
parted /dev/sda
|
||||
Using /dev/sda
|
||||
(parted) select /dev/sdb
|
||||
Using /dev/sdb
|
||||
```
|
||||
|
||||
### Ottenere informazioni
|
||||
|
||||
Per ottenere informazioni sul disco, utilizzare il comando `print`:
|
||||
|
||||
```bash
|
||||
(parted) print
|
||||
Model: ATA CT500BX500SSD1 (scsi)
|
||||
Disk /dev/sdb: 500GB
|
||||
Sector size (logical/physical): 512B/512B
|
||||
Partition Table: gpt
|
||||
Disk Flags:
|
||||
|
||||
Number Start End Size File system Name Flags
|
||||
1 1049kB 500GB 500GB
|
||||
```
|
||||
|
||||
Per ottenere un elenco di tutti i dispositivi a blocchi, utilizzare `print devices`. Tramite il comando `print all` si ottengono informazioni su tutti i dispositivi a blocchi collegati. Tramite il comando `print free` é possibile visualizzare lo spazio libero a disposizione su un singolo device
|
||||
|
||||
### Creare una tabella delle partizioni
|
||||
|
||||
Per creare una tabella delle partizioni su un disco vuoto, usare il comando `mklabel`, seguito dal tipo di tabella che si desidera creare:
|
||||
|
||||
```bash
|
||||
(parted) mklabel msdos
|
||||
(parted) mklabel gpt
|
||||
```
|
||||
|
||||
### Creare una partizione
|
||||
|
||||
Per creare una partizione, si utilizza il comando `mkpart`:
|
||||
|
||||
```bash
|
||||
(parted) mkpart PARTTYPE FSTYPE START END
|
||||
```
|
||||
|
||||
dove:
|
||||
|
||||
- `PARTTYPE`: il tipo di partizione, che puo' essere *primary*, *logical* o *extended*
|
||||
- `FSTYPE`: il tipo di filesystem. Parted non crea il filesystem, ma imposta solo un flag sulla partizione che dice al OS che tipo di dati aspettarsi
|
||||
- `START`: specifica il punto esatto in cui inizia la partizione
|
||||
- `END`: specifica il punto in cui la partizione finisce (NON la dimensione)
|
||||
|
||||
```bash
|
||||
(parted) mkpart primary ext4 1m 100m
|
||||
```
|
||||
|
||||
### Eliminare una partizione
|
||||
|
||||
Utilizzare il comando `rm` seguito dal numero della partizione da eliminare, visualizzabile col comando `print`.
|
||||
|
||||
### Recuperare una partizione
|
||||
|
||||
Parted permette di recuperare una partizione cancellata. Utilizzare il comando `rescue`, con la sintassi: `rescue START END`, dove START indica la posizione approssimativa in cui la partizione iniziava e END quella in cui finiva. Parted eseguirà una scansione del disco alla ricerca di partizione e si offrirà di ripristinare quelle trovate. Puo' recuperare solo le partizioni in cui é presente un filesystem; quelle vuote non vengono rilevate.
|
||||
|
||||
### Ridimensionare una partizione ext2/3/4
|
||||
|
||||
Puo' essere anche usato per ridimensionare le partizioni, al fine di renderle piú grandi i piú piccole, con alcune accortezze:
|
||||
|
||||
- durante il ridimensionamento, la partizione deve essere inutilizzata e smontata
|
||||
|
||||
Il comando é `resizepart`, seguito da numero di partizione e di dove dovrebbe finire: `resizepart 2 300g`.
|
||||
|
||||
Una volta ridimensionata la partizione, bisogna ridimensionare il filesystem. Per i filesystem ext2/3/4, questo viene fatto da `resize2fs PARTITION SIZE`. Se si omette il parametro SIZE, verrá utilizzato tutto lo spazio disponibile: `resize2fs /dev/sdb3`.
|
||||
|
||||
Per *restringere* una partizione, il processo deve essere inverso:
|
||||
|
||||
- prima si restringe il filesystem, tramite `resize2fs`
|
||||
- poi si ridimensiona la partizione stessa utilizzando `parted`
|
||||
|
||||
```bash
|
||||
resize2fs /dev/sdb3 200g
|
||||
|
||||
parted /dev/sdb3
|
||||
(parted) resizepart 3 200g
|
||||
```
|
||||
|
||||
## swap
|
||||
|
||||
Su Linux, il SO puo' scambiare pagine di memoria dalla RAM al disco, secondo necessitá, memorizzandole in uno spazio separato, implementato come partizione separata (o file), chiamato *partizione di swap*.
|
||||
|
||||
Tramite fdisk, basta creare una partizione normale e poi cambiare il tipo di partizione in Linux Swap, tramite il comando `t`, con codice 82. Per gdisk, cambia solamente il codice, 8200.
|
||||
|
||||
Una volta che la partizione é stata correttamente creata, usare il comando `mkswap PARTITION`. Infine, per abilitare la partizione: `swapon PARTITION`. Allo stesso modo, `swapoff PARTITION` disabiliterá la swap per quel dispositivo.
|
||||
|
||||
Linux supporta anche l'uso di *file di swap*: basta creare un file vuoto, tramite *dd* e quindi utilizzare `mkswap` e `swapon`
|
||||
|
||||
```bash
|
||||
dd if=/dev/zero of+myswap bs=1M count=1024
|
||||
mkswap myswap
|
||||
swapon myswap
|
||||
```
|
||||
Per rendere il file di swap persistente, **aggiungerlo** a `/etc/fstab`. I permessi consigliati per il file di swap sono 0600 e il gruppo e il proprietario dovrebbero essere root.
|
||||
|
Reference in New Issue
Block a user