磁盘block和文件系统block

磁盘block和文件系统block,第1张

摘取自骏马金龙的 第4章ext文件系统机制原理剖析

硬盘最底层的读写IO一次是一个扇区512字节 ,如果要读写大量文件,以扇区为单位肯定很慢很消耗性能,所以硬盘使用了一个称作 逻辑块 的概念。逻辑块是逻辑的,由 磁盘驱动器负责维护和 *** 作 ,它并非像扇区一样物理划分的。 一个逻辑帆陆块的大小可能包含一个或多个扇区 , 每个逻辑块都有唯一的地址,称为LBA 。有了逻辑块之后, 磁盘控制器对数据的 *** 作就以逻辑块为单位 ,一次读写一个逻辑块,磁盘控制器知道如何将逻辑块翻译成对应的扇区并读写数据。

Linux *** 作系统层次,通过 文件系统提供了一个也称为块的读写单态昌顷元 ,文件系统数据块的大小一般为1024bytes(1K)或2048bytes(2K)或4096bytes(4K)。 文件系统数据块 也是逻辑概念,是 文件系统层次 维护的,而 磁盘上的逻辑数据块 是由 磁盘控制器 维护的,文件系统的IO管理器知道如何将它的数据块翻译成磁盘控制器维护的数据块地址LBA。

对于使用文件系统的IO *** 作来说,比如读写文件,这些IO的基本单元是文件系统上的数据块,一次读写一个文件系统数据块。比如需要读一个或多个块时,文件系统的IO管理器首先计算这些文件系统块对应在哪些磁盘数据块,也就是计算出LBA,然后通知磁盘控制器要读取迅旁哪些块的数据,硬盘控制器将这些块翻译成扇区地址,然后从扇区中读取数据,再通过硬盘控制器将这些扇区数据重组写入到内存中去。

文件系统block的出现使得在文件系统层面上读写性能大大提高,也大量减少了碎片。但是它的副作用是可能造成空间浪费。由于文件系统以block为读写单元,即使存储的文件只有1K大小也将占用一个block,剩余的空间完全是浪费的。在某些业务需求下可能大量存储小文件,这会浪费大量的空间。

尽管有缺点,但是其优点足够明显,在当下硬盘容量廉价且追求性能的时代,使用block是一定的。

block是块,比如说你要在图纸中信宴插入很多灯的符橘坦返号,那么你就可以先画出一个等,然后把这个等保存为一个圆饥单独的dwg文件,就可以在你的图纸正反复插入了,不用再一个个的画或者复制/粘贴了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8227081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存