*** 作系统是如何管理磁盘和文件的

 *** 作系统是如何管理磁盘和文件的,第1张

*** 作系统通过分配磁盘空间来管理磁盘和文件。它会将磁盘分割成若干块,每块被称为一个盘块。 *** 作系统会将每个文件分割成若干块,每块被称为一个文件块。 *** 作系统会将文件块分配到可用的磁盘块上,以管理文件和磁盘。此外, *** 作系统还负责维护文件和磁盘的数据完整性,即检查文件和磁盘上的数据是否已经损坏,如果发现损坏则采取恢复措施。

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

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

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

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

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

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


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存