(參考鏈接:
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 命令查看所有的限制,并能臨時改變限制。