码迷,mamicode.com
首页 > 其他好文 > 详细

linu索引inode详解

时间:2016-07-29 23:03:33      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:linux   操作系统   资源   如何   影响   

  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

linu索引inode详解

标签:linux   操作系统   资源   如何   影响   

原文地址:http://dmwing.blog.51cto.com/11607397/1831882

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!