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 10:52
下一篇 2016-08-02 10:52

相关推荐

  • vim的总结、练习和周期性任务

    vim:VI的增强版,是一款可视化功能非常强大的文本编辑器,属于全屏编辑器。 vim:使用方法: 命令格式:    ~]#vim [options] [file ..]      选项:        +#:打开文件后,直接让光标处于第#行首;   …

    Linux干货 2017-08-14
  • 数据库存储引擎—InnoDB

    MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

    Linux干货 2018-02-22
  • RAID and LVM

    RAID          Redundant Arrays of  inexpensive(Independent)Disks,RAID:容错式廉价磁盘阵列,容错式独立磁盘阵列,简称RAID,由加利福尼亚大学伯克利分校(University of California-Berkeley)在1988…

    Linux干货 2016-09-02
  • corosync v2+pacemaker实现mariadb的高可用

    高可用mariadb拓扑图 一、设计前提 1、时间同步 # ntpdate 172.16.0.1 或者 # chronyc sources 2、所有的主机对应的IP地址解析可以正常工作, 主机名要与命令#uname -n 所得的结果一致 因此,/etc/hosts中的内容为以下内容         172.16.23.10 node1.rj.com node…

    2017-11-02
  • 马哥教育网络19期+第十五周课程练习

    1、总结sed和awk的详细用法;   a).sed命令 sed可以实现grep的大部分功能,而且还可以查找替换 [root@localhost ~]# sed '10'p -n 1.txt [root@localhost ~]# sed &#039…

    Linux干货 2016-08-22
  • grep、find练习

    1.显示当前系统上root,fedora或user1用户的默认shell [root@study ~]# cat /etc/passwd|grep -E "^(root|fedora|user1)"|cut -d: -f7 /bin/bash /bin/bash /bi…

    Linux干货 2016-11-27