防止索引节点重用

防止索引节点重用

我们正在使用 Logstash 来提取日志,但由于 inode 被重用,我们面临一些问题。我们在 Logstash 方面尝试了所有可能的选项,因此我们正在探索操作系统方面。

据我所知,如果我创建一个文件,将其删除,然后再创建一个新文件,大多数时候它会获得相同的索引节点

[root@XXXX~]# touch a.txt
[root@XXXX~]# stat -c%i a.txt
671092802
[root@XXXX~]# rm a.txt
rm: remove regular empty file ‘a.txt’? y
[root@XXXX~]# touch a.txt
[root@XXXX~]# stat -c%i a.txt
671092802
[root@XXXX~]#  rm a.txt
rm: remove regular empty file ‘a.txt’? y
[root@XXXX~]# touch b.txt
[root@XXXX~]# stat -c%i b.txt
671092802

如何防止具有 XFS 的操作系统将最近使用过的 inode 重新用于新文件?

理想情况下,我们希望定义从文件被删除到索引节点被重用之间的一段时间。磁盘很大,因此我们预计不会出现达到 inode 限制的问题。

谢谢

答案1

阻止创建具有给定 inode 编号的文件的唯一方法是如果已经存在一个文件(或者当然,如果该 inode 值是文件系统不会使用的值)。您无法保留 inode 值。对于通用接口(即通过不特定于特定文件系统类型的接口)来说这是正确的,对于大多数文件系统来说都是如此(即大多数没有保留 inode 号的专有方法),并且据我所知毫无疑问,这对于 XFS 来说尤其如此。

如果删除一个文件后立即创建一个新文件,则在许多文件系统上,大多数情况下,新文件将具有与刚刚删除的文件相同的 inode。但这永远无法保证。

如果您希望索引节点继续使用,请勿删除该文件。如果需要,您可以截断它(例如truncate -s0 /path/to/file或)以节省磁盘空间。: >|/path/to/file如果某个工具正在探索某个目录并且您不希望该工具再看到该文件,您可以将其移动到同一文件系统上的另一个目录。

相关内容