(參考鏈接: http://blog.chinaunix.net/u1/34654/showart_331913.html)

對于系統(tǒng)管理員來說,了解系統(tǒng)的一些限制是非常有必要的,這樣可以根據(jù)需要進(jìn)行必要的參數(shù)配置和調(diào)整,進(jìn)而實現(xiàn)更優(yōu)的性能,對于系統(tǒng)設(shè)計人員甚至程序員來說,了解系統(tǒng)的一些限制,也會有助于設(shè)計更為合理的存儲結(jié)構(gòu)。

  一 目錄數(shù)限制

  RedHat Enterprise Linux AS 4.0 Update 3

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

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

$ ls -F | grep "/" | wc

  解決方法:

  1) 創(chuàng)建子目錄

  2) Linux為了cpu的搜索效率而規(guī)定的,要想改變數(shù)目大概要重新編譯內(nèi)核.

  二 文件數(shù)目限制

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

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

[root@boss tmp]# tune2fs -l /dev/sda5 | grep "inodes"
Free inodes:              1247005
[root@boss tmp]#

  2種解決辦法: 

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

  2) 使用loopback文件系統(tǒng)臨時解決

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

  三 單個目錄下文件數(shù)限制

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

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

  補(bǔ)充: ulimit -a 命令查看所有的限制,并能臨時改變限制。