Linux
為什麼 linux 發行版不預設安裝具有無限 inode 的 tmpfs?
根據這個答案,至少可以安裝帶有“無限”inode 的 tmpfs。
考慮這種特定的(出於範例目的而選擇的數字,我知道它們不現實)情況:
- tmpfs 分區被捲使用了 50%
- 90% 的數據是 inode(即 45% 的磁碟由 inode 使用,5% 由“真實”數據使用)
- tmpfs 已安裝
nr_inodes=1000
- 所有 1000 個 inode 都被目前寫入的 inode 佔用
這意味著 tmpfs 已滿 50%,而且任何寫入它的嘗試都將導致空間不足錯誤。
在我看來,設置
nr_inodes=0
(又名無限 inode)會使這種情況消失。
- 無限inode不是預設值有什麼原因嗎?
- 有什麼理由限製文件系統上的 inode 數量?
通常(例如:
ext2
、、、、)ext3
,文件系統可以容納的 inode 數量是在創建時設置的,因此沒有掛載選項可以解決它。ext4``ufs
一些文件系統像
xfs
inode 使用的空間比例是可調的,因此可以隨時增加。現代文件系統與文件系統可以儲存的文件數量類似
ZFS
或btrfs
沒有硬編碼限制,inode(或它們的等價物)是按需創建的。編輯:縮小更新問題的答案。
使用
tmpfs
,預設的 inode 數量被計算為對於大多數實際案例來說足夠大。此設置不是最佳的唯一情況是,如果在tmpfs
. 如果您在這種情況下,最佳做法是將nr_inodes
參數調整為一個足夠大的值,以使所有文件都適合但不使用0
(=無限)。tmpfs
文件指出這不應該是預設設置,因為非 root 使用者存在記憶體耗盡的風險:if nr_inodes=0, inodes will not be limited. It is generally unwise to mount with such options, since it allows any user with write access to use up all the memory on the machine; but enhances the scalability of that instance in a system with many cpus making intensive use of it.
但是,鑑於
tmpfs
預設情況下 RAM 使用限制為 RAM 的 50%,因此尚不清楚這是如何發生的:size: The limit of allocated bytes for this tmpfs instance. The default is half of your physical RAM without swap. If you oversize your tmpfs instances the machine will deadlock since the OOM handler will not be able to free that memory.
許多人會更關心預設記憶體量是否與他們的應用程序需求相匹配。