Risolvere “FAILED Unmounting” allo spegnimento di Ubuntu/Debian

Potrebbe capitare di avere una folder montata, come ad esempio uno share NFS, che durante lo spegnimento del server Ubuntu/Debian potrebbe ritrovarsi occupata e dare problemi, facendoci attendere anche diversi minuti.

Infatti nella console, prima dello spegnimento, possiamo notare una scritta simile a:

[FAILED] Failed unmounting nome-share.mount – /mnt/nome-share

Per prima cosa dobbiamo individuare quali servizi utilizzano questa folder, e poi possiamo procedere con la creazione di un servizio di systemd che aspetti la chiusura dei servizi dipendenti e poi smonti in maniera forzata la nostra share.

Esempio

Poniamo il caso che la nostra folder si chiami –> /mnt/nfs-share e che sia utilizzata da diversi container docker.

Dobbiamo creare un servizio systemd che appena prima dello spegnimento della macchina, vada a terminare il servizio docker, e poi a fare l’umount di /mnt/nfs-share

Procedimento

Crea un file di servizio personalizzato in /etc/systemd/system con un nome significativo, ad esempio umount-nfs-share.service:

sudo vim /etc/systemd/system/umount-nfs-share.service

All’interno di questo file, inserisci le seguenti righe per definire il servizio:

[Unit]
Description=Umount /mnt/nfs-share before shutdown
Before=shutdown.target
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/bin/umount -f -l /mnt/nfs-share

[Install]
WantedBy=multi-user.target

Andiamo ovviamente a sostituire sia i servizi che utilizzano la nostra folder, che il nome della nostra folder.

Adesso possiamo avviare e abilitare il nostro service:

sudo systemctl enable umount-nfs-share.service
sudo systemctl start umount-nfs-share.service

Ora il servizio umount-nfs-share.service sarà attivo prima dello spegnimento del sistema e aspetterà lo spegnimento del servizio docker.service prima di eseguire l’azione di smontaggio della directory /mnt/nfs-share.