为什么要限制用户可以访问的 inode 数量?

spu*_*der 6 nfs inode quota

似乎可以在网络安装上设置用户可以消耗多少空间的配额。

# edquota ramesh

Disk quotas for user ramesh (uid 500):
  Filesystem           blocks       soft       hard     inodes     soft     hard
  /dev/sda3           1419352          0          0       1686        0        0
Run Code Online (Sandbox Code Playgroud)

您还可以对用户拥有的 inode 数量设置软限制和硬限制。

为什么您需要限制用户可以访问的 inode 数量?

用户是否仍然能够用 1 个非常大的文件填满磁盘?

sam*_*iam 9

您限制用户可以访问的 inode 数量的原因是,他们不会通过创建大量 0 字节文件而使整个系统耗尽 inode。

对于大多数 Linux 文件系统(例如 ext3 和 ext4),每个文件(包括设备文件)或目录都有一个inode —— 一个用于指向给定文件/目录的编号。如果系统耗尽了 inode,则硬盘有多少可用空间并不重要;在释放 inode 之前,不可能创建新文件。

要查看每个文件系统还剩下多少个 inode:

df -i
Run Code Online (Sandbox Code Playgroud)

文件系统具有的 inode 数由-i格式化文件系统时的参数决定。例子:

mkfs -t ext4 -i 1024 /dev/foo # One inode per 1024 bytes
mkfs -t ext4 -i 2048 /dev/foo # One inode per 2048 bytes
mkfs -t ext4 -i 8192 /dev/foo # One inode per 8192 bytes
Run Code Online (Sandbox Code Playgroud)

使用该-i 1024选项创建的文件系统的inode 数量将是使用该-i 8192选项创建的文件系统的八倍(假设两个文件系统的大小相同)。有时,特别是对于一些邮件服务器(使用“maildir”)或老式 Usenet spool,需要更多的 inode,因为这些用例会创建很多小文件。

请注意,某些 Linux 文件系统(例如 Reiserfs)能够动态分配 inode,并且不会在文件系统创建时创建所有 inode。

  • 为 inode 保留更多空间的文件系统将为文件保留更少的空间(我曾经有一个 Usenet spool 有这么多 inode,文件系统的空间比其他情况少 30%) (2认同)