linux中映射和软链接,Linux系统中的索引节点、硬链接和软链接

本文详细解析了Linux中的inode概念,区分了硬链接和软链接的工作原理,介绍了它们如何存储和管理文件信息,以及创建、删除操作对inode的影响。特别强调了硬链接与软链接的本质区别,以及在实际应用中的注意事项。
摘要由CSDN通过智能技术生成

一、inode:index node (索引节点)

1.Linux文件系统使用索引节点(inode)来记录文件信息,作用类似于Windows下的文件分配表。表中包含文件系统所有文件列表。

一个节点(索引节点)是一个表项,包含有关文件的信息(元数据)包括:

1.文件类型,权限,UID,GID

2.链接数(指向这个文件名路径名称的个数)

3.该文件的大小和不同的时间戳

4.指向磁盘上文件的数据块指针

5.有关文件的其他数据

也就是说,Linux系统中每个文件都有一个与众不同的标记,都有一个编号。

2.显示文件系统的索引节点方法:

ls -i , ll -i(如下图)

5eb79ab173a5fdb3e74e10867f6f0c92.png

3.在一个分区中inode节点编号是唯一的,如果相同则代表是同一个文件; 不在一个分区中,inode节点编号可能是相同的,但相同并不代表是同一个文件。每个分区中都有自己的一套编号,也就是inode表(inode table)

c1a251a314bac7173dbca091fea0d96f.png

4.每个文件在创建的时候,系统都会自动的给分配一个节点编号。但并不是可以无限索取的。可以通过df -i来查看大小 (df显示块即容量大小)。所以有时候系统显示磁盘已满,但查看空间还有,就有可能是inode耗尽导致的。

2689fb7a53abf144b2799c03ac18cf28.png

5.inode table表

元数据,放在inode表中,数据放在数据块中(block)

每个分区都有一个独立的inode表,文件在inode表中对应自己的元数据表,存放的是文件的元数据(大小、权限、时间戳...)和指针,都在节点条目(inode entrv)中显示。

7bfcc694a7e92ace8b4406bb3a852ad7.png

6.目录

文件引用一个inode号,

一个目录是目录下的文件名和inode号之间的映射

6c2c6eb98286cbaaa5df1cf1314917b3.png

7.cp和inode

分配一个空闲的inode号,在inode表中生成新条目,在目录中创建一个目录项,将名称与inode编号关联,拷贝数据生成新的文件。

8.rm和inode

链接数递减,从而释放的inode号可以被重用

把数据块放在空闲列表中

删除目录项

数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。

9.mv和inode

(1)如果mv命令的目标和源在相同的文件系统

用新的文件名创建对应新的目录项

删除旧目录条目对应的旧的文件名

不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!

(2)如果目标和源在一个不同的目标中,mv相当于cp和rm

二、硬链接

1.创建硬链接:ln filename [linkname]

0851b4b5e3ffc0685caf1ddb62ed0d18.png

2.然后查看下文件 aa 和 bb 是否相同

3b5d69b7d2d699b621a6e242c418f43c.png

ff2a37cf92fc84bea8fd0e09f695d3d4.png

通过实验得出结论:

1.创建硬链接会增加额外的记录项以引用文件.(多增加一条访问渠道)

2.硬链接是对应与同一个文件上的物理文件(就是说,一个文件多个名,对应的内容都是相同的。)

3.每个目录引用相同的indoe号

4.创建时硬链接数递增

5.删除文件时:

rm 命令递减计数的链接

文件要存在至少有一个链接数

当链接数为零时,该文件被删除。

6.不能跨越驱动器和分区(硬链接本质是一个文件多个名,在一个分区的不同文件可以,跨分区就不是一个文件了)

736504387a49d71c200bf07e8498148b.png

7.不允许对目录创建硬链接。这里注意,目录至少有两个硬链接,有隐藏的目录 “.”而且每创建一个子目录就会都一个硬链接数,因为子目录有“..”

4321987ae921d14090858b680fe36114.png

三、软链接(符号链接)

1.创建软链接:ln -s filename [linkname]

7dbbbdb1fd60bfd14f7e0c7211271679.png

2.在同一个分区下创建文件f1的软链接文件f2,通过观察二者的节点编号和元数据、时间戳都不同,所以软链接和原文件不是同一个文件。

532c202cbd385e0c6af875a35ccb0894.png

3.在不同分区下创建软链接,情况如下(一定要注意绝对路径和相对路径)

c94b6c4a337cf34fd59fe0c405e235c9.png

6bdce60e3c823f935f0cea86cf9675cd.png

注意:

软连接本质上不是一个文件(节点编号不一样),是指向到了f1.可以通过f11,f111访问f1 中的内容。

原文件f1一定要写绝对路径,或相对路径(相对于软连接文件路径,而不是相对于当前工作目录)

4.可以对目录创建软链接

78cf46da45ce7c665a485ee2639e64c0.png

结论:

1.软链接(符号)是一个文件指向另一个文件;

2.ls -l 显示连接的名称和引用文件

3.软链接(符号)的内容是它指向文件的内容

4.可以对目录进行软链接

5.可以跨分区对文件或目录进行软链接

6.指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值