###### tags: `appunti` `linux` Prima di cominciare: Aggiungere un disco esterno SATA alla VM di Virtualbox (VM deve essere spenta): https://www.grectech.it/blog/come-aggiungere-un-disco-virtuale-su-virtualbox/ # Linux - 22.01.2022 - Dischi, Partizioni e File System ## Definizioni Un computer ha al suo interno uno o più dischi per la conservazione dei dati. Questi dischi possono essere meccanici (HDD), lenti ma economici, o a stato solido (SSD), più veloci. Sul disco dovrà essere installato un sistema operativo, come ad esempio Linux, Windows o MacOS. Un disco fisico prima di essere utilizzato deve essere trattato in modo da essere leggibile dal computer stesso. Il primo passo è creare una **tabella delle partizioni**. :::success **Tabella delle partizioni**: tabella dentro la quale sono registrate tutte le informazioni delle **partizioni** del disco. **Partizione**: Porzione di un disco fisico dove vengono archiviati i file (può essere anche una sola). Ogni partizione ha uno specifico **file system**. **File system**: Metodo con cui vengono archiviati i file, per modificarlo è necessaria la formattazione della partizione. ::: ## Tabella delle partizioni **Tabella delle partizioni**: tabella dentro la quale sono registrate tutte le informazioni delle **partizioni** del disco. Informazioni delle partizioni: - numero partizione - blocco iniziale della partizione - blocco finale della partizione Lo standard di oggi è il **GPT**, piu moderno e performante. Supporta dischi di grandezza potenzialmente illimitata e fino a 128 partizioni. Un tipo di tabella vecchio, che era lo standard, è il **MSDOS** o **MBR**, che però aveva diverse limitazioni. MBR non supporta dischi più grandi di 2TB e può avere un massimo di 4 partizioni primarie. ## Partizioni **Partizione**: Porzione di un disco fisico dove vengono archiviati i file (può essere anche una sola). All'interno di un disco ci possono essere numerose partizioni, che possono essere di due tipologie differenti: - **Partizioni primarie**: sono partizioni vere e proprie all'interno del disco che vengono utilizzate per fare il boot del sistema operativo. - **Partizioni estese**: Partizione non bootabile, agisce come container logico per altre partizioni al suo interno. Fa superare la limitazione delle 4 partizioni dell'MBR, fino a un massimo di 16 partizioni. Esiste anche il LVM: Logic Volume Management, più complesso e poco usato. Esempio grafico di un disco con varie partizioni differenti: | P1 | P2 | P3 | P4 | | ---- | ---- | ---- | ---- | | 400GB EXT3 | 50GB FAT16 | 900GB NTFS | 150GB FAT32 | Ci sono alcune cartelle che hanno una partizione apposta, come per esempio /boot, che serve solo all'avvio del sistema per caricare il kernel. Dopodiche non viene più usata e per modificarla va prima montata, perchè è una partizione esterna, come un disco esterno fisico. E' la partizione dell'UEFI, dove vengono salvate le informazioni del boot (formattata in fat16 di almeno 100MB). Ci sono altre partizioni dedicate: - EFI, è la partizione UEFI (boot) - SWAP, partizione che serve per lo swapping. Lo swapping è il processo per cui una parte di memoria viene copiata nello spazio preposto per liberare la RAM da dati inutilizzati quando questa è piena o quasi piena. - SYSTEM, partizione del sistema. ## File system **File system**: Modalità specifica con cui sono archiviati i file, viene creata formattando il disco. Ogni sistema operativo supporta differenti file system Windows: NTFS (più usato ora, moderno) FAT32, FAT16, exFAT Linux: EXT4, EXT3, EXT2, BTRFS, XFS, FAT32, FAT16, exFAT ... MacOS: APFS, HFS, HFS+ ... Ogni sistema operativo usa il suo FS, ma non è una caratteristica determinante del sistema, è possibile cambiarlo. Ci sono alcuni file system che sono nativi per ogni OS e che sono i migliori da usare in quel OS. Esempio: EXT4, EXT3, EXT2, BTRFS sono nativi in Linux e sono letti solo da Linux Esempio: NTFS, FAT32 sono nativi in Windows e Windows 10 richiede che la sua partizione sia NTFS. Si possono usare anche file system diversi da quelli nativi, ma non sono sempre supportati pienamente. Esempio: Windows non supporta EXT4, Linux supporta NTFS. Perciò un disco Windows può essere letto da Linux Ogni partizione è indipendente, ognuna può avere un filesystem differente ed è molto utile in determinati contesti (es: dual boot) ## Gestione del Disco ### GParted Una delle GUI più famose su Linux per la gestione dei dischi è **GParted**. Appena aperta richiede la password, poi fa vedere la struttura del disco. In alto a destra si può selezionare il disco in base al suo percorso `/dev/sdb`. `/dev` è una pseudocartella che contiene i file che rappresentano i dispositivi collegati al sistema locale (ce ne sono moltissimi). `/sdb` acronimo che si riferisce alla tipologia di disco collegato. `/sdb`: SCSI (SATA) Disk B, disco SATA sia HDD che SSD Altre tipologie: - disco floppy: fp0 - disco IDE: hda - SSD NVMe: nvme0n1 - Virtual Disk: vda **b** si riferisce al numero del disco (secondo disco collegato) Ogni partizione ha il suo numero in modo da essere riconosciuta /dev/sdb2 (seconda partizione del secondo disco) Selezionato il disco vuoto si vede che è effettivamente vuoto (non allocato). Si deve creare una tabella di partizione (Dispositivo > Crea Tabella Partizione) (GPT) Poi si può creare una nuova partizione (foglio+ in alto a sx) Caratteristiche della partizione: - Dimensione - Inizio - Fine - Tipo di partizione - Tipo di filesystem (EXT4) - Etichetta Fino a questo momento GParted non ha ancora fatto nulla, bisogna confermare i cambiamenti fatti in modo che scriva effettivamente i cambiamenti sul disco (spunta verde verde in alto). Questo file consente di vedere tutte le operazioni che compie GParted per la creazione di una partizione: [Creazione File System](https://hackmd.io/ZOg57PYQQySCjhbR2bMMVw) Tutti i comandi che esegue GParted sono replicabili da terminale e sono tutti comandi fatti da terminale, con l'utility **parted**, che lavora sul disco e sulla partition table. L'ultimo comando è quello che effettivamente crea il file system EXT4 nella partizione creata nei passaggi precedenti. Il comando è **mkfs**, letteralmente make filesystem. Esiste un mkfs per ogni file system supportato. `mkfs.ext4 mkfs.ntfs ...` Questo file invece è relativo al ridimensionamento di una partizione: [Ridimensionamento di una Partizione](https://hackmd.io/7UqKvg_FTum030zJOiiaKg) Controllo del file system su /dev/sda1 Riduzione file system Riduzione partizione da 1022.00 MiB a 315.00 MiB Controllo del file system su /dev/sda1 Espansione partizione da 315.00 MiB a 616.00 MiB Spostamento del file system a destra Riduzione partizione da 616.00 MiB a 315.00 MiB Le operazioni fatte sono molto delicate, soprattutto se vengono fatte solo da terminale, come su un server; in questo caso la GUI aiuta molto. ### Parted Equivalente di GParted ma si utilizza da linea di comando. Permette di creare, modificare e rimuovere partizioni, ma non di creare e modificare il file system. Ha dei comandi intuitivi, ma non molto interattivo, fa un po' di testa sua. Utilizzo: `sudo parted [dispositivo]` Con help si possono vedere tutti i comandi. Più importanti: - `mklabel`: crea nuova tabella partizioni - `mkpart`: Crea una nuova partizione - `resizepart`: Ridimensiona la partizione - `print`: Visualizza la tabella delle partizioni, i device disponibili, lo spazio libero,tutte le partizioni trovate o una particolare partizione - `rm`: rimuova la partizione - `quit`: esce **VEDERE L'HELP DI PARTED E IL MAN PER ULTERIORI INFORMAZIONI** ### Fdisk Alternativa a Parted I comandi e le opzioni sono meno intuitive ma è più interattivo con l'utente, e spesso fa capire meglio che cosa si sta facendo e permette di agire di conseguenza. [MIGLIORE] Utilizzo: `fdisk [dispositivo]` Help: ``` Generic d delete a partition F list free unpartitioned space l list known partition types n add a new partition p print the partition table t change a partition type v verify the partition table i print information about a partition Misc m print this menu x extra functionality (experts only) Save & Exit w write table to disk and exit q quit without saving changes Create a new label g create a new empty GPT partition table o create a new empty DOS partition table ``` **VEDERE L'HELP DI FDISK E IL MAN PER ULTERIORI INFORMAZIONI** ### mkfs Serve a creare l'effettivo file system all'interno di una partizione, dopo averla creata con parted o fdisk. Ci sono tanti mkfs, uno per ogni file system: `mkfs.ext4 , mkfs.ext3 , mkfs.ext2 , mkfs.ntfs , mkfs.fat` Utilizzo: `sudo mkfs.ext4 [dispositivo]` ### Altri tool `fsck`: check del file system `resize2fs`: resize del filesystem --- Provare a creare nuove partizioni nel disco inserito nella macchina virtuale, sia in modo grafico che fa linea di comando