运行OpenSuse 12.2。
突然,根分区似乎已满(99%),但是我无法再手动删除文件。
“ rm:无法删除xxx:设备上没有剩余空间”,尽管根据df,450mb仍然可用。文件系统是BTRFS。
我尝试使用btrfsck检查FS,但没有帮助。
该怎么办?
运行OpenSuse 12.2。
突然,根分区似乎已满(99%),但是我无法再手动删除文件。
“ rm:无法删除xxx:设备上没有剩余空间”,尽管根据df,450mb仍然可用。文件系统是BTRFS。
我尝试使用btrfsck检查FS,但没有帮助。
该怎么办?
Answers:
最有可能的是,您遇到了一个问题,即BTRFS必须先分配一些元数据才能删除文件。BTRFS的弱点之一是它对空间不足条件的处理。改善这方面的行为是该项目的重点之一。
btrfs Wiki上的一项建议是破坏文件而不是删除文件。
#instead of this
rm -f ./some_file
# do this
true >| ./some_file
这将删除文件的内容,而无需更改目录条目。一旦走出角落,就可以像平常一样删除文件了。如果那给您带来麻烦,则可能需要使用该nodatacow
选项临时重新安装,该选项会关闭“写时复制”行为。但是...不确定是否会有所帮助。
通常,尽管如此:不要空运行BTRFS文件系统。它仍然是预生产软件,而且情况有些复杂。
我已经遇到了相同的错误消息,但是在我的情况下,文件系统未报告为已满:
user@host:/# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 2.8G 2.0G 618M 77% /
但询问BTRFS时发现确实已满:
user@host:/# btrfs fi show
Label: none uuid: {UUID redacted because reasons}
Total devices 1 FS bytes used 1.92GiB
devid 1 size 2.79GiB used 2.79GiB path /dev/sda3
即使覆盖任何文件(如tylerl所建议的)也是不可能的。我的解决方案位于http://marc.merlins.org/perso/btrfs/post_2014-05-04_Fixing-Btrfs-Filesystem-Full-Problems.html,建议使用来手动重新平衡文件系统btrfs balance start -dusage=55 /path/to/filesystem
。