ext4 文件系统上 inode 的垃圾收集

Garbage collection of inodes on ext4 filesystem

据我所知,在 ext4 文件系统中删除打开的文件时,我们只是取消链接,inode 保持分配状态,直到文件句柄关闭。

但是 inode 什么时候真正被释放了?如果系统在文件关闭前重启会怎样?

Linux 使用引用计数。这就是为什么在文件系统中不能有循环引用(目录硬链接)的原因。这会破坏引用计数。

当引用计数为零时释放索引节点。

万一发生电源故障,您的文件系统就会损坏。检查工具 e2fsck 可以找到那些不一致的地方并将文件移动到 lost+found。然后你可以再次删除它们,希望不会断电。

一般情况下,写入缓存的电源故障总是会破坏您的文件系统。如果日志没有写入磁盘,即使日志记录也无济于事。