檔案 inode 與 no space left on device 異常

2023-11-05 18:00:46

轉載請註明出處:

檔案inode

  在 Linux 檔案系統中,每一個檔案或目錄都會有一個 inode,它是一個資料結構,用於儲存檔案的後設資料,比如檔案的許可權、所有者、大小、建立和修改的時間等。inode 不包含檔案的實際內容,只包含檔案的後設資料。當你在檔案系統中建立、修改或者刪除檔案時,實際上是在修改或者刪除這個檔案的 inode。

  inode 的數量在檔案系統建立時就被定義了,並且不能動態改變。一個檔案系統的 inode 數量通常與檔案系統的容量成正比,通常是 1:16 KB。如果你建立了大量的目錄、符號連結和小檔案,你可能會耗盡 inode。

  可以使用 df -i 命令來檢視檔案系統的 inode 使用情況。例如,如果檔案系統掛載在 / 目錄,你可以使用以下的命令來檢視這個檔案系統的 inode 使用情況:

df -i /

  在這個命令中,-i 參數列示檢視 inode 的使用情況,/ 參數列示檢視掛載在 / 目錄的檔案系統的 inode 使用情況。

  執行這個命令後,會看到以下的輸出:

root@test:~# df -i /
檔案系統          Inode 已用(I)  可用(I) 已用(I)% 掛載點
/dev/sda1      43753472 1192187 42561285       3% /
root@test:~#

  在這個輸出中,Inodes 列表示檔案系統的總的 inode 數量,IUsed 列表示已經使用的 inode 數量,IFree 列表示還沒有使用的 inode 數量,IUse% 列表示已經使用的 inode 的百分比。

  需要注意的是,如果你的檔案系統的 inode 用盡了,即使磁碟上的空間還有很多,你也無法在上面建立新的檔案。這是因為每個新的檔案都需要一個 inode 來儲存它的後設資料。因此,你應該定期檢查你的檔案系統的 inode 使用情況,以避免檔案系統的 inode 用盡。

no space left on device

  解決方法:

  1.通過df -h 檢視磁碟空間。如果磁碟空間不足也會報這個錯

                             

  如果磁碟空間總有存在 100% 的掛載,進行磁碟空間清理

  2.通過df -i 檢視可用的indoe。如果inode 使用也會報這個錯:

                        

  如果存在100%,也進行冗餘檔案或相關檔案清理,也能解決該錯。