Filesystems

防止 inode 重用

  • December 7, 2021

我們正在使用 Logstash 來攝取我們的日誌,並且由於 inode 被重用,我們正面臨一些問題。我們在 Logstash 方面嘗試了所有可能的選項,因此我們正在探索作業系統方面。

據我所見,如果我創建一個文件,將其刪除,然後再創建一個新文件,大多數情況下它將獲得相同的 inode

[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 被重用之間的時間段。磁碟很大,所以我們預計問題不會達到 inode 限制。

謝謝

防止創建具有給定 inode 編號的文件的唯一方法是如果已經有一個(或者如果 inode 值是文件系統不會使用的一個,當然)。您不能保留 inode 值。通過通用介面(即通過不特定於特定文件系統類型的介面)是正確的,大多數文件系統都是如此(即大多數沒有保留 inode 編號的專有方法),並且就我而言毫無疑問,這對於 XFS 來說尤其如此。

如果您在刪除一個文件後立即創建一個新文件,那麼在許多文件系統上,大多數情況下,新文件將具有與剛剛刪除的文件相同的 inode。但這永遠無法保證。

如果您希望 inode 繼續使用,請不要刪除該文件。如果需要,您可以截斷它(例如truncate -s0 /path/to/file: >|/path/to/file)以節省磁碟空間。如果某個工具正在探索一個目錄並且您不希望該工具再看到該文件,則可以將其移動到同一文件系統上的另一個目錄。

引用自:https://unix.stackexchange.com/questions/680487