inode、硬链接与软链接

2017-05-25  本文已影响0人  jie0112

inode

1.理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。
2.操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
3.文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

inode(index node)表中包含文件系统所有文件列表
一个节点(索引节点)是在一个表项,包含有关文件的信息(元数据),包括:

文件类型,权限,UID,GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据


目录:

1.文件引用一个是inode号
2.是通过文件名来引用一个文件
3.一个目录是目录下的文件名和文件inode号之间的映射


cp和inode:
在CP的命令:分配一个空闲的inode号,在inode表中生成新条目;在目录中创建一个目录项,将名称与inode编号关联;拷贝数据生成新的文件。
rm和inode:
rm命令:链接数递减,从而释放的inode号可以被重用;把数据块放在空闲列表中;删除目录项;数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。
mv和inode:
1.如果mv命令的目标和源在相同的文件系统,作为mv命令:用新的文件名创建对应新的目录项;删除旧目录条目对应的旧的文件名;不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!2.如果目标和源在一个不同的文件系统,mv相当于cp和rm。

硬链接:

一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。
1.语法:
ln filename [linkname]
2.创建硬链接会增加额外的记录项以引用文件
3.本质是一个文件多个名称,所有属性完全相同(包括inode号)
硬链接不占多余的空间,不占用inode号
4.创建时链接数递增
5.硬链接不能跨分区、跨设备
6.存在对等关系,不存在依赖性
7.不能对目录来创建硬链接(不支持文件夹)
8.类似起到别名的效果,不过记录的是文件路径
9.硬链接的相对路径相对的是当前工作目录下的路径,不是连接文件的路径

软链接:

除了硬链接以外,还有一种特殊情况。文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链接"(soft link)或者"符号链接(symbolic link)。这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:"No such file or directory"。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。
1.语法:
ln -s filename [linkname]
2.一个符号链接指向另一个文件(相当于Windows里的快捷方式)
inode号不一样,链接数不增加。
3.ls -l的显示链接的名称和引用的文件
4.一个符号链接的内容是它引用文件的名称
5.可以对目录进行
6.可以跨分区
7.严重依赖于原始文件,
8.不是对等关系,
9.指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;
10.软链接的相对路径一定相对于软链接文件的路径而不是相对当前工作目录。

上一篇下一篇

猜你喜欢

热点阅读