面试官:说说你对Linux系统中inode的理解

小微 科技面试官:说说你对Linux系统中inode的理解已关闭评论153字数 1443阅读模式
摘要概述Linux中,一切皆文件,而每一一个文件都有一个inode,在将inode关联到文件后系统将通过inode号来识别文件,而不是文件名。并且访问文件时将先找到inode,通过in...

概述

Linux中,一切皆文件,而每一个文件都有一个inode,在将inode关联到文件后系统将通过inode号来辨认文件,而不是文件名。并且走访文件时将先找到inode,通过inode中记录的block位置找到该文件。文章源自微观生活(93wg.com)微观生活-https://93wg.com/3839.html


1 、硬链接文章源自微观生活(93wg.com)微观生活-https://93wg.com/3839.html

尽管每一个文件都有一个inode,然而存在一种可能:多个文件的inode相同,也就即inode号、元数据、block位置都相同,这是一种什么样的情况呢?能够想象这些inode相同的文件使用的都是同一条inode记录,所以代表的都是同一个文件,这些文件所在目录的data block中的inode指针目的地都是同样的,只无非各指针对应的文件名互不相同而已。这类inode相同的文件在Linux中被称为\"硬链接\"。文章源自微观生活(93wg.com)微观生活-https://93wg.com/3839.html

硬链接文件的inode都相同,每一个文件都有一个\"硬链接数\"的属性,使用ls -l的第二列就是被硬链接数,它表示的就是该文件有几个硬链接。文章源自微观生活(93wg.com)微观生活-https://93wg.com/3839.html

例如下图描写的是dir1目录中的文件name1及其硬链接dir2/name2,右侧分别是它们的inode以及datablock。这里也看出了硬链接文件之间独一不同的就是其所在目录中的记录不同。注意下图中有一列Link Count就是标记硬链接数的属性。文章源自微观生活(93wg.com)微观生活-https://93wg.com/3839.html

每一创立一个文件的硬链接,实质上是多一个指向该inode记录的inode指针,并且硬链接数加1。文章源自微观生活(93wg.com)微观生活-https://93wg.com/3839.html

删除了文件的实质是删除了该文件所在目录data block中的对应的inode指针,所以也是减少硬链接次数,因为block指针是存储在inode中的,所以不是真的删除了数据,如果仍有其他指针指向该inode,那么该文件的block指针依然是可用的。当硬链接次数为1时再删除了文件就是真的删除了文件了,此时inode记录中block指针也将被删除了。文章源自微观生活(93wg.com)微观生活-https://93wg.com/3839.html

不能跨分区创立硬链接,由于不同文件系统的inode号可能会相同,如果允许创立硬链接,复制到另外一个分区时inode可能会以及此分区已使用的inode号冲突。文章源自微观生活(93wg.com)微观生活-https://93wg.com/3839.html

硬链接的创立办法: ln file_target link_name 。文章源自微观生活(93wg.com)微观生活-https://93wg.com/3839.html


2 、软链接文章源自微观生活(93wg.com)微观生活-https://93wg.com/3839.html

软链接就是字符链接,链接文件默许指的就是字符链接文件,使用\"l\"表示其类型。

硬链接不能跨文件系统创立,否则inode号可能会冲突。于是实现了软链接以便跨文件系统树立链接。既然是跨文件系统,那么软链接必需得有自己的inode号。

软链接在功能上等价与Windows系统中的快捷方式,它指向原文件,原文件破坏或消失,软链接文件就破坏。可以认为软链接inode记录中的指针内容是目标路径的字符串。

创立方式: ln –s source_file softlink_name ,记住是source_file<--link_name的指向关系。

查看软链接的值: readlink softlink_name

在设置软链接的时候,source_file尽管不请求是绝对路径,但建议给绝对路径。


3、inode大小以及划分

inode大小为128字节的倍数,最小为128字节。它有默许值大小,它的默许值由/etc/mke2fs.conf文件中指定。不同的文件系统默许值可能不同。

find / -ignore_readdir_race -inum 2 -ls

从结果中可见,除了了根的Inode号为2,还有几个文件的inode号也是 2,它们都属于独立的文件系统,有些是虚拟文件系统,如/proc以及/sys。

以上就是微观生活(93wg.com)关于“面试官:说说你对Linux系统中inode的理解”的详细内容,希望对大家有所帮助!

继续阅读
 
小微
  • 版权声明: 本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:81118366@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
  • 转载请务必保留本文链接:https://93wg.com/3839.html