Linux——文件系统中inode的工作

原创 2017年07月21日 20:59:21

一、引言:

 磁头通过运动读取磁盘中的数据时。磁盘越来越大,存储的东西越来越多。
 为了磁盘读写速度的提升,一代一代的升级,有各种文件系统,今天我们要介绍的是在Linux操作系统上的文件系统是怎样进行存储读取的。

二、文件是怎样存储的?

1.磁盘上的分区想要被使用必须要被挂载,即将文件系统和磁盘的存储空间建立关联。
2.文件系统把磁盘上的空间分成两部分,是inode table和block area;
3.(1)Inode table 为inode都编了号,并记录inode的使用情况,哪那些inode是空闲的,文件系统通常将磁盘空间中大约百分之一空间分配给了 inode table。
  (2)inode table中有多的inode,inode 中包含有关文件的所有信息(除了文件的实际名称以及实际数据内容之外)和指针。
4.(1)磁盘空间中的剩余部分基本都分配给了block area,block area里面有很多大小相等的很小的block(数据块)。
  (2)block用来存储文件中内容的实际数据,可以指定其大小,最常见是4KB。
5 .最主要的是Inode中的指针记录了存储文件内容的block位置,文件通过inode中的指针来找到block读写实际数据。每个指针指向一个block块。

这里写图片描述

三、可是,文件系统又是怎样找到文件和它的inode呢?

 1.在linux 中,一切皆文件,一切都是从 /  开始的,让文件系统记住 / 的inode号; /  的block中存储  /  下子文件的名字和其对应的inode号;然后依次指向下一级。

举例:假如现在要读取 /usr/bin中的内容,顺序是: / —> usr —>bin,顺序如下图所示:
/usr/bin

四、文件中内容很多,inode里面的指针不够怎么办?

1.每个inode节点大小一般是256个字节或者128个字节,存储的指针是有限的。上述通过inode节点中直接指向block块的指针叫作直接块指针。
2.可是block块中的空间比inode空间大多了,为什么不让block来存储指针呢?  于是就有了间接块指针。随着文件越来越多,就有了双重间接块指针、三重间接块指针。

指针升级
这里写图片描述

五、注意

1.每个文件都占用一个inode节点,即使是空文件。
2.不管文件中内容数据有多小,最少占用一个block块。Block是文件系统中的最小的存储单位

六、对文件进行操作时,inode和block的变化。

1.新建文件。

新建文件时,inode变化

2.进行cp、rm、mv时inode和block变化

文件操作时,inode变化

版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux文件系统代码学习笔记2——Hash表&内存inode的创建与回收

Linux文件系统代码学习笔记1–磁盘格式化&block分配 igetput.cpp——内存inode的创建与回收iget——内存inode的创建1. hash表的作用hash队列用来存放内存inod...

Linux内核文件系统 inode.c中_bmap函数理解

此段代码是Linux0.11版内核中Linux/fs/inode.c文件中_bmap函数代码 首先说一下此函数的主要功能: _bmap()函数用于文件数据块映射到盘块的处理操作。所带的参数inod...
  • r21nn
  • r21nn
  • 2017年01月14日 11:20
  • 669

linux-0.11调试教程 minix文件系统1.0 下篇(2)inode_table内存i节点表和目录 /etc/tty0

setup((void *) &drive_info);     (void) open("/dev/tty0",O_RDWR,0);     (void) dup(0);     (void)...

Linux.ext4文件系统.inode和extent

翻译自http://computer-forensics.sans.org/blog/2010/12/20/digital-forensics-understanding-ext4-part-1-ex...

Linux文件系统基础之inode和dentry

Linux文件系统基础之inode和dentry inode和dentry在VFS和实体的文件系统(ext2、ext3等)中都是比较重要的概念。首先看一下虚拟文件系统的标准定义:虚拟文件系统(英语:...

Linux文件系统索引节点inode详解

在Linux系统中,为每个文件分配一个称为索引节点的号码inode,可以将inode简单理解成一个指针,它永远指向本文件的具体存储位置。         系统是通过索引节点(而不是文件名)来定位每一...
  • zqj6893
  • zqj6893
  • 2015年08月22日 14:58
  • 1263

Linux文件系统与Inode

本文主要内容主要摘自鸟哥的Linux私房菜, 内容有删减和整理。参考内容来源: http://vbird.dic.ksu.edu.tw/linux_basic/0230filesystem.php#i...

Linux中文件系统的inode

在学习操作系统中文件系统这一章节是对文件系统中的inode这一点有点容易混淆的地方 比如说在linux系统中如何读取一个文件的 inode 是 UNIX 操作系统中的一种数据结构,其本...
  • woxxq
  • woxxq
  • 2013年04月05日 10:33
  • 755

Linux内核源码分析--文件系统(五、Inode.c)

//把文件上的数据存放在磁盘上,inode 文件i节点;block 文件中数据块号,create是否创建标志 static int _bmap(struct m_inode * inode,int b...

linux文件系统inode与软链接硬链接

http://blog.csdn.net/lmh12506/article/details/7274943 http://blog.csdn.net/yangcs2009/article/det...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux——文件系统中inode的工作
举报原因:
原因补充:

(最多只允许输入30个字)