建立符號連結需要多少空間?

建立符號連結需要多少空間?

我有一台包含 1 TB 空間的伺服器。我把它裝滿了;然後我想做一個符號連結。我刪除了一個不同的符號鏈接,但伺服器仍然不滿意 - 它說我沒有任何可用空間。我不是透過刪除最後一個符號連結來清理足夠的空間嗎?

檔案系統需要多少空間才能識別有足夠的空間來建立​​符號連結?

答案1

這取決於。大多數檔案系統以數千位元組的區塊來分配數據,因此人們可能會想像任何符號連結都適合單一區塊。但還有其他檔案系統元資料的問題,這取決於檔案系統。


特別是在 ext4(和類似的檔案系統)上:

小檔案需要一個索引節點、一個資料塊以及包含該檔案的目錄中目錄項目的空間。短符號連結可能完全儲存在索引節點內,因此它們可能根本不需要資料塊。 (IIRC 限制約為 60 位元組左右。)

刪除符號連結會釋放索引節點並釋放目錄項目以及資料塊(如果使用過)所使用的空間。在某些情況下,這可能不足以創建新的符號連結:

  • 如果新的符號連結將在不同的目錄中創建,則該新目錄可能沒有空間用於新目錄條目,並且如果沒有空閒資料區塊,則無法擴展該目錄。
  • 同樣,如果在同一目錄中建立新的符號連結但名稱較長,則該目錄可能會耗盡空間
  • 如果舊的符號連結足夠短,可以完全儲存在 inode 中,但新連結足夠長,需要一個資料塊,且檔案系統上沒有空閒資料塊,則無法建立新的符號連結。

用完 inode 應該不是問題,因為刪除的符號連結必然只使用一個 inode,而新的符號連結將只需要一個 inode。

答案2

新連結比舊連結更大。

ls -l將顯示符號連結有多少位元組,路徑越長,需要的位元組就越多。

它大致是目標檔案/目錄的完整路徑中的位元組數。在 debian 10 上使用 ext4 時,指向「/var/www/html」的連結為 13 個位元組。

您也可能沒有索引節點。

相關內容