Linux

cat /proc/sys/fs/inode-nr vs df -i 的輸出

  • July 1, 2021

輸出有什麼區別

cat /proc/sys/fs/inode-nr

df -i

兩者都記錄在返回正在使用的 inode 數量,但它們返回明顯不相關的數字。

$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
devtmpfs        954448    464  953984    1% /dev
tmpfs           956943      1  956942    1% /dev/shm
/dev/xvda1     1310720 272395 1038325   21% /
/dev/xvdb1     1966080  26278 1939802    2% /tmp
tmpfs           956943      1  956942    1% /hdd1/mnt/data
$ cat /proc/sys/fs/inode-nr
199563      122925

/proc/sys/fs/inode-nr顯示有​​關 RAM(核心記憶體)中 inode 的數據,首先是目前分配的,然後是空閒的。核心將 inode 用於許多事情,而不僅僅是文件。例如,網路套接字也由 inode 標識。

請參閱https://www.kernel.org/doc/Documentation/sysctl/fs.txt

文件 inode-nr 包含來自 inode-state 的前兩項,因此我們將跳到該文件…

Inode-state 包含三個實際數字和四個虛擬變數。實際數字按出現順序是 nr_inodes、nr_free_inodes 和 preshrink。

Nr_inodes 代表系統已分配的 inode 數量,這可能比 inode-max 略多,因為 Linux 一次為它們分配一頁。

Nr_free_inodes 表示空閒 inode 的數量 (?),當 nr_inodes > inode-max 並且系統需要修剪 inode 列表而不是分配更多時,preshrink 非零。

df -i顯示磁碟上的 inode,因此無論每個文件系統如何處理其特定的 inode 集。

因此,兩組數字將始終彼此無關。

引用自:https://serverfault.com/questions/970996