Linux系統目錄數和文件數限制

  對於系統管理員來說,瞭解系統的一些限制是非常有必要的,這樣可以根據需要進行必要的參數配置和調整,進而實現更優的性能,對於系統設計人員甚至程序員來說,瞭解系統的一些限制,也會有助於設計更爲合理的存儲結構。

  一 目錄數限制

  RedHat Enterprise Linux AS 4.0 Update 3

  在同一個路徑下,一級子目錄的個數限制爲31998,如果你的應用生成的目錄可能會超過這個數,那要注意進行目錄分級。例如,如果目錄名爲數字的話, 可以將數字除以10000後的整數值做爲父目錄名 (/data/1/13892),如果是目錄名爲字母的,可以用前幾個字符來做爲父一級目錄 (/data/ab/abcdefg)等等。

  通過以下的命令行可以得到一個目錄下一級子目錄的總數:

$ ls -F | grep "/" | wc
  解決方法:

  1) 創建子目錄

  2) Linux爲了cpu的搜索效率而規定的,要想改變數目大概要重新編譯內核. 

  二 文件數目限制

  每個文件對應一個inode,如果inode沒有了,那就算有空間也不能再寫文件了。

  通過以下命令行,可以看某個分區的inodes信息:

[root@boss tmp]# tune2fs -l /dev/sda5 | grep "inodes"
Free inodes:              1247005
[root@boss tmp]#
  2種解決辦法:  

  1) 重新mkfs,mkfs時將inode數調的多一些(根據你fs中文件的總數而定),塊尺寸調得小一些(根據每個文件的平均大小而定)  

  2) 使用loopback文件系統臨時解決

  在/usr中(也可以在別處)創建一個大文件,然後做成loopback文件系統,將原來的文件移到這個文件系統中,並將它mount到/usr下合適的位置。這樣可以大大減少你/usr中的文件數目。但是系統性能會有點損失。

  三 單個目錄下文件數限制

  原來以爲Linux下單個目錄內有文件數量限制,Google了一番沒有看到明確的說法,到是Freebsd下有65535的限制,通過重新編譯內核可以更改。(可以看看/usr/include/sys/syslimits.h)

  不過不建議在一個目錄下放太多文件,會影響系統性能。

  補充: ulimit -a 命令查看所有的限制,並能臨時改變限制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章