歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux系統中限制目錄數和文件數的方法詳解

Linux系統中限制目錄數和文件數的方法詳解

日期:2017/3/1 16:18:08   编辑:關於Linux
Linux系統中限制目錄數和文件數的方法詳解 限制Linux系統目錄數和文件數的方法。 根據需要進行參數配置,實現更優的性能,有助於設計更為合理的存儲結構。 一 目錄數限制 RedHat Entere LinuxAS環境中。 在同一個路徑下,一級子目錄的個數限制為31998, 如果應用生成目錄超過這個數,可以進行目錄分級。 例如,目錄名為數字的話,將數字除以10000後的整數值做為父目錄名 (/data/1/13892), 如果是目錄名為字母的,可以用前幾個字符來做為父一級目錄(/data/ab/abcdefg) 查詢一個目錄下級子目錄的總數 Java代碼 $ ls -F | grep “/” | wc 1) 創建子目錄 2) Linux為了cpu的搜索效率而規定的,要改變數目要重新編譯內核. 二 文件數目限制 每個文件對應一個inode,如果inode沒有了,那就算有空間也不能再寫文件了。 查看某個分區的inodes信息: Java代碼 # tune2fs -l /dev/sda5 | grep “inodes” Free inodes: 1247005 解決辦法: 1) 重新mkfs,mkfs時將inode數調的多一些(根據你fs中文件的總數而定),塊尺寸調得小一些(根據每個文件的平均大小而定) 2) 使用loopback文件系統臨時解決 在/usr中(可以在別處)創建一個大文件,然後做成loopback文件系統,將原來的文件移到這個文件系統中,並將它mount到/usr下合適的位置。 這樣可以減少/usr中的文件數目,但是系統性能有損失 三 單個目錄下文件數限制 Freebsd下有65535的限制,通過重新編譯內核可以更改。(查看/usr/include/sys/syslimits.h) 不建議在一個目錄下放太多文件,會影響系統性能。 ulimit -a 命令查看所有的限制,並能臨時改變限制。 沒有優化或修改內核的測試,測試平台:RHEL5U3_x64 測試ext3文件系統下filename最大字符長度: Java代碼 LENTH=`for i in {1..255};do for x in a;do echo -n $x;done;done` touch $LENTH 當增加到256時,touch報錯,File name too long linux系統下ext3文件系統內給文件/目錄命名,最長127個中文字符,英文支持255個字符 測試ext3文件系統下一級子目錄的個數限制 RHEL5U3_x64 Java代碼 # for i in {1..32000}; do mkdir $i; done mkdir: cannot create directory `31999′: Too many links mkdir: cannot create directory `32000′: Too many links ext3文件系統一級子目.Linux為了cpu的搜索效率規定的,要改變數目要重新編譯內核. 測試ext3文件系統下單個目錄裡的最大文件數 單個目錄下的最大文件數沒什麼特別限制,受限於所在文件系統的inode數限制 df -i 或者使用tune2fs -l /dev/sdaX 或者dumpe2fs -h /dev/sdaX 查看可用inode數 後兩個命令輸出結果是一樣的,跟df所得出的可用inode數會有些誤差 常用兩種解決辦法: 1 重新mkfs,ext3默認block大小4096 Bytes,block設置小一些inode數設置大一些 2 使用loopback文件系統臨時解決: 在/usr中(也可以在別處)創建一個大文件,然後做成loopback文件系統,將原來的文件移到這個 文件系統中,並將它mount到/usr下合適的位置。這樣可以大大減少你/usr中的文件數目,系統性能會有損失。 測試打開文件數限制(文件句柄、文件描述符) ulimit -n 65535設置,或者/etc/security/limit.conf裡設置用戶打開文件數、進程數、CPU等.
Copyright © Linux教程網 All Rights Reserved