终止长时间运行的 rm 命令的效果

终止长时间运行的 rm 命令的效果

今天我使用命令删除了存储在 ext3 文件系统上的 50GB 文件rm。花费了rm近 40 分钟的密集 I/O 来释放所有块。从我从其他来源看到的情况来看,这是释放文件使用的所有块所需的时间。如果有人rm在中间杀死该进程会发生什么。这是否会导致文件系统损坏,某些块无法再回收为可用空间?

答案1

(即要求fsck)。文件系统的不一致是不必要的。

是的,取消链接后将发生块释放。但这个过程不会被中断。

ext2_evict_inode->

__ext2_truncate_blocks ->
ext2_free_branches -> (for loop)
sb_bread ->
wait_on_buffer ->

wait_on_bit_io(&bh->b_state, BH_Lock, TASK_UNINTERRUPTIBLE);

上面的例子是针对的ext2,我认为这样看起来会更简单。 ext3不会有任何不同...

ext4不过应该更快。使用范围应该避免需要三重间接块。 (文章描述了向 ext3 添加范围,但 Linus 犹豫不决并表示首先将版本号更改为 ext4)。我预计更新位图的时间是相同的,但它们比块指针要紧凑得多。

相关内容