inode 的理解
1、inode是什么
inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。
df -h /dev/sda
可以查看磁盘的使用情况及inode数
2、linux文件存储的特点及工作原理
Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。表面上,用户通过文件名,打开文件。
ll -i 查看inode 号
创建目录时,默认会生成两个目录项:"."和".."。前者的inode号码就是当前目录的inode号码,等同于当前目录的"硬链接";后者的inode号码就是当前目录的父目录的inode号码,等同于父目录的"硬链接"。
实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
文件是由inode加block两部分组成
3、inode是由元数据组成
元数据的结构
stat命令:元数据
文件名,大小,时间戳,权限,属主、属组,对应的数据存储在哪些磁盘块上;
4、inode的大小
inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。
每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。
5、硬链接
硬链接就是inode相同,源文件和链接文件大小相同,相当于一个备份存储在另外一个地方
创建硬链接的方法
ln 源文件 目标文件
文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。
这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。
打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。因此,通常来说,系统无法从inode号码得知文件名。
硬链接创建的规则
不能对目录文件创建硬链接;
硬链接不能跨分区
创建硬链接会增加inode引用计数
6、软链接
软链接就是有点像windos中的快捷图标,它创建后文件大小很小,只是文件名的字节数,而原文才保留数据,才是文件的真正大小。
创建方法
ln -sv 源文件 目标文件
符号链接:
可以对目录创建
不受分区限制
对文件创建符号链接不会增加引用计数
7、文件的删除、复制、移动
文件被删除:inode被标记为空闲,此inode指向的磁盘块被标记为空闲; 如果inode被引用了多次,且此次删除未使得其引用计数降低为的话,这意味着文件被删除仅删除了一个访问路径; 文件复制:创建一个新文件,并原文件中数据在新文件指向的磁盘块中再写一次的过程; 文件移动: 在同一个分区移到:移动文件仅是改变了文件访问路径; 跨分区移到:在新分区创建文件,把数据复制过去,删除原分区数据;
转载于:https://blog.51cto.com/1983939925/1541218