檔案數量限制
緣起
想知道一個floder可以放多少檔案
資訊
[網站資訊1(以下內容為節錄)]
前陣子在討論時有提到一個有趣的問題,程式設計者將使用者上傳的圖檔放置在同一個目錄下。
一個長輩就緊張了,”目錄下的檔案數量是有限的” 長輩說:”應該要建多個subdirectory, 把檔案分散存放。”
我也記得這檔事,好像古早的 SunOS 有類似的問題… 單一目錄下檔案過多會錯亂,但是現在應該不會了。
“不是吧,我記得我存過80萬個檔案在同一個目錄。現在檔案系統好像沒這個問題了” 我繼續說:”滿天都是飛機啊,滿街都是電腦啊!”
於是你知道的… 君子無所爭,必也Spec乎。 然後開始翻Ext4 Spec。Spec 裡面有提到 Ext4 有 subdirectory 的限制,64000個。 但就是沒說檔案”在目錄中“的限制是幾個。
事隔多月,剛剛突然想到這個問題。就順便寫個兩行code弄張空的2GB SD卡來測試看看。 code長這樣
for x in xrange(0,1000000000):
f=open(str(x),'a')
f.close()
我建了一個目錄後就進去執行上段程式,30秒之後答案揭曉。
IOError: [Errno 28] No space left on device: '123892'
總共在sda1其中的一個目錄下建了123891個檔案,停掉是因為Inode用完了。
pi@raspberrypi /opt/pttdata $ df -i /dev/sda1
檔案系統 Inode I已用 I可用 I已用% 掛載點
/dev/sda1 123904 123904 0 100% /opt/pdata
所以結論來啦,檔案不管放在哪裡,都跟目錄沒有關係。
Inode有多少,可以寫入的檔案就有多少。
來源
(來源已死)