文件系统之inode和软硬链接

看了好几篇博客都没看懂inode软硬连接到底是个什么鬼,可能是大佬的博客太高深莫测,然后突然开窍......

目录

一、文件和硬盘

二、inode

三、硬链接

四、软链接

五、区分软硬链接


一、文件和硬盘

1.硬盘的最小存储单位叫扇区,每个扇区512字节。

2.文件是存储在硬盘上的,我们通过系统调用读取文件其实是在读取硬盘,而操作系统读取硬盘时并不会一个扇区一个扇区读取,这样太慢了(它才没有那么傻),事实上,操作系统会一次性的读取多个连续的扇区,这种由多个扇区组成的东西叫做块,一般情况下,一个块由8个扇区组成。

3.文件的内容都存在这样的块中,那么还需要一个东西来存储文件的属性信息,比如文件大小,文件的创建时间修改时间等等。 而这个存储文件属性信息的地方就叫做inode。

4.操作系统将硬盘分成两部分:一部分是数据区,用于存储文件数据,另一部分叫inode区,用于存储文件属性信息。

二、inode

上面说了,inode其实是存储文件属性信息的区域,那inode里面都有什么呢?

1.查看inode信息

●可以通过stat命令查看文件的inode信息:

stat命令可以查看的文件信息:

- File:显示文件名 
- Size:显示文件大小 
- Blocks:文件使用的数据块总数 
- IO Block:IO块大小 
- regular file:文件类型(常规文件) 
- Device:设备编号 
- Inode:Inode号码 
- Links:硬链接数 
- Access:文件的读写执行权限 
- Gid、Uid:文件所有权的所属组Group_id和拥有着User_id。
-Access Time:文件的访问时间。当文件内容被访问时,更新这个时间。 
-Modify Time:表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。 
-Change Time:表示文件的状态时间,当文件的属性被修改时,更新这个时间,例如文件的链接数,大小,权限等。

 

这么看来,除了文件数据,其他与文件有关的信息都存放在inode中。

●通过ls -l命令查看文件的属性信息:

共7列:从左到右分别为:读写执行权限 硬链接数 文件所有者 组 大小 最后修改时间。

2.inode大小:每个inode节点的大小一般是12或256个字节。inode节点数在硬盘初始化时就已经确定,一般是每1kb/2kb就设置一个inode。

●df-i:查看每个硬盘分区inode总数和已经使用的数量

●查看每个inode节点的大小:sudo dumpe2fs -h /dev/hda |grep "Inode size"(一般为256或128)

3.inode号码:通过ls -i 文件名来查看文件的inode号码

注意:有一个误区是认为操作系统是通过文件名区分不同文件的,其实并不是这样,操作系统是通过inode号码来区分不同的文件的。

4.创建一个新文件主要有一下4个操作: 


1>存储属性 :内核先找到一个空闲的i节点(这里是520096),内核把文件信息记录到其中。

2> 存储数据 :该文件需要存储在三个磁盘块,内核找到了三个空闲块:300,500,800。将内核缓冲区的第一块数据复制到300,下一块复制到500,以此类推。

3>记录分配情况文件内容按顺序300,500,800存放。

4> 添加文件名到目录 :新的文件名abc。内核将入口(263466,abc)添加到目录文件,文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来。

5.打开一个文件有3步:

1>找到该文件名对应的inode号码。

2>通过inode号码,获取inode信息。

3>根据inode信息,找到文件所在块,读出数据。

三、硬链接

1.什么是硬链接?

●正常情况下,文件名和inode号码是一一对应的关系。

●我们看到,真正找到磁盘上文件的并不是文件名,而是inode。其实在linux中可以让多个文件名对应于同一个 inode。 

●也就是说,可以用不同文件名访问相同的内容,对文件内容修改会影响所有的文件名,但是删除一个文件名并不影响其他文件名的访问。这种情况就叫硬链接。

2.创建硬链接:

ln 源文件 目标文件

test1与test2的inode号码相同,都指向同一个inode。inode信息中有一项叫做链接数,记录指向该inode的文件名总数,这时就会增加1。删除一个文件名,就会使得inode节点中的链接数减1。当减到0,系统就会回收这个inode号码,以及对应block区域。

创建目录时,默认会生成"."和".."。一个目录的"硬链接"总数,总是等于2加上它的子目录总数。

3.硬链接有点像我们电脑上的快捷方式

四、软链接

1.什么是软链接?

       文件A和文件B的inode号码不一样,但是文件A的内容是文件B的路径。这时通过文件A和B都可以访问文件B,这时,文件A就称为文件B的"软链接"。

      也就是说,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会出错。文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会变。
2.创建软链接:ln -s命令

  ln -s 源文文件或目录 目标文件或目录

 

五、区分软硬链接

●区分软连接和硬链接最好的方式就是看文件有无独立inode。

●硬链接是通过inode引用另外一个文件,软链接是通过名字引用另外一个文件,


 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值