檔案數量限制

緣起

想知道一個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有多少,可以寫入的檔案就有多少。

來源

(來源已死)

http://kevinwatt.net/blog/2013/04/03/linux-%E5%86%B7%E7%9F%A5%E8%AD%98-%E5%9C%A8ext4%E4%B8%8A%EF%BC%8C%E4%B8%80%E5%80%8B%E7%9B%AE%E9%8C%84%E4%B8%8B%E9%9D%A2%E5%88%B0%E5%BA%95%E5%8F%AF%E4%BB%A5%E6%94%BE%E5%A4%9A%E5%B0%91%E5%80%8B/

參考

results matching ""

    No results matching ""