Ik heb enkele Samba-drives die dagelijks door meerdere gebruikers worden geopend. Ik heb al code om gedeelde schijven (van een SQL-tabel) te herkennen en ze in een speciale map te monteren waar alle gebruikers toegang hebben.
Ik wil weten, als ik een rit van mijn SQL-tabel (effectief het offline haalt) hoe, of is er een manier om een druk apparaat op te lossen? Tot nu toe heb ik gevonden dat elke vorm van umount
niet werkt.
De mogelijkheid negeren van het vernietigen van gegevens – is het mogelijk om een apparaat te ontkoppelen dat momenteel wordt gelezen?
1, Autoriteit 100%
ja !! Er is een manier om een druk apparaat onmiddellijk los te maken – zelfs als het druk is en niet krachtig kan worden gemaakt. U kunt uiterst later opruimen:
umount -l /PATH/OF/BUSY-DEVICE
umount -f /PATH/OF/BUSY-NFS (NETWORK-FILE-SYSTEM)
Note / Let op
- Deze opdrachten kunnen een hardloopproces verstoren, gegevensverlies of corrupte open bestanden veroorzaken. Programma’s die toegang krijgen tot doelapparaat / NFS-bestanden kunnen fouten gooien of niet goed na geweld kunnen werken.
- DO
Niet uitvoeren hierboven umount
Opdrachten bij binnengemonteerde pad (map / drive / apparaat) zelf. Ten eerste kunt upwd
-opdracht gebruiken om uw huidige directorypad te valideren (dat niet het gemonteerde pad mag zijn), gebruik vervolgenscd
opdracht om uit het gemonteerde pad te komen – naar Ontmoeit het later met behulp van bovenstaande opdrachten.
2, Autoriteit 27%
Laat ons indien mogelijk het bezetproces lokaliseren / identificeren, doden dat proces en vervolgens unmount
De Samba Share / Drive om schade te minimaliseren:
-
lsof | grep '<mountpoint of /dev/sda1>'
(of wat het gemonteerde apparaat ook is) -
pkill target_process
(vernietigt drukke proc. op naam |kill PID
|killall target_process
) -
umount /dev/sda1
(of wat het aangekoppelde apparaat ook is)
Antwoord 3, autoriteit 18%
Zorg ervoor dat u zich niet nog steeds in het gekoppelde apparaat bevindt wanneer u probeert te unmounten.
4, Autoriteit 8%
Probeer het volgende, maar voordat het runnen van het er rekening mee dat de -k
vlag zal alle actieve processen te doden houden van het apparaat druk.
-i
flag merken fuser
om bevestiging vragen.
fuser -kim /address # kill any processes accessing file
unmount /address
5
Controleer voor geëxporteerde NFS bestandssystemen met exportfs -v. Indien gevonden, te verwijderen met exportfs -d aandeel: / directory. Deze hoeven niet te zien in de fuser / lsof notering, en kan voorkomen dat umount van slagen.
6
Check out umount2
:
Linux 2.1.116 voegde de umount2 () system call, die net als umount (),
deactiveert een doel, maar maakt het extra vlaggen regelen van de
gedrag van de operatie:MNT_FORCE (sinds Linux 2.1.116) Force ontkoppelen zelfs als druk. (Alleen voor
. NFS mounts) MNT_DETACH (sinds Linux 2.4.11) Voer een luie ontkoppelen:
maken het koppelpunt niet beschikbaar voor nieuwe toegangen, en eigenlijk
Voer de ontkoppelen wanneer het koppelpunt niet langer bezig te zijn. MNT_EXPIRE
(sinds Linux 2.6.8) Markeer het koppelpunt als verlopen. Als een aankoppelpunt
momenteel niet in gebruik is, dan een eerste aanroep naar umount2() hiermee
vlag mislukt met de fout EAGAIN, maar markeert het koppelpunt als
verlopen. Het koppelpunt blijft verlopen zolang het niet wordt gebruikt
door welk proces dan ook. Een tweede umount2()-aanroep die MNT_EXPIRE specificeert om te ontkoppelen
een verlopen koppelpunt. Deze vlag kan met geen van beide worden opgegeven
MNT_FORCE of MNT_DETACH. RetourwaardeBij succes wordt nul geretourneerd. Bij een fout wordt -1 geretourneerd en errno is
correct instellen.
Antwoord 7
Voor het geval iemand dezelfde pb heeft. :
Ik kon het koppelpunt (hier /mnt
) van een chroot-jail niet ontkoppelen.
Hier zijn de commando’s die ik heb getypt om te onderzoeken:
$ umount /mnt
umount: /mnt: target is busy.
$ df -h | grep /mnt
/dev/mapper/VGTout-rootFS 4.8G 976M 3.6G 22% /mnt
$ fuser -vm /mnt/
USER PID ACCESS COMMAND
/mnt: root kernel mount /mnt
$ lsof +f -- /dev/mapper/VGTout-rootFS
$
Zoals je kunt zien, levert zelfs lsof
niets op.
Toen kwam ik op het idee om dit te typen:
$ df -ah | grep /mnt
/dev/mapper/VGTout-rootFS 4.8G 976M 3.6G 22% /mnt
dev 2.9G 0 2.9G 0% /mnt/dev
$ umount /mnt/dev
$ umount /mnt
$ df -ah | grep /mnt
$
Hier was het een /mnt/dev
binding met /dev
die ik had gemaakt om mijn systeem te kunnen repareren vanuit de chroot-jail.
Na het umounten, mijn pb. is nu opgelost.
Antwoord 8
Iemand heeft gezegd dat als je terminal gebruikt en je huidige map zich in het pad bevindt dat je wilt ontkoppelen, je de foutmelding krijgt.
Als aanvulling, in dit geval, uw lsof | grep path-to-be-unmounted
moet onderstaande output hebben:
bash ... path-to-be-unmounted
Antwoord 9
Ik had onlangs een soortgelijke behoefte om te ontkoppelen om het label te wijzigen met gparted.
/dev/sda1 werd gemount via /etc/fstab als /media/myusername. Toen pogingen om te ontkoppelen mislukten, heb ik de fout onderzocht. Ik was vergeten een dubbel gepartitioneerde USB-stick met een koppelpunt op /dev/hda1 eerst te ontkoppelen.
Ik heb ‘lsof’ geprobeerd zoals aanbevolen.
$ sudo lsof | grep /dev/sda1
De uitvoer daarvan was:
lsof: WAARSCHUWING: can’t stat() fuse.gvfsd-fuse bestandssysteem /run/user/1000/gvfs
Uitvoerinformatie is mogelijk onvolledig.
lsof: WAARSCHUWING: can’t stat() fuse file system /run/user/1000/doc
Uitvoerinformatie is mogelijk onvolledig.
Sinds lsof twee zekeringwaarschuwingen opwekte, snuffelde ik rond in /run/user/1000/*, en vermoedde dat het open bestanden of koppelpunten (of beide) zouden kunnen zijn die de zaken verstoren.
Sinds de aankoppelpunten in /media/ staan, heb ik het opnieuw geprobeerd met:
$ sudo lsof | grep /media
Dezelfde twee waarschuwingen, maar deze keer leverde het aanvullende informatie op:
bash 4350 mijngebruikersnaam cwd DIR 8,21 4096 1048577 /media
sudo 36302 root cwd DIR 8,21 4096 1048577 /media
grep 36303 mijngebruikersnaam cwd DIR 8,21 4096 1048577 /media
lsof 36304 root cwd DIR 8,21 4096 1048577 /media
lsof 36305 root cwd DIR 8,21 4096 1048577 /media
Ik krabde me nog steeds op mijn hoofd, het was op dit puntdat ik me herinnerde dat de USB-stick uit de USB-poort stak. Misschien heeft het krabben geholpen.
Dus ik ontkoppelde de schijfpartities (de ene ontkoppelde automatisch de andere) en ontkoppelde de schijf veilig. Nadat ik dit had gedaan, was ik in staat om /dev/sda1 te ontkoppelen (er was niets meer aangekoppeld), het opnieuw te labelen met gparted, zowel de schijf als de USB-stick opnieuw te koppelen zonder enig probleem.
Spek bewaard.
Antwoord 10
Een ander alternatief als iets werkt, is het bewerken van /etc/fstab
, het toevoegen van de vlag noauto
en het opnieuw opstarten van de machine. Het apparaat wordt niet gemount en als je klaar bent met wat dan ook, verwijder dan de vlag en start opnieuw op.
Antwoord 11
Niche-antwoord:
Als je een zfs-pool op dat apparaat hebt, tenminste als het een op bestanden gebaseerde pool is, zal lsof
het gebruik niet tonen. Maar je kunt gewoon rennen
sudo zpool export mypool
en dan ontkoppelen.
Antwoord 12
Meerdere koppelingen in een map
Een extra reden kan een secundaire koppeling in uw primaire koppelingsmapzijn, b.v. nadat je aan een SD-kaart voor een ingebouwd apparaat hebt gewerkt:
# mount /dev/sdb2 /mnt # root partition which contains /boot
# mount /dev/sdb1 /mnt/boot # boot partition
Ontkoppelen van /mnt zal mislukken:
# umount /mnt
umount: /mnt: target is busy.
Eerst moeten we de opstartmap ontkoppelen en dan de root:
# umount /mnt/boot
# umount /mnt