inode 是 UNIX 操作系统中的一种数据结构,其本质是结构体,它包含了与文件系统中各个文件相关的一些重要信息。在 UNIX 中创建文件系统时,同时将会创建大量的 inode 。通常,文件系统磁盘空间中大约百分之一空间分配给了 inode 表。
有时,人们使用了一些不同的术语,如 inode 和索引编号 (inumber)。这两个术语非常相似,并且相互关联,但它们所指的并不是同样的概念。inode 指的是数据结构;而索引编号实际上是 inode 的标识编号,因此也称其为inode 编号 或者索引编号。索引编号只是文件相关信息中一项重要的内容。下一个部分将介绍 inode 中的其他一些属性。
inode 表包含一份清单,其中列出了对应文件系统的所有 inode 编号。当用户搜索或者访问一个文件时,UNIX 系统通过 inode 表查找正确的 inode 编号。在找到 inode 编号之后,相关的命令才可以访问该 inode ,并对其进行适当的更改。
例如,使用 vi 来编辑一个文件。当您键入 vi <filename> 时,在 inode 表中找到 inode 编号之后,才允许您打开该 inode 。在 vi 的编辑会话期间,更改了该 inode 中的某些属性,当您完成操作并键入 :wq 时,将关闭并释放该 inode 。通过这种方式,如果两个用户试图对同一个文件进行编辑, inode 已经在第一个编辑会话期间分配给了另一个用户 ID (UID),因此第二个编辑任务就必须等待,直到该 inode 释放为止。
可以使用 df -k 查询
root@ubuntu:~# df -k
df: ‘/mnt/hgfs’: Protocol error
Filesystem 1K-blocks Used Available Use% Mounted on
udev 992620 4 992616 1% /dev
tmpfs 200668 1488 199180 1% /run
/dev/sda1 18469756 3958296 13550180 23% /
none 4 0 4 0% /sys/fs/cgroup
none 5120 0 5120 0% /run/lock
none 1003332 144 1003188 1% /run/shm
none 102400 36 102364 1% /run/user
ls -i
显示 inode 号
root@ubuntu:~# ls -i
267288 1 153647 1.txt 153646 herpets.txt 153648 my.txt 153651 pets.txt 153654 web.txt
281021 1n 153652 cats.txt 153649 html.txt 153635 nohup.out 153653 pet.txt