linux下文件數、目錄數、文件名長度的各種限制

以下測試都是在沒有優化或修改內核的前提下測試的結果

1. 測試目的:ext3文件系統下filename最大字符長度
測試平臺:RHEL5U3_x64
測試過程:
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個字符

2. 測試目的:ext3文件系統下一級子目錄的個數限制
測試平臺:RHEL5U3_x64
測試過程:
# 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文件系統一級子目錄的個數爲31998(個)。
Linux爲了cpu的搜索效率而規定的,要想改變數目大概要重新編譯內核.

3. 測試目的:ext3文件系統下單個目錄裏的最大文件數
測試平臺: RHEL5U3_x64
測試過程:
單個目錄下的最大文件數似乎沒什麼特別限制,也是受限於所在文件系統的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中的文件數目。但是系統
性能會有點損失。

4. 測試目的: 打開文件數限制(文件句柄、文件描述符)
測試平臺: RHEL5U3_x64
ulimit -n 65535設置,或者/etc/security/limit.conf裏設置用戶打開文件數、進程數、CPU等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章