inode、软硬链接区分、ln命令
一、inode
inode记录的是文件的属性及文件实际放在那块数据块中的。inode包含以下数据:
1. 该文件的可被访问的权限(read/write/excute)
2. 该文件的属主、属组(owner、group)
3. 该文件的大小
4. 该文件创建或者状态改变的时间(Ctime)
5. 最近一次读取时间(atime)
6. 最近一次修改时间(mtime)
7. 定义文件特性的标志(flag),如SetUID等
8. 该文件内容真实的指向(pointer)
实际在我们进行分区操作的时候就讲inode的大小固定,固定为128bytes,并且每个文件都会仅仅占用一个inode,因此一个文件能存放多少文件和inode有关。
注意:一个分区不能存放文件,不仅仅是该分区容量满啦,还有可能是该分区的inode个数满啦。使用df -i 可以查看具体inode的个数
[root@local usr]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda2 2580480 65924 2514556 3% / tmpfs 125517 1 125516 1% /dev/shm /dev/sda1 51200 38 51162 1% /boot
二、inode对文件内容进行指向
每个inode里面存放了,一个文件的真实内容所在的数据库位置,系统读取一个文件内容时,先会读取inode里面的权限和用户是否吻合,然后在开始读取所指向的数据块的内容。情况如下图 每一个下一级目录的inode表放在上一级的目录的数据块中。
因此,我们可以看到Linux每次寻找一个文件或者目录需要经过很多inode表和数据块。这样很费时间,所以系统会帮我把我们访问过的路径缓存在内存中,这样就可以节约时间了。
三、inode结构
借用鸟哥画的inode结构示意图为例,这是以ext家族为对象画的。ext文件系统家族是Linux最常用,历史比较久远的文件系统。
我们知道一个数据块的大小只能为1k、2k、4k。可是我们存放的文件内容远远大于一个数据块的容量。因此,我们就需要多个数据块,但是存放在多个数据块后,系统如何能够调用相应的数据块。因此出现了前面的inode,它出现的目的就是帮系统快速的识别和分类相应的数据块。
同时,我们也知道inode表放在数据块中,一个数据块不仅要存放inode表还要存放其他数据,因此光一个数据块的inode肯定不够,所以诞生了间接inode,双间接,三间接。
以ext家族1kb数据块为例,一个inode能12个直接指向数据块:12×1k=12k,也是就记录12条信息。
间接指向:256×1k=256k,也就是256条记录。
双间接256×256×1k=65536K=64M ,也就是65536条记录。
三间接指向为:256×65536K=16777216K=8G,也就是16777216条记录。 总额就是将三者相加就是16G。
四、软硬链接的区别
1.硬链接:
就是在目录下新建一条文件名链接到某inode号码的关联记录。 可以看出1或者2都是找到real然后去读实际内容,因此任意删掉一条路径没有任何影响,这也就是硬链接。
注意:1.硬链接不能跨文件系
2.不能链接到目录。
2、软链接:
软链接其实就是windows操作系统里面的快捷方式,原文件不存在,这个快捷方式所指向的路径就不在了。如下图所示 可以看到1指向2再指向real再指向实际内容。1就是2的软链接,2以后的路要是断了,1也访问不到实际内容
五、ln
ln这个命令就是用来实现软、硬链接的命令。
用法:1.创建一个硬链接
[root@local tmp]# ln test.txt test1.txt [root@local tmp]# ll total 4 drwxr-xr-x. 3 root root 4096 Jul 29 12:34 test1 -rw-rw-r--. 2 gentoo gentoo 0 Jul 29 09:28 test1.txt -rw-rw-r--. 2 gentoo gentoo 0 Jul 29 09:28 test.txt
可以看到硬链接所有属性都是和原来的文件一样。
2.创建一个软链接
[root@local tmp]# ln -s test.txt test2.txt [root@local tmp]# ll total 4 drwxr-xr-x. 3 root root 4096 Jul 29 12:34 test1 -rw-rw-r--. 2 gentoo gentoo 0 Jul 29 09:28 test1.txt lrwxrwxrwx. 1 root root 8 Jul 30 05:44 test2.txt -> test.txt -rw-rw-r--. 2 gentoo gentoo 0 Jul 29 09:28 test.txt
可以发现所有的信息都改变了。
原创文章,作者:fighter,如若转载,请注明出处:http://www.178linux.com/26994