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

相关推荐

  • 权限管理

    权限 权限就是用户或者组对文件或者目录所拥有的能力,所能执行的操作。 权限的分配: 通过ls -l file这个命令可以查看文件或者目录的详细信息:     [root@localhost home]# ls -l /root/   &nb…

    Linux干货 2016-08-05
  • Centos下实现多网卡绑定

    实现多网卡绑定在Centos6和Centos7可采用bonding方式,Centos7上team网络组也可实现,并且功能更强大。 Linux bonding 模块提供一种将多个网卡聚合成一块逻辑捆绑网卡的实现方法。 捆绑的网卡拥有多种模式,根据模式的特性,可实现网络负载均衡,网络冗余切换,提高网络吞吐量等功能。 大多流行Linux发行版都已装载bonding…

    Linux干货 2016-09-13
  • Linux用户操作、文件操作、文件筛选

    Linux用户操作、文件操作、文件筛选 编辑/etc/group文件,添加组hadoop。手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。 vim /etc/group hadoop:x:1001: vim /etc/passwd hadoop:x…

    Linux干货 2016-11-17
  • ansible部署KeepAlived动态站点

    一、设计原因 利用ansible可以自动化部署KeepAlived 的双方模型(其中包括两个动态的站点),多组服务器需要一样的部署时 可以利用ansible写的程序来代替重复性的操作。 二、设计拓扑结构及服务器详情   三、详细步骤 1、环境的搭建 (1)安装ansible,同时配置私钥免密码进行通信 [root@localhost ~]# ssh…

    2015-05-13
  • 计算机的发展及组成

    计算机发展 计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备。 1946年,世界上诞生了第一台计算机,用于军事,计算弹道。 1946年数学家冯.诺依曼提出冯诺依曼体系结构,即所有计算机由运算器、控制器、存储器、输入设备、输出设备组成,所有遵循冯.诺依曼…

    Linux干货 2017-07-13
  • linux发行版的基础目录名称命名法则及功用规定。

    Linux文件系统:         Linux:glibc标准C库                  &nb…

    Linux干货 2016-10-30