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 der folgende Fehler angezeigt:
umount: /data01: 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:Gerät ist beschäftigt ‘ 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 /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
Diese PID konnte auch mit dem Kill-Befehl nicht getötet werden.
# 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
Ein rsync-Prozess, der auf diesen Einhängepunkt schreibt, befindet sich immer noch im D-Zustand, da vor einiger Zeit ein IO-Block aufgetreten ist.
# 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/
Da sich dieser Prozess in einem 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 mehr solcher D-State-Prozesse auf dem Server vorhanden sind.