Le problème
Impossible de démonter un point de montage de partage Windows à l'aide de la commande umount. Ce partage Windows n'est utilisé par aucun processus récemment. Lors de l'exécution de la commande umount, l'erreur suivante s'affiche :
umount: /data01: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
La solution
L'erreur "démonter :l'appareil est occupé ' signifie que le point de montage est retenu par le serveur pour une raison quelconque. Une commande lsof est exécutée pour trouver des descripteurs de fichiers ouverts.
# lsof /data01/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 39176 oracle cwd DIR 0,25 0 54427649 /data01/primdb/rman rsync 39176 oracle 1r REG 0,25 6678585344 54428135 /data01/primdb/rman/.RMDBPRD_LVL0_20170910_s145161_p1.WxJoHy (deleted) rsync 39176 oracle 3u REG 0,25 5449449472 54428147 /data01/primdb/rman/.RMDBPRD_LVL0_20170910_s145161_p1.uqhidN
Ce PID n'a pas pu être tué même avec la commande kill.
# kill -9 39176 # lsof /data01/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 39176 oracle cwd DIR 0,25 0 54427649 /data01/primdb/rman rsync 39176 oracle 1r REG 0,25 6678585344 54428135 /data01/primdb/rman/.RMDBPRD_LVL0_20170910_s145161_p1.WxJoHy (deleted) rsync 39176 oracle 3u REG 0,25 5449449472 54428147 /data01/primdb/rman/.RMDBPRD_LVL0_20170910_s145161_p1.uqhidN
Un processus rsync qui écrit sur ce point de montage est toujours à l'état D en raison d'un bloc d'E/S qui s'est produit il y a quelque temps.
# ps aux |grep rsync root 30103 0.0 0.0 103304 804 pts/0 S+ 10:24 0:00 grep rsync oracle 39176 0.0 0.0 110956 96 ? D Sep10 17:48 rsync -av --delete /eva/primdb/rman/ /data01/primdb/rman/
Comme ce processus est dans un état de veille ininterruptible, ce processus n'a pas pu être tué. C'est la raison pour laquelle il n'est pas en mesure de démonter le partage Windows du serveur.
L'état D les processus n'ont pas pu être tués à l'aide de la commande kill car ils ressemblent à des entrées orphelines dans la liste des processus sans parent. Il est donc recommandé de redémarrer le serveur pour tuer de tels processus d'état D.
Si un redémarrage n'est pas possible pour le moment comme dans le cas des serveurs de production, attendez que l'IO redevienne disponible pour que le processus se réveille et se termine. Cependant, il n'est pas recommandé d'attendre plus d'un mois car la charge du serveur peut augmenter progressivement s'il y a plus de processus à l'état D sur le serveur.