Назад | Перейти на главную страницу

вывод cat / proc / sys / fs / inode-nr vs df -i

В чем разница между выводом

cat /proc/sys/fs/inode-nr

и

df -i

Оба задокументированы при возврате количества используемых inodes, но они возвращают явно не связанные числа.

$ 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 показывает данные об индексных дескрипторах в оперативной памяти (кеше ядра), сначала выделенных на данный момент, а затем свободных. Ядро использует inodes для многих вещей, а не только для файлов. Например, сетевые сокеты тоже идентифицируются индексными дескрипторами.

Видеть https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/sysctl/fs.txt :

Файл inode-nr содержит первые два элемента из состояния inode, поэтому мы перейдем к этому файлу ...

Inode-state содержит три фактических числа и четыре фиктивных. Фактические числа в порядке появления: nr_inodes, nr_free_inodes и preshrink.

Nr_inodes обозначает количество индексов, выделенных системой, это может быть немного больше, чем inode-max, потому что Linux выделяет им одну страницу за раз.

Nr_free_inodes представляет количество свободных индексных дескрипторов (?), А предварительное сжатие не равно нулю, когда nr_inodes> inode-max и системе необходимо сократить список индексных дескрипторов вместо того, чтобы выделять больше.

df -i показывает inodes на диске, поэтому все, что каждая файловая система может делать со своим конкретным набором inodes.

Таким образом, оба набора чисел всегда будут оставаться не связанными друг с другом.