關於Linux下總文件數與單個目錄下子目錄數/文件數限制問題


一、文件數限制:
    系統所能生成的總的文件數受系統所剩節點數限制,執行
tune2fs -l /dev/sda1(目錄所在的分區) |grep inodes
    可以查看剩餘節點數
在一臺ext3的系統中執行,結果爲
Free inodes:              845504
2種解決辦法:   
1、重新mkfs,mkfs時將inode數調的多一些(根據你fs中文件的總數而定),塊尺寸調得小一些(根據每個文件的平均大小而定)   
2、使用loopback文件系統臨時解決   
在/usr中(也可以在別處)創建一個大文件,然後做成loopback文件系統,將原來的文件移到這個文件系統中,並將它mount到/usr下合適的位置。這樣可以大大減少你/usr中的文件數目。但是系統性能會有點損失。
3、選用XFS

二、目錄數限制:
    RHEL4.3中,在同一個路徑下,一級子目錄的個數限制爲31998 。如果你的應用生成的目錄可能會超過這個數,那要注意進行目錄分級。例如,如果目錄名爲數字的話,可以將數字除以10000後的整數值做爲父目錄名(/data/1/13892);如果是目錄名爲字幕的,可以用前幾個字符來做爲父一級目錄(/data/ab/abcdefg)等等
解決方法:
得到一個目錄下一級子目錄的總數   
ls -F | grep   /   |wc
1、創建子目錄
2、linux爲了cpu的搜索效率而規定的,要想改變數目大概要重新編譯內核.

三、單個目錄下文件數限制:
    原來以爲linux下單個目錄內有文件數量限制,google了一番沒有看到明確的說法,到是freebsd下有65535的限制,通過重新編譯內核可以更改。(可以看看/usr/include/sys/syslimits.h)
    不過不建議在一個目錄下放太多文件,會影響系統性能。

補充: ulimit -a命令查看所有的限制,並能臨時改變限制
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章