Filesystems

創建文件系統時的大文件功能

  • July 16, 2014

使用*-T largefile*標誌為包含大文件(如影片和 flac 格式的音頻)的分區創建文件系統有用嗎?

我用那個標誌和不帶它測試了同一個分區,並使用了tune2fs -l$$ partition $$,我簽入了都啟用了“large_file”的“文件系統功能”。那麼,沒有必要使用*-T 標誌 largefile*嗎?

-T largefile標誌調整在創建文件系統時分配的 inode 數量。一旦分配,它們的數量就無法調整(至少對於 ext2/3,不完全確定 ext4)。預設值為每 16K 磁碟空間一個 inode。-T largefile使它成為每兆字節的一個 inode。

每個文件都需要一個 inode。如果您沒有任何 inode,則無法創建新文件。但是這些靜態分配的 inode 也會佔用空間。通過設置,您可以期望為每 100 GB 磁碟節省大約 1.5 GB-T largefile,而不是預設值。-T largefile4(每 4 MB 一個 inode)沒有如此顯著的效果。

如果您確定儲存在設備上的文件的平均大小將超過 1 兆字節,那麼請務必設置-T largefile. 我很高興在我的儲存分區上使用它,並認為它不是太激進的設置。

但是,如果您將包含許多文件(想想數十萬個)的非常大的源 tarball 解壓縮到該分區,您就有可能用完該分區的 inode。在這種情況下,除了選擇要解壓到的另一個分區之外,您幾乎無能為力。

您可以使用以下dumpe2fs命令檢查實時文件系統上可用的 inode 數量:

# dumpe2fs /dev/hda5
[...]
Inode count:              98784
Block count:              1574362
Reserved block count:     78718
Free blocks:              395001
Free inodes:              34750

在這裡,我仍然可以創建 34000 個文件。

這是我在mkfs.ext3 -T largefile -m 0100 GB 分區上執行後得到的結果:

Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/loop1              102369       188    102181   1% /mnt/largefile
/dev/loop2              100794       188    100606   1% /mnt/normal

大文件版本有 102 400 個 inode,而普通版本創建了 6 553 600 個 inode,並在此過程中節省了 1.5 GB。

-i如果您對要放入文件系統的文件大小有一個很好的線索,則可以直接使用開關微調 inode 的數量。它設置每個 inode 的字節數比率。-i 65536如果您在使用時仍能創建超過一百萬個文件,您將節省 75% 的空間。我通常計算至少保留 100 000 個 inode 備用。

引用自:https://unix.stackexchange.com/questions/43102