解决卸载docker后删除docker目录遇到的rm: can't remove xxx Resource busy 问题
由于不是很清楚docker安装时会自行mkdir
一个名叫docker
的文件夹,安装前我也mkdir
了一个docker
的文件夹。所以安装好后路径中有两个docker
,在我这,即
/mnt/ThreeTB/docker/docker
作为轻微强迫症,这个已经很难接受了。于是,停止进程/服务程序,卸载之。
然后准备rm
掉整个文件夹,遇到了如下错误:
rm: can't remove './docker/docker/data': Resource busy
Resource busy error
检查是否有进程占用,发现进程已被完全kill
,再检索一些资料发现是在建立容器的时候做了相应目录(即/mnt/ThreeTB/docker/docker/data
)的挂载,在卸载程序时这个挂载点并没有卸载,所以才导致资源繁忙(Resource busy)无法删除目录,即使rm
使用了-rf
这样的强力删除的option。
解决办法:
第一步、检查/proc/mounts
文件中的docker
关键字的情况:
cat /proc/mounts | grep "docker"
说明:
/dev/sdb1
是文件系统(file system),也就是docker安装的具体位置(磁盘)/mnt/ThreeTB/docker/docker/data
是挂载点(mount point)ext4
是使用的日志文件系统的格式,第四代扩展文件系统(英语:Fourth extended filesystem,缩写为 ext4)rw
代表可读可写,data=orderd
应该是表明数据按一定的规则、顺序排序了(原谅鹅偷懒没花时间去了解)。关于relatime
:针对这种情况,Linux 在内核 2.6.20 中添加了一个新的 mount 选项 relatime(relative atime 的意思)。relatime 的意思是访问文件时,仅在 atime 早于文件的更改时间时对 atime 进行更新。在内核 2.6.24 中,又对 relatime 进行了扩展,在访问文件时,当 atime 已经超过某个时间(例如一天)没有更新,就对 atime 进行更新。这个扩展的意思就是调整 atime 的更新粒度。
目前 relatime 还没有被广泛的应用,因为许多 Linux 发行版的内核版本和 mount 命令还没有支持这个选项。如果你的系统支持 relatime,可以使用如下命令启用:
mount -o remount,relatime /
来自:https://www.ibm.com/developerworks/cn/linux/l-cn-fsgreen/index.html
第二步、卸载之(umount
)然后删除之(rm -rf
)
umount /mnt/ThreeTB/docker/docker/data
rm -rf ./docker/
注意:鹅当时是在/mnt/ThreeTB
目录下操作的。
鹅就这样解决了问题。
end.