inode工作原理及软连接,硬链接
inode:
在linux文件系统中,不管什么类型的文件,保存在磁盘分区中时,系统都会分配一个编号,叫做索引节点index node,简称inode
inode里面存储了文件的很多参数:
文件类型,权限。UID,GID,属主,属组
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据指针
....
在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块,系统获取文件内容过程如下:
inode工作原理:
文件有元数据和数据内容组成,元数据存放在inode表里,而数据内容则是存放在数据块中
而在inode表里除了元数据,还有指针,指针对应的就是数据块的路径
直接指针:直接指针有12个,分别指向12个数据块,数据块一般默认4k,所以直接指针指向的
是小于12*4k=48k的文件
间接指针:在inode表里,直接指针过后就是间接指针,间接指针指向一个数据块,但是此数据块
不存储数据,而是作为一个数据块指针,每个指针大小为4个字节,所以一个数据块里面可存 放4096/4=1024个数据块指针,同样每个数据块指针会指向一个4k大小数据块,最后间接指针
能够指向的文件大小为1024*4k=4096k=4M
双重间接指针:在间接指针后,双重间接指针可以和间接指针一样理解,只是把最后指向的存放内容的 数据块作为数据块指针,这样能够指向的文件大小为1024*1024*4k=4G
后面依次类推就可以了,原理一样
硬链接:可以理解为一个文件的不同的名字
特性:
1.硬链接文件有相同的inode及数据块(date block)
2.只能对已存在的文件进行创建
3.删除一个硬链接文件不会影响其他有相同inode号的文件
4.不能跨文件系统进行硬链接的创建
5.不能对目录进行创建,只可对文件创建
6.创建硬链接会增加链接次数,而删除链接则会减少链接次数
图一
图二
软链接:可以理解为一个文件的快捷方式
特性:
软链接文件有自己的文件属性及权限等等
2. 可对不存在的文件或目录创建软连接
3. 软连接可跨文件系统创建
4. 创建软连接时,链接次数不会增加
5. 删除软链接文件并不影响源文件,但是如果源文件被删除了,则其软链接文件变红,内容无法访问
文件访问图示:
总结下硬链接和软连接文件的区别:
1.源文件和硬链接文件inode号相同,是同一个文件,只不过文件名不一样,所以大小属性等信息都一样
而源文件与软链接文件inode号不同,是两个文件,所以大小,属性之类都不相同
2.查看文件详细属性时可知,软连接注明了是链接文件(例c ->b),而硬链接文件没有,所以我们可以 认为链接文件和源文件是完全平等的关系,而软连接可以理解为是源文件的快捷方式
3. 链接文件的数目变更,软链接文件的链接次数不会变化,而硬链接文件的链接次数会随之变化
4.软连接不受文件系统的限制,硬链接只能在同一文件系统
5.当源文件从一个目录移动到其他目录中时,访问硬链接文件不受影响,访问软链接文件会报错