inode

✍ dations ◷ 2025-08-14 12:05:33 #文件系统,Unix

inode(index node)是指在许多“类Unix文件系统”中的一种数据结构,用于描述 文件系统对象(包括文件、目录、设备文件、socket、管道, 等等)。每个inode保存了 文件系统对象数据 的属性和磁盘块位置。文件系统对象属性 包含了各种元数据(如:最后修改时间) ,也包含用户组(owner )和权限数据。

文件夹是inode的名字。一个文件夹包含自身节点,父节点和每个子节点。

Unix先驱丹尼斯·里奇说,inode这个命名的来源可能是文件系统的存储组织为一个扁平数组,分层目录信息使用一个数作为文件系统这个扁平数组的索引值(index)。

文件系统创建(格式化)时,就把存储区域分为两大连续的存储区域。一个用来保存文件系统对象的元信息数据,这是由inode组成的表,每个inode默认是256字节或者128字节。另一个用来保存“文件系统对象”的内容数据,划分为512字节的扇区,以及由8个扇区组成的4K字节的块。块是读写时的基本单位。一个文件系统的inode的总数是固定的。这限制了该文件系统所能存储的文件系统对象的总数目。典型的实现下,所有inode占用了文件系统1%左右的存储容量。

文件系统中每个“文件系统对象”对应一个“inode”数据,并用一个整数值来辨识。这个整数常被称为inode号码(“i-number”或“inode number”)。由于文件系统的inode表的存储位置、总条目数量都是固定的,因此可以用inode号码去索引查找inode表。

Inode存储了文件系统对象的一些元信息,如所有者、访问权限(读、写、执行)、类型(是文件还是目录)、内容修改时间、inode修改时间、上次访问时间、对应的文件系统存储块的地址,等等。知道了1个文件的inode号码,就可以在inode元数据中查出文件内容数据的存储地址。

文件名与目录名是“文件系统对象”便于使用的别名。一个文件系统对象可以有多个别名,但只能有一个inode,并用这个inode来索引文件系统对象的存储位置。

Linux系统使用struct inode作为数据结构名称。BSD派生的系统,使用vnode名称,其中v表示“virtual file system”。

POSIX标准强制规范了文件系统的行为。每个“文件系统对象”必须具有:

使用stat系统调用可以查询一个文件的inode号码及一些元信息。

系统管理员使用的很多程序往往用inode号码来替代文件名来访问文件系统。例如磁盘完整性检查程序fsckpfiles。因此,inode号码与文件全路径名的互查是需要的。可以用find带参数选项-inumls带参数选项(-i做到。

文件系统可能会用尽inode。这导致文件系统还有空闲的存储空间,但已经没有空闲的inode可供使用了。例如,一个电子邮件服务器可能会被大量的小文件用尽所有inode,但是却没有填满文件存储空间。

现代的文件系统,如JFS和XFS,能够动态地增加inode,因此不会用尽inode。

相关

  • 雷蒙德·戴维斯雷蒙德·戴维斯(英语:Raymond "Ray" Davis, Jr.,1914年10月14日-2006年5月31日),美国化学、物理学家,戴维斯、小柴昌俊与里卡尔多·贾科尼,共同获颁2002年诺贝尔物理学奖,戴维斯与小
  • 美国历史年表此处收列了美国历史主要事件的时间表。前哥伦布时期 | 美国殖民地历史 | 1776年-1789年 | 1789年-1849年 | 1849年-1865年 | 1865年-1918年 | 1918年-1945年 | 1945年-1964年 |
  • 驯化驯化(英语:Domestication)是指一种生物的成长与生殖逐渐受另一种生物利用与掌控的过程,例如人类栽培各种农作物、畜牧,以及切叶蚁驯养真菌。人类驯化动植物的目的主要包括作为食
  • 北美空防司令部坐标:38°42′00″N 104°48′00″W / 38.70000°N 104.80000°W / 38.70000; -104.80000北美空防司令部(英语:North American Aerospace Defense Command,简称NORAD)是一个由美
  • 革命团体本表所列为中国清朝末期至辛亥革命前后在大清国境内外成立的旨在推翻清朝统治的革命团体。
  • 尼基塔·米亥科夫金狮奖1992年 《蒙古精神》戛纳影展评审团大奖1994年 《烈日灼身》尼基塔·谢尔盖耶维奇·米亥科夫(俄语:Никита Сергеевич Михалков,转写:Nikita Serge
  • 叙利亚武装力量叙利亚军事历史 第一次中东战争 1949年3月叙利亚政变 水战争 1966年叙利亚政变 第三次中东战争 埃以消耗战争 黑色九月事件 赎罪日战争 叙利亚伊斯兰起义 黎巴嫩内战 第五
  • 史泰登岛史泰登岛(英语:Staten Island),又译为史丹顿岛、斯塔滕岛或史坦顿岛,是美国纽约市下辖的五个行政区之一,并与纽约州下辖的里士满县(Richmond County)行政范围完全重叠。相对于纽约市
  • 塔尔萨塔尔萨(英语:Tulsa,/ˈtʌlsə/,台译土尔沙)是美国俄克拉荷马州东北部的塔尔萨县首府,也是该州人口第二多城市,2006年人口387,807,2013年估计人口398,121。塔尔萨附近是阿肯色河。这
  • 贝娜齐尔·布托遇刺案贝娜齐尔·布托遇刺案发生于2007年12月27日,巴基斯坦前总理暨反对党巴基斯坦人民党领袖贝娜齐尔·布托于拉瓦尔品第参加竞选集会时被一名枪手开枪击中颈部和胸部,袭击者随后引