
Een umount die “doel is druk” antwoordt, komt vaak voor na een eenvoudige handeling: een service moet worden gestopt, een USB-schijf moet worden verwijderd of een back-upvolume moet worden ontkoppeld. De kernel weigert omdat een proces nog steeds dit bestandssysteem gebruikt.
fuser maakt het mogelijk om dit proces te identificeren voordat je iets beëindigt. Op een geldige mountpoint, geeft de opdracht de PID’s weer die het bestandssysteem gebruiken.
Bevestig de mountpoint voordat je fuser gebruikt
Werk vanuit een andere directory dan het volume dat je wilt ontkoppelen. Een shell in /mnt/archives is genoeg om deze mountpoint bezet te houden.
Begin met het vragen aan findmnt welk bestandssysteem daadwerkelijk het pad bezit. Deze stap voorkomt dat je fuser uitvoert op een eenvoudige map die zich op de root / bevindt.
cd /
findmnt -T /mnt/archives -o TARGET,SOURCE,FSTYPE,OPTIONS
De kolom TARGET moet de te ontkoppelen punt aanwijzen, bijvoorbeeld /mnt/archives. Als de uitvoer / retourneert, is het pad geen afzonderlijk volume. Ga niet verder met een opdracht bedoeld om een schijf te ontkoppelen.
Controleer ook de rol van het volume voordat je een operatie op een server uitvoert. Een actieve back-up, een database of een container kan hierop schrijven, zelfs als er geen terminal open is.
- Houd een SSH-sessie of console die niet afhankelijk is van het volume open.
- Noteer de verwachte service, de mountpoint en het interventietijdvak.
- Controleer met
findmntof de map overeenkomt met de verwachte mountpoint.
De gids findmnt onder Linux helpt bij het herlezen van de bron en het type van het bestandssysteem voordat je een schijfinterventie uitvoert.
Lees de processen die het volume open houden
Gebruik de exacte mountpoint met -m. De optie -M voegt een bescherming toe: fuser weigert de opdracht als het argument geen echte mountpoint is.
sudo fuser -vmM /mnt/archives
De uitvoer kan de gebruikersnaam, een PID, het toegangs type en de opdracht bevatten. Een proces dat wordt weergegeven met toegang tot de huidige map, duidt vaak op een terminal die in het volume is gebleven. Een serviceproces moet aan zijn systemd-eenheid of applicatie zijn gekoppeld voordat er actie wordt ondernomen.
Het resultaat geeft niet automatisch aan welk proces legitiem is. Een back-upagent kan actief zijn terwijl een vergeten script hetzelfde volume gebruikt. De besluitvorming hangt af van de verwachte service op dat moment.
Om een specifieke PID te onderzoeken, voeg ps toe en kijk naar zijn systemd-eenheid wanneer het proces afhankelijk is van een service:
ps -fp 2481
sudo systemctl status sauvegarde.service
Vervang 2481 en sauvegarde.service door de waargenomen waarden. Voor bestanden, sockets en poorten die aan een proces zijn gekoppeld, vult het artikel over lsof deze diagnose mooi aan.
Stop de juiste service voordat je umount
Als je een systemd-eenheid hebt geïdentificeerd, stop deze dan op de juiste manier. Deze methode geeft de service de tijd om zijn bestanden te sluiten en zijn laatste status te schrijven.
sudo systemctl stop sauvegarde.service
sudo fuser -vmM /mnt/archives
sudo umount /mnt/archives
De tweede opdracht fuser mag het proces van de gestopte service niet meer tonen. Als een andere PID aanwezig blijft, analyseer deze dan in plaats van umount in een lus opnieuw uit te voeren.
fuser -k bestaat, maar dit is geen automatische reactie op een druk volume. Deze optie stuurt een signaal naar de gevonden processen en kan een back-up, een zakelijke verwerking of een shell van een andere beheerder onderbreken. Ik zou kiezen voor de ordelijke applicatiestops zolang de eenheid of het script te identificeren is. Een machine die vastloopt tijdens een gecontroleerde stop is het geval waar een directere actie kan worden besproken, met een console en een incidentprocedure.
Controleer of het volume daadwerkelijk is verdwenen
Een stille umount geeft alleen aan dat de opdracht geen fout heeft geretourneerd. Herlees het pad met findmnt en controleer de laatste kernelberichten als het apparaat verwijderbaar is.
findmnt -T /mnt/archives
journalctl -k -n 20 --no-pager
Na een succesvolle ontkoppeling kan findmnt -T /mnt/archives nog steeds het rootbestandssysteem voor de lege map tonen, maar het mag de oude volume bron op deze mountpoint niet meer tonen. Voor een USB-schijf, wacht ook totdat de schrijfbewerkingen zijn voltooid voordat je deze loskoppelt.
Gedragsreferentie: fuser handleiding van psmisc.