一篇文章让你理清 文件系统中的逻辑块、物理块和扇区之间的关系

概述

sector:硬件(磁盘)上的最小的操作单位,是操作系统和块设备(硬件、磁盘)之间传送数据的单位

block由一个或多个sector组成,是软件(OS、文件系统)中最小的操作单位;操作系统的虚拟文件系统从硬件设备上读取一个block,实际为从硬件设备读取一个或多个sector.对于文件管理来说,每个文件对应的多个block可能是不连续的;block最终要映射到sector上,所以block的大小一般是sector的整数倍。不同的文件系统block可使用不同的大小,操作系统会在内存中开辟内存,存放block到所谓的block buffer中。

一篇文章让你理清 文件系统中的逻辑块、物理块和扇区之间的关系


扇区组成物理块,物理块对应逻辑块,逻辑块与文件相对应。

扇区是硬件被操作时软件使用的最小的操作单元,就是一个扇区一个扇区进行操作(扇区的大小在存储设备生产时就设计好)。

块是上层软件中(操作文件时)使用的最小的操作单元,就是(操作文件时)一个块一个块进行操作(块的大小格式化时可以设置【如linux、fatfs等等】)。

如fatfs的格式化函数(即在存储设备上建立文件系统)

具体文件系统管理的是一个逻辑空间,这个逻辑空间就象一个大的数组,数组的每个元素就是文件系统操作的基本单位——逻辑块,逻辑块是从0开始编号的,而且,逻辑块是连续的。与逻辑块相对的是物理块物理块是数据在磁盘上的存取单位,也就是每进行一次I/O操作,最小传输的数据大小。我们知道数据是存储在磁盘的扇区中的,那么扇区是不是物理块呢?或者物理块是多大呢?这涉及到文件系统效率的问题。

如果物理块定的比较大,比如一个柱面大小,这时,即使是1个字节的文件都要占用整个一个柱面,假设Linux环境下文件的平均大小为1K,那么分配32K的柱面将浪费97%的磁盘空间,也就是说,大的存取单位将带来严重的磁盘空间浪费。另一方面,如果物理块过小,则意味着对一个文件的操作将进行更多次的寻道延迟和旋转延迟,因而读取由小的物理块组成的文件将非常缓慢!可见,时间效率和空间效率在本质上是相互冲突的。

具体文件系统所操作的基本单位是逻辑块,只在需要进行I/O操作时才进行逻辑块到物理块的映射,这显然避免了大量的I/O操作,因而文件系统能够变得高效。逻辑块作为一个抽象的概念,它必然要映射到具体的物理块上去,因此,逻辑块的大小必须是物理块大小的整数倍,一般说来,两者是一样大的。

通常,一个文件占用的多个物理块在磁盘上是不连续存储的,因为如果连续存储,则经过频繁的删除、建立、移动文件等操作,最后磁盘上将形成大量的空洞,很快磁盘上将无空间可供使用。因此,必须提供一种方法将一个文件占用的多个逻辑块映射到对应的非连续存储的物理块上去,Ext2等类文件系统是用索引节点解决这个问题的。


后面会每天分享更多关于devops这方面的内容给大家,感兴趣的朋友可以关注一下~~

一篇文章让你理清 文件系统中的逻辑块、物理块和扇区之间的关系

相关推荐