天天看點

聊聊Linux上“too many links”報錯出現的原因和處理方法說明分為兩種情況分析參考文檔

Linux上出現“too many links”這樣的報錯,可能是多原因造成的。本節主要介紹導緻這一報錯的兩種情況:

*(1)ext3 檔案系統,報錯内容類似如下:

*(2)docker存儲驅動overlay,報錯内容類似如下:

關于 ext3 的介紹,網上有很多的優秀的部落格或資料可參考,這裡我簡單說明下:

(1)檢視檔案系統:<code>df -lhT</code>

(2)Linux的kernel代碼中有<code>include/linux/ext2_fs.h:#define EXT2_LINK_MAX 32000</code>和<code>nclude/linux/ext3_fs.h:#define EXT3_LINK_MAX 32000</code>,ext3檔案系統一級子目錄的個數預設為31998(個),準确地說是32000個。

(3)不建議在一個目錄下有太多的檔案或者目錄,這回降低檔案系統查找檔案或目錄的性能。

(4)ext3檔案系統下單個目錄裡的最大檔案數無特别的限制,是受限于所在檔案系統的inode數。參考阮神了解inode

(5)ext4 對目錄個數沒有限制。

了解了上面的套路,我們對于檔案系統層次的“too many links”報錯,可采用:

(1)将ext3檔案系統替換為ext4,注意️資料安全,可參考: failed: Too many links 解決

(2)清除無用的目錄或檔案

關于這一塊,可參考我之前的文章Docker存儲驅動由overlay更改為overlay2,文章中給出了兩種方法:

解決上面出現的“too many links” 問題,可以采用下面兩種方法:

(1)臨時方法:定時删除沒用的鏡像和已經退出的容器,使用docker system prune。

(2)永久方法:将存儲驅動由 overlay 更新到 overlay2。

*(1)failed: Too many links 解決

*(2)Docker存儲驅動由overlay更改為overlay2

*(3)ext3檔案系統目錄限制問題

*(4)了解inode

繼續閱讀