試圖了解硬連結的刪除與 inode 表中值的釋放有何關係?

試圖了解硬連結的刪除與 inode 表中值的釋放有何關係?

當刪除硬連結時,該連結將被刪除,但檔案本身的內容將繼續存在(即,其空間不會被釋放),直到該檔案的所有連結都被刪除。

我的理解是僅有的當檔案本身被刪除時,該特定檔案的 Inode 表是否會重設?因為即使原始文件也是由 a 表示的鏈接1在 ls 指令的元資料中。

比方說,我有2個到一個文件的硬鏈接,我刪除了這兩個硬鏈接,Inode數據仍然在表中索引,直到最後一個鏈接被刪除?它是否正確?

使用該命令時,df -hi它不會關聯太多空間是否已清除的資訊。所以,我的第二個問題是如何確定 Inode 資料何時清晰且不佔空間?

答案1

在下列情況下,索引節點的空間及其在索引節點表中的區塊和空間將被釋放:

  • 指向該 inode 的最後一個目錄條目將會被刪除。也就是說,不再有到 inode 的硬鏈接,並且
  • 引用該索引節點的最後一個檔案描述符已關閉。也就是說,該索引節點不再使用,並且該索引節點沒有開啟的檔案描述符引用它。

例如,進程可能會建立一個文件,打開該文件,然後立即取消連結以將該文件用作臨時儲存。如果進程退出或被終止,其檔案描述符將自動關閉,並且臨時檔案將自動釋放。

在inode實際釋放之前,inode及其區塊將被使用,並且已使用的空間將被視為df顯示的已使用區塊和inode。當最後一個檔案描述符和硬連結消失時,空間將被釋放,並且 df 的報告將如此更新。

相關內容