Das Problem
Bereitstellung eines Windows-Freigabe-Bereitstellungspunkts mit dem Befehl umount nicht möglich. Diese Windows-Freigabe wird in letzter Zeit von keinem Prozess verwendet.
Beim Ausführen des umount-Befehls wird folgender Fehler angezeigt:
# umount: /mycloud: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
Die Lösung
Der Fehler „umount:device is busy“ bedeutet, dass der Einhängepunkt aus irgendeinem Grund vom Server aufgehalten wird. Ein lsof-Befehl wird ausgeführt, um einige offene Dateideskriptoren zu finden.
# lsof /mycloud/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 39176 oracle cwd DIR 0,25 0 54427649 /mycloud/primdb/rman rsync 39176 oracle 1r REG 0,25 6678585344 54428135 /mycloud/primdb/rman/.RMDBPRD_LVL0_20170910_s145161_p1.WxJoHy (deleted) rsync 39176 oracle 3u REG 0,25 5449449472 54428147 /mycloud/primdb/rman/.RMDBPRD_LVL0_20170910_s145161_p1.uqhidN
Diese PID konnte auch mit dem Kill-Befehl nicht getötet werden.
# kill -9 39176
# lsof /mycloud/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 39176 oracle cwd DIR 0,25 0 54427649 /mycloud/primdb/rman rsync 39176 oracle 1r REG 0,25 6678585344 54428135 /mycloud/primdb/rman/.RMDBPRD_LVL0_20170910_s145161_p1.WxJoHy (deleted) rsync 39176 oracle 3u REG 0,25 5449449472 54428147 /mycloud/primdb/rman/.RMDBPRD_LVL0_20170910_s145161_p1.uqhidN
Wenn diese Option aktiviert ist, befindet sich ein rsync-Prozess, der auf diesen Einhängepunkt schreibt, aufgrund einer vor einiger Zeit aufgetretenen E/A-Sperre immer noch im D-Zustand.
# 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/ /mycloud/primdb/rman/
Da sich dieser Prozess im unterbrechungsfreien Ruhezustand befindet, konnte dieser Prozess nicht beendet werden. Aus diesem Grund ist es nicht möglich, die Windows-Freigabe vom Server abzuhängen.
Der D-Zustand Prozesse konnten nicht mit dem Kill-Befehl beendet werden, da diese wie verwaiste Einträge in der Prozessliste ohne Eltern sind. Daher wird empfohlen, einen Serverneustart durchzuführen, um solche D-State-Prozesse zu beenden.
Wenn ein Neustart im Moment nicht möglich ist, wie bei Produktionsservern, warten Sie, bis das IO wieder verfügbar ist, damit der Prozess aufwacht und abgeschlossen wird. Es wird jedoch nicht empfohlen, länger als einen Monat zu warten, da die Serverlast allmählich ansteigen könnte, wenn es mehr solcher D-State-Prozesse auf dem Server gibt.