您的位置:首页 > 运维架构 > Linux

Linux系统中的索引节点、硬链接和软链接

2016-07-30 18:26 295 查看
一、inode:index node (索引节点) 1.Linux文件系统使用索引节点(inode)来记录文件信息,作用类似于Windows下的文件分配表。表中包含文件系统所有文件列表。 一个节点(索引节点)是一个表项,包含有关文件的信息(元数据)包括: 1.文件类型权限,UID,GID 2.链接数(指向这个文件名路径名称的个数) 3.该文件的大小和不同的时间戳 4.指向磁盘上文件的数据块指针 5.有关文件的其他数据 也就是说,Linux系统中每个文件都有一个与众不同的标记,都有一个编号。
2.显示文件系统的索引节点方法: ls -i , ll -i (如下图)

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


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

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

6.目录 文件引用一个inode号, 一个目录是目录下的文件名和inode号之间的映射

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

8.rm和inode
链接数递减,从而释放的inode号可以被重用
把数据块放在空闲列表中
删除目录项
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。

9.mv和inode
(1)如果mv命令的目标和源在相同的文件系统
用新的文件名创建对应新的目录项
删除旧目录条目对应的旧的文件名
不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
(2)如果目标和源在一个不同的目标中,mv相当于cp和rm

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

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



通过实验得出结论: 1.创建硬链接会增加额外的记录项以引用文件.(多增加一条访问渠道) 2.硬链接是对应与同一个文件上的物理文件(就是说,一个文件多个名,对应的内容都是相同的。) 3.每个目录引用相同的indoe号 4.创建时硬链接数递增 5.删除文件时: rm 命令递减计数的链接 文件要存在至少有一个链接数 当链接数为零时,该文件被删除。 6.不能跨越驱动器和分区(硬链接本质是一个文件多个名,在一个分区的不同文件可以,跨分区就不是一个文件了)

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


三、软链接(符号链接) 1.创建软链接:ln -s filename [linkname]

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

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



注意: 软连接本质上不是一个文件(节点编号不一样),是指向到了f1.可以通过f11,f111访问f1 中的内容。 原文件f1一定要写绝对路径,或相对路径(相对于软连接文件路径,而不是相对于当前工作目录)4.可以对目录创建软链接

结论: 1.软链接(符号)是一个文件指向另一个文件; 2.ls -l 显示连接的名称和引用文件 3.软链接(符号)的内容是它指向文件的内容 4.可以对目录进行软链接 5.可以跨分区对文件或目录进行软链接 6.指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息