文件系统是否将“存储设备”视为(非常大)字节数组?

时间:2017-06-23 23:20:57

标签: linux windows operating-system filesystems

我想知道文件系统如何写入和读取存储设备。

我认为这是它的工作原理:

文件系统不直接访问存储设备,而是将存储设备(由存储设备的设备驱动程序)作为(非常大的)字节数组呈现给文件系统。

例如,如果文件系统想要访问硬盘,它将只访问代表硬盘的字节数组。

这样,文件系统可以与任何类型的存储设备(传统硬盘,SSD,USB闪存驱动器等)一起使用,并且只更改存储设备的设备驱动程序。

此图显示了我刚才解释的内容:

enter image description here

我的理解是否正确?

1 个答案:

答案 0 :(得分:3)

如果您只是将“字节数组”更改为“块数组”,那么您的理解将更接近真实。

文件系统驱动程序和设备驱动程序都将“底层设备”视为块数组。 1980年至2010年间制造的HDD具有等于512字节的经典物理块(=扇区)大小。 2010年出现AF(=高级格式),物理扇区(=块)大小增加到4096字节,但仅限某些型号。

2002年引入LBA-48bit时,光盘几何寻址(CHS =柱头扇区)被声明为过时。逻辑块寻址(LBA)是通过在LBA48的情况下指定从0到(2 ^ 48-1)的顺序号来到达块(=扇区)的简单方案。

例如,在2002年之前,计算机和存储基于LBA-28bit,它提供了最大的存储容量:
(512 * 2 ^ 28)=(2 ^ 9 * 2 ^ 28)= 2 ^ 37 = 2 ^ 7 Gb = 128 Gb。

扇区大小为512字节的LBA48存储的最大大小:
(512 * 2 ^ 48)=(2 ^ 9 * 2 ^ 28)= 2 ^ 57 = 2 ^ 17 Tb = 131072 Tb = 128 petabyte。

扇区大小为4096字节的LBA48存储的最大大小:
(4096 * 2 ^ 48)=(2 ^ 12 * 2 ^ 48)= 2 ^ 60 = 2 ^ 20 Tb = 1048576 Tb = 1024 petabyte。