重新创建文件会重用以前的索引节点吗?

Sai*_*oti 2 linux

我有一个文件a.txt

如果我删除该文件并a.txt在同一位置创建一个空文件,这会影响旧文件的索引节点详细信息吗?或者会创建一个新的索引节点吗?

Att*_*tie 7

这取决于您的文件系统...

在 ext4 上我看到以下内容:(inode 重用)

$ touch a.txt
$ stat -c%i a.txt
1316644

$ rm a.txt

$ touch a.txt
$ stat -c%i a.txt
1316644
Run Code Online (Sandbox Code Playgroud)

在 ZFS 上我看到以下内容:(分配了新的 inode)

$ touch a.txt
$ stat -c%i a.txt
15585

$ rm a.txt

$ touch a.txt
$ stat -c%i a.txt
15586
Run Code Online (Sandbox Code Playgroud)

stat -c%i ${FILENAME}将显示给定文件的索引节点。

请注意,索引节点通常不会创建/销毁,而是永久存在,用于记录文件信息或标记为“未使用”。


另请注意,在活动系统上,您不能保证同一 inode 被重用,因为在删除和创建之间它可能被另一个文件使用。即:删除/创建操作不是原子的

在 ext4 上:

$ touch a.txt
$ stat -c%i a.txt
1316644

$ rm a.txt

$ touch b.txt
$ stat -c%i b.txt
1316644

$ touch a.txt
$ stat -c%i a.txt
1316645
Run Code Online (Sandbox Code Playgroud)