linux索引inode详解
来源:互联网 发布:淘宝产品宝贝标题优化 编辑:程序博客网 时间:2024/05/16 08:36
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 -iFilesystem 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 -i11 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 fileDevice: 803h/2051dInode: 11 Links: 2Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Access: 2016-07-28 20:55:59.110959913 +0800Modify: 2016-07-28 20:55:59.110959913 +0800Change: 2016-07-28 21:22:03.395959013 +0800
4、从软链接、硬链接理解inode
在linux系统上,不同的分区下,都有自己的inode序列,所以A分区和B分区的inode是会相同的。但是在同一个分区之内,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@centos7 ~]# touch new[root@centos7 ~]# ln -s new /testdir/new1[root@centos7 ~]# ll /testdir/new1 lrwxrwxrwx. 1 root root 3 Jul 30 14:13 /testdir/new1 -> new[root@centos7 ~]# cat /testdir/new1 cat: /testdir/new1: No such file or directory
上面这种情况为什么会报错?因为虽然软链接new1是创建在/testdir之下的,但是其访问数据时,是相对与当前目录,也就是说是在/testdir之下寻找new文件的,而非原文件的路径,所以通过/testdir/new1是无法访问到new的。所以说相对于软链接的路径,而非当前目录的路径(当然,写绝对路径也就不存在这样的问题了)。正确的做法如下:
[root@centos7 ~]# ln -s ../root/new /testdir/new2[root@centos7 ~]# ll /testdir/new2lrwxrwxrwx. 1 root root 11 Jul 30 14:16 /testdir/new2 -> ../root/new[root@centos7 ~]# cat /testdir/new2hello
建议大家在实际生产生活中,尽量使用相对路径的软链接,来增强代码的可移植性
5、inode的应用
在实际生活中,我们删除数据的时候,只不过是删除掉了指向文件的inode路径,文件依然存在于磁盘之上,这时我们是可以通过一些手段恢复数据的,其本质也不过只是添加了指向文件数据的inode。如果未及时恢复,在原来的磁盘空间上重新写入了数据后,那么数据就很难恢复了。
- linux索引inode详解
- linux 索引节点 inode 详解
- linux 索引节点 inode 详解
- Linux文件系统索引节点inode详解
- Linux之Inode详解
- Linux之Inode详解
- Linux inode详解
- linux inode详解
- linux中inode详解
- linux中的 inode 详解
- linux inode 详解
- linux inode 详解
- linux inode 详解
- Linux--inode详解
- 【Linux】inode信息详解
- linux inode节点详解
- Linux之inode详解
- linux 之 inode详解
- 关于vs编译器Lnk2005错误的随感
- C++中一个比较好的设计思想
- 程序中的固定结构
- 设计随想
- nodejs-构建http服务器
- linux索引inode详解
- 同一个问题,程序设计的结果为什么会截然不同
- 程序设计逻辑
- Flex 4 api学习有感
- 如何构建网络ghost学习办公环境
- 一个从非软件专业调到软件开发中的思路转变过程
- 项目中调试的看法
- html新认识
- 项目沟通