Inode的理解与补充

对于刚开始学习Linux的人来说inode总是那么的懵懵懂懂。本文主要来分享一下我对inode的理解,以及在实践当中遇到的一个关于inode号的小问题。

一、什么是inode

inode是指在许多“类Unix文件系统”中的一种数据结构。每个inode保存了文件系统中的一个文件系统对象(包括文件、目录、设备文件、socket、管道, 等等)的元信息数据,但不包括数据内容或者文件名——维基百科。

在Linux中有一个重要的哲学思想就是“一切皆文件”,而一个文件是要保存在磁盘上的,更直观的来说,比如一个文本文件,在GUI下我们要双击打开它,在CLI下我们需要用cat等命令查看它,但是我们看到的都是它的内容,那它自身的属性信息存放在哪呢?没错,就是放在inode里。

这要从磁盘的区域划分说起,拿到一块新硬盘的时候我们通常都要先格式化才能使用,那什么是“格式化”呢?通俗一点来讲就是将一块磁盘打上一个个的小格子,类似于格子状的信纸。其中有两个主要的“大格子”:一个叫元数据区,另一个叫数据存储区。数据存储区就是存数据的了,那什么是元数据呢?其实就是一个文件的inode号、权限、属主属组、大小、时间戳、文件所占的磁盘块、扩展属性等等,但要记住inode中是没有文件名的。我们使用stat FILENAME可以查看一个文件的元数据。

二、为什么要有inode

对于计算机来说,它记忆一个文件的时候使用数字要比使用文字轻松多了,所以计算机就是靠inode号来标识每一个文件的,同一个文件系统中inode号是唯一确定的,这样也就可以唯一确定一个文件了。

三、文件名的存放

我们刚才说了inode中什么都有就是没有文件名,那文件名到底在哪呢?是在目录中。Linux中一切皆文件,目录也是文件(其实Windows中文件夹也是个文件)。目录文件的结构是一系列目录项的列表。每个目录项,由两部分组成:所包含文件或目录的名字,以及该文件或目录名对应的inode号码。创建一个目录需要执行三个步骤:

1、在其“父目录文件”中增加一个条目;

2、分配一个inode;

3、分配一个存储块,用来保存当前被创建目录包含的文件与子目录。

被创建的“目录文件”中自动生成两个子目录的条目,名称分别是:“.”和“..”。前者与该目录具有相同的inode号码,因此是该目录的一个“硬链接”。后者的inode号码就是该目录的父目录的inode号码。所以,任何一个目录的"硬链接"总数,总是等于它的子目录总数(含隐藏目录)加2。即每个“子目录文件”中的“..”条目,加上它自身的“目录文件”中的“.”条目,再加上“父目录文件”中的对应该目录的条目。

此/下所有文件都为目录,可见/的硬链接数为24,/下一共有22个目录,至于wc -l为23是因为显示时有一行total。

四、分享发现的一个小问题

我们发现有几个目录的inode号是相同的,比如usr、var、boot,我们不是说inode号是计算机识别文件的唯一标识吗,inode号相同是否意味着这几个目录都是同一个文件呢?答案是否定的,它们不是同一个文件。因为inode唯一对应一个文件或者目录的条件是:建立在“同一个FILE SYSTEM”上,不同分区之间就是不同的FILE SYSTEM(据说LVM可以做到同一个分区划分不同FILE SYSTEM,但这是后话了),所以不同FILE SYSTEM里面可以存在同号码的INODE,所以它们就是不同的几个文件了。上图中inode号相同的目录是划分在了单独的文件系统中。

好了希望这篇文章能够给您带来帮助,敬请各位看官提出此文章的不当之处,拜谢!

PS:今天看了一篇关于亚投行的文章,感觉AIIB的建立只证明了一点:天下熙熙,皆为利来;天下攘攘,皆为利往。

时间: 2024-08-07 05:00:37

Inode的理解与补充的相关文章

Linux 下inode的理解

转自: http://www.ruanyifeng.com/blog/2011/12/inode.htmlhttp://blog.s135.com/post/295/ http://hi.baidu.com/leejun_2005/blog/item/d9aa13a53b3af6e99152ee7e.html 一.inode是什么? 理解inode,要从文件储存说起.文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统

【转载】Linux的inode的理解

本文转在是博主为了以后温习.请访问原文链接 http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html 一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block).这种由

Linux中iNode的理解用法

一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block).这种由多个扇区组成的"块",是文件存取的最小单位."块"的大小,最常见的是4KB,即连续八个 sector组成一个 block. 文

Linux的inode的理解

http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html 文件名 -> inode -> device block 转自:http://www.ruanyifeng.com/blog/2011/12/inode.htmlhttp://blog.s135.com/post/295/ http://hi.baidu.com/leejun_2005/blog/item/d9aa13a53b3af6e99152ee7e.html 一.in

linux中inode的理解

一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block).这种由多个扇区组成的"块",是文件存取的最小单位."块"的大小,最常见的是4KB,即连续八个 sector组成一个 block. 文

Linux下对于inode的理解

0x01 什么是inode 文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector),每个扇区储存512字节: 操作系统读取硬盘时,不会一个个扇区地读取,这样效率低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block).这种由扇区组成的块是文件存储的最小单位,块的大小,最常见的是4kb,即连续8个Sector组成一个Block: 文件数据存储在块中,显然,还必须找一个地方存储文件的元信息,比如文件的创建者,文件的创建日期,文件的大小等.这种存储文件元信息的区域就叫做

Linux的inode的理解(转)

文件名 -> inode -> device block 转自:http://www.ruanyifeng.com/blog/2011/12/inode.htmlhttp://blog.s135.com/post/295/ http://hi.baidu.com/leejun_2005/blog/item/d9aa13a53b3af6e99152ee7e.html 一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(

Linux inode的理解

描述:     一:inode是什么? 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(即0.5KB). 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block).这种由多个扇区组成的"块",是文件存取的最小单位."块"的大小,最常见的是4KB,即连续八个 sector组成一个 block. 文件数据都储存在"

理解inode 以及 软链接和硬链接概念区分

inode简单理解 本文来源自网络文章,并针对文章内容加以批注和修改.希望能帮到你! 一. 磁盘设备 说到inode,首先必须要提及下<操作系统>中磁盘存储器的管理一节.磁盘设备是一种相当复杂的机电设备(比较详细的介绍可以参考blog硬盘内部硬件结构和工作原理详解 ). 磁盘设备可以包括一个或多个物理盘片,每个磁盘片分一个或两个存储面(如图(a)所示).每个磁盘面被组织成若干个同心环,这种环称为磁道track,各磁道之间留有必要的间隙.每条磁道又被逻辑上划分成若干个扇区sectors.在不同扇