![]() |
||
|
Junior Member
![]() ![]() ![]() 加入日期: Apr 2000
文章: 761
|
Linux ext3一個目錄最多可以有幾個檔案?
我因為實驗需要,所以要在Linux ext3下的一個目錄產生很多檔案,
會到上萬個以上。(當然有特殊原因,無法將檔案分類至其他目錄) 不過怕會爆掉,實驗無法繼續進行。 而我在Google search後,並沒有很明確的知道ext3的目錄檔案各數最大限制。 有沒有了解的前輩可以指點呢,謝謝。 |
|||||||
|
|
|
Regular Member
![]() ![]() 加入日期: Nov 2003
文章: 80
|
取自鳥哥的 Linux 私房菜(Linux 磁碟與檔案系統管理) :
目錄的最大功能就是在提供檔案的關連性,在關連性裡面, 當然最主要的就是『檔名與 inode 的對應資料』囉!另外,關於 EXT2 檔案系統,這裡有幾點小事情要提醒一下: ext2 與 ext3 檔案在建立時 (format) 就已經設定好固定的 inode 數與 block 數目了; 格式化 Linux 的 ext2 檔案系統,可以使用 mke2fs 這個程式來執行! ext2 允許的 block size 為 1024, 2048 及 4096 bytes; 一個 partition (filesystem) 所能容許的最大檔案數,與 inode 的數量有關, 因為一個檔案至少要佔用一個 inode 啊! 在目錄底下的檔案數如果太多而導致一個 Block 無法容納的下所有的關連性資料時,Linux 會給予該目錄多一個 Block 來繼續記錄關連資料; 通常 inode 數量的多寡設定為 (partition 的容量) 除以 (一個 inode 預計想要控制的容量)。 舉例來說,若我的 block 規劃為 4Kbytes,假設我的一個 inode 會控制兩個 block ,亦即是假設我的一個檔案大致的容量在 8Kbytes 左右時,假設我的這個 partition 容量為 1GBytes, 則 inode 數量共有:( 1G * 1024M/G * 1024K/M ) / ( 8K ) = 131072 個。而一個 inode 佔用 128 bytes 的空間,因此格式化時就會有 ( 131072個 * 128bytes/個 ) = 16777216 byes = 16384 Kbytes 的 inode table 。也就是說,這一個 1GB 的 partition 在還沒有儲存任何資料前, 就已經少了 16MBytes 的容量啊! 因為一個 inode 只能記錄一個檔案的屬性,所以 inode 數量比 block 多是沒有意義的! 舉上面的例子來說,我的 Block 規劃為 4 Kbytes ,所以 1GB 大概就有 262144 個 4Kbytes 的 block ,如果一個 block 對應一個 inode 的話,那麼當我的 inode 數量大於 262144 時,多的 inode 將沒有任何用處,徒然浪費硬碟的空間而已!另外一層想法,如果我的檔案容量都很大, 那麼一個檔案佔用一個 inode 以及數個 block ,當然 inode 數量就可以規劃的少很多啦! 當 block 大小越小,而 inode 數量越多,則可利用的空間越多,但是大檔案寫入的效率較差; 這種情況適合檔案數量多,但是檔案容量小的系統,例如 BBS 或者是新聞群組( News )這方面服務的系統; 當 Block 大小越大,而 inode 數量越少時,大檔案寫入的效率較佳,但是可能浪費的硬碟空間較多; 這種狀況則比較適合檔案容量較大的系統! 不知道有無幫助 , 感謝鳥哥 . |
||
|
|