ext4 標準建議可以建立最大 1 EB 大小的檔案系統。
我的目標是在 Ubuntu 16.0.4 上建立 500 TB 的 ext4 檔案系統。檢查我的 fs 建立命令:
sudo mkfs.ext4 -m 0 -J device=/dev/md125p1 /dev/md125p2 -b 4096 -E stride=128,stripe-width=6400,lazy_itable_init=0,lazy_journal_init=0
使用此命令我收到以下錯誤:
設定超級區塊時無法建立具有請求的 inode 數量的檔案系統
我嘗試使用 mkfs.ext4 中的 -i 選項將每個 inode 值的位元組數設定為非常高的數字,但仍然沒有成功。
我知道 RHEL 建議使用最大 50 TB 的 ext4 檔案系統。仍然可以使用 ext4 建立 500 TB 的檔案系統嗎?
答案1
這應該有效。使用現代版本mke2fs
:
% mkfs.ext4 /tmp/test.img 500T
mke2fs 1.45.4 (23-Sep-2019)
Creating regular file /tmp/test.img
Creating filesystem with 134217728000 4k blocks and 4259840000 inodes
Filesystem UUID: 00257d43-0298-4aaf-8cca-37e34f3d1bb8
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544, 1934917632,
2560000000, 3855122432, 5804752896, 12800000000, 17414258688,
26985857024, 52242776064, 64000000000
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
索引節點的數量是(2**32)-1
自動限制的,因此其他答案中表達的擔憂不是問題。
此外,x86 上不支援使用大於 4k 的區塊大小,因為 Linux 限制要求區塊大小不能大於 VM 頁面大小。因此,您可以在 PowerPC 上使用最大為 64k 的區塊大小,因為它的頁面大小為 64k。
我還要說,如果您使用的是非常大的檔案系統,我強烈建議您使用最新版本的e2fsprogs
,而不是 Ubuntu 16.04 中提供的過時版本。過去 3 年修復了許多錯誤,其中包括一些與非常大的檔案系統相關的錯誤。
答案2
根據我的研究,ext4 可能不支援 500 TB 的 4K 區塊。
EXT3/EXT4 的預設分區的每 inode 位元組數比率為每 16384 位元組 (16 Kb) 一個 inode。
因此我們有:
500 GB = 500 * 1024 * 1024 * 1024 * 1024 = 549 755 813 888 000 bytes
549 755 813 888 000 bytes / 16384 = 33 554 432 000 inodes
inode 的數量是 32 位數字,因此任何 ext2/3/4 檔案系統上 inode 的最大可能數量是 2^32-1 或 4,294,967,295 inode。
由於 33 554 432 000 遠大於 4,294,967,295,因此分配該數量的 inode 是不可能的。您需要的 inode 數量是最大數量的 8 倍。
據我所知,您的選擇是:
- 嘗試強制 inode 限制:
-N 4294967295
- 使用 8x4 = 32 KB 的區塊,如果檔案很小,這會很浪費
- 使用 ext4 以外的其他檔案系統。我看到有報告說XFS可以支援這樣的檔案系統,但從個人經驗來看不能說。