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

相关推荐

  • Web缓存核心技术点需知

    Edit Web缓存核心技术点需知 5.1 HTTP首部控制 5.2 基于新鲜度检测机制: 2.1 特征1:时间局部性 2.2 特征2:空间局部性 2.3 缓存的优点 2.4 哪类数据应该被缓存 2.5 哪类数据可缓存但不应该被缓存 2.6 缓存命中率决定缓存有效性 2.7 缓存数据生命周期 2.8 缓存处理步骤 2.9 缓存和普通数据读取的区别 1. 完整…

    Linux干货 2016-11-14
  • centos7.3下配置LAMP实现WordPress博客

      在同一台主机上搭建,首先需要安装的软件包Apache 、MariaDB 、PHP 一.安装LAMP 这里我们采用yum的方式:yum install httpd mariadb-server php php-mysql -y 二.创建虚拟主机 1.虚拟主机配置文件: 2.创建所需的目录: mkdir /var/www/wordpres…

    2017-08-07
  • 日志管理

    rsyslogd的相关介绍,journalctl的相关介绍和日志的转储

    2018-02-05
  • 命令(2017.5.16-2017.519-部分)

    命令(1) bc  计算器 dd if=/dev/zero 查看逻辑设备(非硬件) dd if=/dev/sd 查看硬件设备 dd if=/dev/zeroof=file bs=1M count=24  写入磁盘速度 dd if=/dev/zeroof=/dev/null bs=1M count=24  测试…

    Linux干货 2017-05-22
  • N22-第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。     首先用who命令查看所有已登录用户信息,然后用cut命令取出用户名,再用sort -u对用户名排序并删除重复的用户名      2、取出最后登录到当前系统的用户的相关信息。  &n…

    Linux干货 2016-09-05
  • 关于tar命令的一些方法

    tar 解压缩文件时只有当文件格式中有tar才能使用,否则使用其他单独的特定解压缩工具,例如uncompress,gzip ,bzip2.xz等等 tar压缩解压缩命令详解 tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命…

    Linux干货 2016-08-29