inode、软硬链接区分、ln命令

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、软硬链接区分、ln命令 每一个下一级目录的inode表放在上一级的目录的数据块中。

因此,我们可以看到Linux每次寻找一个文件或者目录需要经过很多inode表和数据块。这样很费时间,所以系统会帮我把我们访问过的路径缓存在内存中,这样就可以节约时间了。

三、inode结构

借用鸟哥画的inode结构示意图为例,这是以ext家族为对象画的。ext文件系统家族是Linux最常用,历史比较久远的文件系统。

inode、软硬链接区分、ln命令

我们知道一个数据块的大小只能为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号码的关联记录。inode、软硬链接区分、ln命令 可以看出1或者2都是找到real然后去读实际内容,因此任意删掉一条路径没有任何影响,这也就是硬链接。

注意:1.硬链接不能跨文件系

2.不能链接到目录。

2、软链接:

软链接其实就是windows操作系统里面的快捷方式,原文件不存在,这个快捷方式所指向的路径就不在了。如下图所示inode、软硬链接区分、ln命令 可以看到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

(1)
fighterfighter
上一篇 2016-08-02
下一篇 2016-08-02

相关推荐

  • Centos6.9 配置静态IP

    Centos6.9 配置静态IP修改步骤

    2018-03-26
  • 马哥教育网络班21期-第四周课程练习

    Do one thing at a time,and do well. 小僧近期忙的去尿尿的时间都要挤出来…..! 无人能理解 zZzz 复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 编辑/etc/group文件,添加组hadoop。 手动编辑/etc/pass…

    Linux干货 2016-07-29
  • 一、循环语句:for, while, until 循环执行:将某代码段重复运行多次重复运行多少次:循环次数事先已知循环次数事先未知有进入条件和退出条件 1.for……do……done for 变量 in 列表 ; do    循环体done 执行机制:依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中…

    Linux干货 2016-08-19
  • tcpdump输出详解

    在这里不得不再吐槽下国内整个IT粗糙浮躁,度娘下来的中文文档几尽抄袭~google下来的文档英文文档质量远高于国内中文文档.用ie或没有安装插件的浏览器访问,不然可能会有其它访问请求数据干扰分析 IP数据包结构 TCP数据包结构 // tcpdump需root权限 # tcpdump -x -i eth1 i…

    Linux干货 2015-04-15
  • class8 文本处理工具sed和vim编辑器

    一、处理文本的工具sed     Stream EDitor,  行编辑器     sed是linux上一款比较重要的流编辑器。     特点:一次处理一行内容,处理完成后,把缓冲区的内容送往屏幕。这样不断重复,直到文件末尾。 &…

    Linux干货 2016-08-11
  • Linux 第11&12天: Linux软件包管理

    Linux 第11&12天: Linux软件包管理      在系统管理中, 软件包的管理是最重要的, 是系统管理的基础,   本文主要是记录内容有: RPM二进制包的管理,YUM二进制包的管理, 源代码包的管理   软件运行环境API:Application Programming Interfac…

    Linux干货 2016-08-22