linux下扇区、块、页的区别+inode与高速缓冲区在linux文件系统的作用

  • Post author:
  • Post category:linux


一、块,页,扇区的区别

b4bca411af7a1de2e024a7afdf9d3fd7.png

由上图可以看出磁盘的结构,以前

硬盘的最小单位是扇区

,通常一扇区为512B,但是现在许多磁盘一个扇区就达到了4KB,那么块的概念从哪里来的呢,实际上块并不存在,他只是因为

文件系统

如果一个扇区一个扇区的读数据太慢,所以在文件系统下提出了块的概念,一块一块的读可以大大提高效率,块大小=扇区大小*2^n。

根据文件系统的不同,一个块可以是两个扇区也可以是四个

。综上所述,

文件读取时的最小单位是块




扇区是对硬盘而言,磁盘块是对文件系统而言。



所以文件系统操作文件的最小单位是块,而磁盘的基本单位是扇区。

而操作系统与

内存

打交道时才有了



的概念,因为如果采用内存的分页机制,内存被分为大小为4K的页面。也是一种虚拟单位。


综上:操作系统操作内存是以页为基本单位、文件系统操作磁盘是以块为基本单位,而磁盘自身读写是以扇区为基本单位。


二、文件系统中inode与高速缓冲区的作用

2.1 inode

i节点描述:

(1)一个i节点可以有多个文件名来对应它

(2)i节点能描述文件占用的块数

(3)

i节点描述了文件大小和指向数据块的指针

(4)通过i节点实现文件的逻辑结构和物理结构的转换

操作系统通过inode以文件的方式操控磁盘,所以说


inode节点是文件与磁盘的映射,文件系统

通过I节点存取文件数据。

0块:引导块,每块1024B

1块:超级块:

超级快记录了总i节点数,逻辑块数,以及记录他们存在的对应的位图数,操作系统也就是根据超级快来处理该分区的文件操作的。


2块:i节点位图,一位一个inode,1024个字节大小,所以可以表示1024*8-1个inode节点,但是第一位不可以用。

3块:逻辑块位图

4…18:i节点区块

19块:数据块,刚好和Linux文件系统分析之二中提到的数据块开始于第19块吻合。

2.2 重点——inode与block找文件

那么inode是什么呢?

Block是记录文件内容的区域,inode则是记录该文件的属性及其放置在哪个Block之内的信息

。所以,

每个文件都会占用一个inode



当Linux系统要查找某个文件时,它会先搜索inode table找到这个文件的属性及数据存放地点,然后再查找数据存放的Block进而将数据取出。

inode数量在一开始已被设定好,其设定方式通常是”硬盘大小/一个容量”,这个容量比Block大一些较佳,例如刚才将Block设为4K,那么这个容量可以设为8K左右。所以,一块1GB的硬盘如果以8K 大小划分它的inode数,则会有131072个inode。一个inode的大小为128Byte,这样,我们就可以清楚地知道,


一个分区被格式化为一个文件系统之后,基本上它一定会有inode table与数据区域两大块,一个用来记录文件的属性信息与该文件存放的Block块,一个用来记录文件的内容。


创建一个文件

后,会

同时创建一个inode和一个block

,inode存放的是文件的属性信息,但是不包括文件名,并存放所对应数据所在的block块的地址的指针;block存放文件的数据,每个block最多存放一个文件,而当一个block存放不下的情况下,会占用下一个block。linux里文件的文件名、文件属性、文件内容是分别存储的:


文件名存放在目录项中,文件属性存放在inode中,文件内容存放在数据块中。

2.3 高速缓冲区

用户在访问磁盘时并不是直接操作硬盘,效率很低,所以引入了高速缓冲区,


高速缓冲区是用户与磁盘的映射结构


在这里插入图片描述


整个高速缓冲区被分为1024字节大小的缓冲块




正好与块设备上的磁盘逻辑块大小相同


,高速缓冲采用hash表和包含所有缓冲块的双向循环链表进行操作管理。



版权声明:本文为weixin_46199479原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。