1、inode简介
文件系统是数据在硬盘上的一种排列组织方式,linux每个分区都可以格式化为不同的文件系统,所以可以说每个分区都是一个文件系统,都有自己的目录层次结构。而在目录之下,linux已经将所有的资源处理成为文件,不论是目录还是命令,之后linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构,实现对不同分区的数据进行访问。但是通过目录层次访问磁盘上的文件,只是表面现象。要知道数据在磁盘上以块(block)存储(一个block由8个扇区组成,每个扇区0.5K,扇区是硬盘存储数据的最小单位)数据的大小不一,造成了块的数量也不尽相同,增删改查都会影响数据块的排列方式,那么如何在众多的可能不连续的数据块中,如何精准的找到数据对应的那些块,必须依附在一张索引列表之上,这就是inode。
所以操作系统读取磁盘文件的流程是这样的
<1>根据某个inode号,找到目录的block,其存储的各种文件和文件的inode
<2>查询inode表,找到文件的inode节点
<3>根据文件的inode,找到对应的block
<4>读取文件
大致流程图如下
2、inode内容
当然,inode中不仅仅存储着指针,还存储着对应资源的权限、属主、属组和大小,见图一
3、inode查看
inode也是存储在block上的一段数据,所以其也是占用磁盘空间的,每个分区都有自己的inode上限,所以有时候如果显示磁盘空间已满,inode上限也需要作为一个原因,可使用df -i查看
[root@centos6 testdir]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda2 6406144 145786 6260358 3% / tmpfs 125517 5 125512 1% /dev/shm /dev/sda1 51200 38 51162 1% /boot /dev/sda3 1281120 25 1281095 1% /testdir /dev/sr0 0 0 0 - /media/CentOS_6.8_Final /dev/sr0 0 0 0 - /media/cdrom
查看文件的inode,使用ls -i
[root@centos6 testdir]# ls -i 11 FILE1 12 FILE2 13 FILE3 [root@centos6 testdir]#
查看文件的inode,也可以使用命令stat
[root@centos6 testdir]# stat FILE1 File: `FILE1‘ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 803h/2051d Inode: 11 Links: 2 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-07-28 20:55:59.110959913 +0800 Modify: 2016-07-28 20:55:59.110959913 +0800 Change: 2016-07-28 21:22:03.395959013 +0800
4、从软链接、硬链接理解inode
在linux系统上,不同的分区下,都有自己的inode序列,所以A分区和B分区的inode是会相同的。但是在同一个分区之内,inode于文件一般是一一对应的,但是有时可以通过多个文件指向同一个inode,实现借助不同的方式访问到同一个文件内容,这就是硬链接
创建硬链接
ln SRC_FILE DES_FILE
在硬链接之外,还存在一种情况,那就是虽然创建了a文件,但是通过b路径也可以访问到a的内容,尽管a和b的inode不同,但是此时b借助a的路径访问到了a的内容,b就叫做a的软链接
创建软链接
ln -s SRC_FILE DES_FILE
[root@centos6 ~]# touch new [root@centos6 ~]# ln -s new /testdir/new1 [root@centos6 ~]# ll /testdir/new1 lrwxrwxrwx. 1 root root 3 Jul 28 21:33 /testdir/new1 -> new
上面这种情况为什么会报错?因为虽然软链接new1是创建在/testdir之下的,但是其访问数据时,是相对与当前目录,也就是说是在/testdir之下寻找new文件的,而非原文件的路径,所以通过/testdir/new1是无法访问到new的。正确的做法如下。
[root@centos6 ~]# ln -s ../root/new /testdir/new3 [root@centos6 ~]# ll /testdir/new3 lrwxrwxrwx. 1 root root 11 Jul 28 21:40 /testdir/new3 -> ../root/new
5、inode的应用
在实际生活中,我们删除数据的时候,只不过是删除掉了指向文件的inode路径,文件依然存在于磁盘之上,这时我们是可以通过一些手段恢复数据的,其本质也不过只是添加了指向文件数据的inode。如果未及时恢复,在原来的磁盘空间上重新写入了数据后,那么数据就很难恢复了。
本文出自 “dmwing” 博客,请务必保留此出处http://dmwing.blog.51cto.com/11607397/1831882
原文:http://dmwing.blog.51cto.com/11607397/1831882