我在btrfs文件系统上的文件夹有这个问题。检查安装点和lsof是正常的事情。就我而言,这是由一个旧错误引起的损坏,自修复以来:
要检查的正常情况:
- lsof的+ d <路径> -这将升我š吨所有ö笔˚F尔斯。您不能删除包含打开文件的文件夹,尽管通常也会产生稍微不同的错误:“设备或资源繁忙”。请注意,如果省略“ + D <path>”,lsof将显示所有文件系统上所有文件夹的列表-这会浪费时间。;)
- 安装:这将向您显示当前已挂载的文件系统。您不能删除主动安装的安装点或其父文件夹。
- btrfs子列表<path>:与安装点类似,您无法删除btrfs子卷,除非使用特定于btrfs的命令:btrfs子卷delete <path>。
腐败解决方法
对于无法轻易修复的损坏,基本的解决方法是备份,格式化文件系统,然后还原(保留坏数据)。根据文件系统中的数据量,这可能很麻烦。:-/
就我而言,问题文件夹位于子卷中,因此我能够执行上述操作,但仅删除了子卷而不是整个文件系统。我备份了数据并删除了子卷:btrfs sub del <subvolume-path>。然后,我能够还原到一个新的子卷中,而没有找到问题文件夹。
i_size的损坏
在我的情况下,发现原因是i_size损坏,其中i_size不为零。Btrfs使用i_size告知文件夹是否为空。要对此进行检查,请运行:
stat -c %s <foldername>
btrfs中空文件夹的i_size应该为零。ext通常是4k。
相关链接:
https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory
rm -r
终端的输出是什么?您是否尝试过此帖子的答案?