我想知道文件系统如何写入和读取存储设备。
我认为它是这样工作的:
文件系统不直接访问存储设备,而是将存储设备(由存储设备的设备驱动程序)作为(非常大的)字节数组呈现给文件系统。
例如,如果文件系统要访问硬盘,它只会访问代表硬盘的字节数组。
这样一个文件系统可以与任何类型的存储设备(传统硬盘、SSD、U盘等)一起工作,只需要改变存储设备的设备驱动程序。
这张图片显示了我刚才解释的内容:
我的理解正确吗?
最佳答案
如果把“字节数组”改成“ block 数组”,你的理解会更接近事实。
文件系统驱动程序和设备驱动程序都将底层设备“视为” block 数组。 1980~2010 年间制造的 HDD 的经典物理 block (=扇区)大小等于 512 字节。 2010 年出现 AF(=高级格式),物理扇区(= block )大小增加到 4096 字节,但仅适用于某些型号。
2002 年引入 LBA-48 位时,磁盘几何寻址(CHS=cylinder-head-sector)被宣布为过时。在 LBA48 的情况下,逻辑 block 寻址 (LBA) 是通过指定从 0 到 (2^48-1) 的序号来到达 block (=扇区)的简单方案。
例如,2002 年之前的计算机和存储是基于 LBA-28 位的,它给出了最大存储大小:
(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 PB。
扇区大小为 4096 字节的 LBA48 存储的最大大小:
(4096 * 2^48) = (2^12 * 2^48) = 2^60 = 2^20 Tb = 1048576 Tb = 1024 PB。
关于linux - 文件系统 "see"是否作为(非常大的)字节数组存储设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44731167/