diff --git a/101/025_mount.md b/101/025_mount.md new file mode 100644 index 0000000..6808b67 --- /dev/null +++ b/101/025_mount.md @@ -0,0 +1,107 @@ +## Montare e smontare un filesystem + +Il comando per montare manualmente un filesystem si chiama `mount`: + +```bash +mount -t TYPE DEVICE MOUNTPOINT +``` + +Il mountpoint non deve essere vuoto, ma deve esistere. Qualsiasi file sará inaccessibile fino a che il filesystem sará montato. + +Per smontare il filesystem: `umount MOUNTPOINT` o `umount DEVICE` + +### Elencari i filesystem + +Se si digita `mount` si ottiene un elenco dei filesystem montati nel sistema. Il parametro `-t` permette di filtrare l'output per tipo di filesystem. É possibile specificare piú filesystem contemporaneamente separandoli con una virgola. + +Alcuni parametri del comando `mount`: + +- `-a`: monta tutti i filesystem elencati in `/etc/fstab` +- `-o`: passa un elenco di *opzioni di montaggio* separate da virgole +- `-ro`: monta il filesystem in sola lettura +- `-rw`: monta il filesystem in modalitá scrivibile + +Alcuni parametri del comando `umount`: + +- `-a`: smonta tutti i filesystem elencati in `/etc/fstab` +- `-f`: forza lo smontaggio +- `-r`: rende il filesystem di sola lettura + +### File aperti + +Se, quando si smonta un filesystem, si incontra il messaggio di errore che indica che la destinazione é occupata (*target is busy*), si puo' usare il comando `lsof DEVICE`, per vedere un elenco di processi e a quali file accedono. + +### Montare un filesystem all'avvio + +Il file `/etc/fstab` contiene la lista dei filesystem che devono essere montati all'avvio del sistema. É costruito nel seguente modo: + +```bash +# +/dev/sda1 / btrfs defaults 0 0 +UUID=2858f3c1-995f-46ca-8164-76836b7860d2 /media/user/ btrfs defaults 0 2 +``` +dove: + +- `FILESYSTEM`: il filesystem da montare. Al posto del dispositivo, é possibile specificare lo UUID (*Universally Unique Identifier*) o l'etichetta della partizione + - `UUID=` + - `LABEL=` +- `OPTIONS`: le opzioni di montaggio, che saranno passate a mount +- `DUMP`: indica se un filesystem debba essere considerato per il backup dal comando dump. Solitamente é zero +- `PASS`: quando é diverso da zero, definisce l'ordine in cui i filesystem saranno controllati all'avvio + +Le *opzioni* sono un elenco di parametri, separati da virgole: + +- `atime` e `noatime`: per impostazione predefinita, ogni volta che un file viene letto, le informazioni sul tempo di accesso vengono aggiornate. Disabilitare questa opzione aumenta le performance +- `auto` e `noauto`: se il filesystem puo' o non puo' essere montato automaticamente con `mount -a` +- `defaults`: passa a mount le opzioni `rw,dev,suid,exec,auto,nouser,async` +- `exec` e `noexec`: consente o nega l'esecuzione di file binari sul filesystem +- `user` e `nouser`: consente o meno a un utente normale di montare il filesystem +- `ro` e `rw` +- `remount`: tenterá di rimontare un filesystem giá montato. Non viene usato in `/etc/fstab`, da come parametro del comando `mount -o`. +- `sync` e `async`: indica se eseguire le operazioni di I/O sul filesystem in modo sincrono o asincrono + +### Montare con Systemd + +Bisogna creare un file di configurazione `.mount`, denominato *mount unit*, in `/etc/systemd/system`. + +```bash +[Unit] +Description=Additional drive + +[Mount] +What=/dev/disk/by-uuid/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX +Where= +Type= +Options= + +[Install] +WantedBy=multi-user.target +``` + +Nello specifico: + +- `What`: cosa deve essere montato. Il volume deve essere specificato nella forma `/dev/disk/by-uuid/UUID` +- `WantedBy`: usato per la gestione delle dipendenze + +> Per funzionare correttamente, l'unitá di montaggio deve avere lo stesso nome del punto di mount. Se, per esempio, il punto di mount fosse `/mnt/external`, l'unitá si chiamerá `mnt-external.mount` e `mnt-external.automount` + +#### Auto-mount + +Le unitá di montaggio possono essere montate in automatico ogni volta che si accede al punto di mount. Basta creare, accanto al file `.mount`, un file `.automount`: + +```bash +Description=Automount Additional Drive + +[Automount] +Where= + +[Install] +WantedBy=multi-user.target +``` + +Ora ricaricare systemd e avviare l'unitá: + +```bash +systemctl daemon-reload +systemctl enable --now mnt-external.automount +``` \ No newline at end of file