Filesystems
許多小文件的最佳文件系統是什麼?
我有一個帶有 2TB 驅動器的 Debian 10 伺服器,我想在其中儲存超過 1.2 億個小文件。如果我使用 ext4,我會用完 inode。
我應該使用什麼文件系統?
我一直在閱讀有關 reiserfs 和 reiser4 的資訊,但我不確定它們中的任何一個是否仍受支持。
有沒有我可以使用的帶有內置 Debian 軟體包的文件系統?
主要案例是為使用 Apache 的使用者提供 256x256 柵格地圖圖塊。我猜速度並不那麼重要,因為限制因素將是 ping 時間。盡可能多地使用字節有點重要,但我也有很多可用磁碟空間。
編輯:文件通常為 1kb 到 3kb。
假設您要優化磁碟空間的使用(不僅是 inode 計數,還可能是訪問時間):
您可能需要一個具有塊子分配/尾部合併的文件系統,以便將小數據合併到物理磁碟上的一個分配單元(“集群”)中。
此外,根據您的情況,控製文件系統的集群大小可能是明智之舉,同樣可以節省空間。最佳值可以通過測試確定。
Linux 的穩定候選者是
btrfs
.當然,如果您喜歡使用
ext4
(並且可能不是空間最佳),您可以重新創建您的文件系統(將數據複製到其他地方以首先備份它!)並選擇非常多的 inode。來自
mke2fs(8)
:-N number-of-inodes Overrides the default calculation of the number of inodes that should be reserved for the filesystem (which is based on the number of blocks and the bytes-per-inode ratio). This allows the user to specify the number of desired inodes directly.
您沒有規定“小”有多小,但如果文件既足夠小又足夠可壓縮,
embedded_data
啟用該功能的 ZFS 池可以將“小”文件儲存在塊指針本身中,從而無需分配塊(或更多)文件的儲存空間,並且還消除了讀取或寫入文件的 I/O 呼叫,因為文件數據與文件元數據一起寫入塊指針本身。另外,請注意 ZFS 永遠不會用完 inode。
embedded_data This feature improves the performance and compression ratio of highly-compressible blocks. Blocks whose contents can compress to 112 bytes or smaller can take advantage of this feature. When this feature is enabled, the contents of highly- compressible blocks are stored in the block "pointer" itself (a misnomer in this case, as it contains the compressed data, rather than a pointer to its location on disk). Thus the space of the block (one sector, typically 512 bytes or 4KB) is saved, and no additional i/o is needed to read and write the data block.