Certains lecteurs de samba sont utilisés quotidiennement par plusieurs utilisateurs. J'ai déjà du code pour reconnaître les lecteurs partagés (à partir d'une table SQL) et les monter dans un répertoire spécial où tous les utilisateurs peuvent y accéder.
Je veux savoir, si je supprime un lecteur de ma table SQL (le mettant effectivement hors ligne), comment ou même existe-t-il un moyen de supprimer un périphérique occupé? Jusqu'ici, j'ai constaté que toute forme d'umount ne fonctionnait pas.
Ignorer la possibilité de détruire des données - est-il possible de démonter un périphérique en cours de lecture?
OUI!! Il existe un moyen de détacher immédiatement un périphérique occupé (même s'il est occupé et ne peut pas être démonté de force). Vous pouvez nettoyer tout plus tard:
umount -l /PATH/OF/BUSY-DEVICE
umount -f /PATH/OF/BUSY-NFS(NETWORK-FILE-SYSTEM)
REMARQUE:
Si possible, localisons/identifions le processus occupé, supprimons le processus puis démontons le partage Samba pour minimiser les dommages.
lsof | grep '<mountpoint of /dev/sda1>'
(ou quel que soit le périphérique monté)
pkill target_process
(tue le proc occupé par son nom | kill PID
| killall target_process
)
umount /dev/sda1
(ou quel que soit le périphérique monté)
Assurez-vous de ne pas rester dans le périphérique monté lorsque vous essayez de démonter.
Essayez ce qui suit, mais avant de l’exécuter notez que l’indicateur -k
va tuer tous les processus en cours en maintenant le périphérique occupé.
Le drapeau -i
permet à fuser
de demander avant de tuer.
fuser -kim /address # kill any processes accessing file
unmount /address
Recherchez les systèmes de fichiers NFS exportés avec exportfs -v. Si trouvé, supprimez-le avec le partage exportfs -d:/directory. Celles-ci ne figurent pas dans la liste fuser/lsof et peuvent empêcher umount de réussir.
Départ umount2
:
Linux 2.1.116 a ajouté l'appel système umount2 (), qui, comme umount (), démonte une cible, mais autorise des indicateurs supplémentaires contrôlant le fichier comportement de l'opération:
MNT_FORCE (depuis Linux 2.1.116) Forcer le démontage même s'il est occupé. (Seulement pour les montages NFS.) MNT_DETACH (depuis Linux 2.4.11) Effectuez un démontage paresseux: rendre le point de montage indisponible pour les nouveaux accès, et en réalité effectuez le démontage lorsque le point de montage cesse d'être occupé. MNT_EXPIRE (depuis Linux 2.6.8) Marquez le point de montage comme expiré. Si un point de montage n'est pas actuellement utilisé, puis un appel initial à umount2 () avec cela flag échoue avec l'erreur EAGAIN, mais marque le point de montage en tant que expiré. Le point de montage reste expiré tant qu'il n'est pas utilisé par n'importe quel processus. Un deuxième appel umount2 () spécifiant que MNT_EXPIRE doit être démonté un point de montage expiré. Cet indicateur ne peut pas être spécifié avec MNT_FORCE ou MNT_DETACH. Valeur de retour
En cas de succès, zéro est renvoyé. En cas d'erreur, -1 est renvoyé et errno contient le code d'erreur définir correctement.
Une autre alternative lorsque quelque chose fonctionne est l'édition de /etc/fstab
, l'ajout de l'indicateur noauto
et le redémarrage de l'ordinateur. Le périphérique ne sera pas monté et lorsque vous aurez terminé, enlevez l'indicateur et redémarrez à nouveau.