Inode 和 Linux 文件系统
Linux 文件系统非常复杂,很难理解,尤其是当您深入了解数据和元数据时。每次运行命令ls
并查看输出(列出的文件、权限、帐户所有权等)时,请理解您看到的文件的数据存储在与文件本身不同的某个地方,必须调用。inode 在幕后努力工作,所以您不必这样做。让我们看看 inode 到底是什么以及它为我们做了什么。
什么是 inode?
根据定义,inode 是一个索引节点。它充当给定文件系统上特定元数据的唯一标识符。每个元数据都描述了我们所认为的文件。没错,inode 在每个文件系统上独立运行。当您意识到每个 inode 都存储在一个公共表中时,就会感到困惑。简而言之,安装到计算机上的每个文件系统都有自己的 inode。inode 编号可能被多次使用,但永远不会被同一个文件系统使用。文件系统 ID 与 inode 编号相结合,创建唯一的标识标签。
有多少个 inode?
如果您不擅长数学,您可能希望跳过本节。每个系统上都有许多 inode,并且有几个数字需要注意。首先,也是不太重要的,理论上的最大 inode 数量等于 2^32(大约 43 亿个 inode)。其次,也是更为重要的,是您系统上的 inode 数量。通常,inode 的比例为 1:系统容量的 16KB。显然,每个系统都不同,因此您需要自己进行计算。
高级用法
对于那些讨厌数学的人来说,有一个好消息:“有一个命令可以做到这一点。”要检查系统上的 inode 数量,您可以将选项-i
与df
命令一起使用,如下所示:
[tcarrigan@rhel ~]$ df -i /dev/sda1
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 524288 312 523976 1% /boot
从上面的命令语法和输出可以看出,我们df -i
在文件系统上运行/dev/sda1
。此文件系统上共有 524,288 个 inode,其中只有 312 个被使用(约 1%)。
文件级 inode
我们还可以查看特定文件的 inode 编号。为此,我们ls -i
对所需文件使用该命令。例如:
[tcarrigan@rhel my_articles]$ ls -i Creating_volume_groups
1459027 Creating_volume_groups
该文件的 inode 编号为1459027。
目录级 inode
就像文件一样,我们也可以看到目录的 inode。为此,我们ls -i
再次使用该命令并添加一些附加选项。例如:
[tcarrigan@rhel article_submissions]$ ls -idl my_articles/
352757 drwxrwxr-x. 2 tcarrigan tcarrigan 69 Apr 7 11:31 my_articles/
You can see that we used -i
(inodes) as well as -l
(long format) and -d
(directory). These flags present us with a plethora of information about the my_articles directory, including inode number, permissions, ownership, etc.
Summary
Inodes are a great place to start if you are interested in learning more about filesystems and their structures. How the smallest units of data are labeled and indexed is important information to know. Some far more advanced operations can be done concerning inodes. For example, you can open an inode and read the contents on the file. This ability gives you an even deeper look into what metadata is stored there. Hopefully, this high-level look provides you with a baseline for your inode exploration.
[ Free online course: Red Hat Enterprise Linux technical overview. ]