Answers:
在Linux(和1980年代的Unixes)上,存储设备(通常是某些硬盘或某些SSD上的磁盘分区)是一个块设备(请参阅此),也是一个块的[子]序列(即物理 I / O的基本单位)。物理块大小取决于硬件(旧的IDE磁盘的块大小为512字节,新的大型SATA磁盘的块大小为4Kbyte,请阅读Advanced Format wikipage ),以及在创建文件系统时(例如,参见mke2fs (8)mkfs
),您可以指定逻辑块大小,该大小是该物理块大小的倍数(通常为2的小数,包括1)。另请阅读有关逻辑块寻址的信息。
过去(例如1990年代的Sun3工作站),磁盘是由圆柱体制成的,磁头按扇区组织(请参阅CHS Wikipage),扇区中包含一个块。时至今日,这些仍然存在,但它们是由硬盘控制器(磁盘本身上的电路)提供的人工制品。在某些OS中,块设备驱动程序会重新计划和重新排列IO请求,以最大程度地减少磁盘磁头移动和旋转延迟。
这样,文件系统可以与任何类型的存储设备(传统硬盘,SSD,USB闪存驱动器等)一起使用,并且仅更改存储设备的设备驱动程序。
是的,但是问题出在细节上(例如,阅读有关TRIM和Write Amplification(特定于SSD的信息))。而且细节很重要,因此实际的实现比您的图要简单。阅读有关文件系统的更多信息(并考虑包括SMB和NFS在内的集群和远程文件系统;也了解Logical Volume Manager)。
阅读操作系统:三个简单的部分(及其持久性部分)。
请注意,FreeBSD中没有使用块设备(实际上为字符和块设备提供了通用的抽象)。我怀疑即使在Windows上,操作系统也知道分区,块大小等(但您应该检查)。