问题
无法使用 umount 命令卸载 Windows 共享装载点。
最近没有任何进程使用此 Windows 共享。
执行umount命令时,看到如下错误;
umount: /data01: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
更多: zhilu jiaocheng
解决方案
错误 'umount: device is busy ' 表示挂载点由于某种原因被服务器挂起。
执行 lsof 命令以查找一些打开的文件描述符。
# 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
即使使用 kill 命令也无法终止此 PID。
# 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
由于前段时间发生的 IO 块,写入此挂载点的 rsync 进程仍处于 D 状态。
# 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/
由于此进程处于不间断睡眠状态,因此无法杀死此进程。
这就是无法从服务器卸载 Windows 共享的原因。
无法使用 kill 命令终止 D 状态进程,因为它们就像进程列表中没有父进程的孤立条目。
因此建议重新启动服务器以终止任何此类 D 状态进程。
如果在生产服务器的情况下目前无法重新启动,则等待 IO 再次可用,以便该过程将被唤醒并完成。
但是,不建议等待超过一个月,因为如果服务器中存在更多此类 D 状态进程,服务器负载可能会逐渐攀升。
日期:2020-09-17 00:12:22 来源:oir作者:oir