Linux對於cpu的搜索效率是有規定的,內核需要重新編譯改變數量限制。內核代碼中有這樣的內容:
include/Linux/ext 2 _ fs . h:# define EXT2 _ LINK _ MAX 32000
include/Linux/EXT3 _ fs . h:#定義EXT3_LINK_MAX 32000
為什麽說31998?這是因為當mkdir創建壹個目錄時,默認情況下會在該目錄下創建兩個子目錄,壹個是。目錄(代表當前目錄),另壹個是..目錄(代表父目錄)。這兩個子目錄不能刪除,還有“rm。”將提示“rm:無法刪除”。或者` ..'".所以32000-2=31998。
對於ext3文件系統中單個目錄中的最大文件數量沒有特殊限制,它受到文件系統中inode數量的限制。
在壹個目錄裏,摸654.38+0萬個文件是沒有問題的。但是它肯定會受到文件系統中inode數量的限制。
Df -i /dev/sdaX或使用tune2fs -l /dev/sdaX或dump 2 fs-h/dev/sdaX來檢查可用的inodes。最後兩個命令的輸出結果是相同的,但是DF獲得的可用inodes會有壹些錯誤。
解決互聯網上inode數量限制的方法有兩種,如下。
2.1重新創建mkfs時,調整更多的信息節點數(取決於文件系統中的文件總數)和更小的塊大小(取決於每個文件的平均大小)。
2.2使用回送文件系統的臨時解決方案:在/usr(或其他地方)創建壹個大文件,然後做壹個回送文件系統,將原文件移動到這個文件系統,掛載到/usr下合適的位置。這可以大大減少/usr中的文件數量。但是系統性能會有壹點損失。