HDD 如何确定使用哪个盘片/扇区?驱动器本身是否内置有控制器?还是主板?操作系统?
什么样的算法会选择这个?当然它不可能是随机的,也不可能是连续的。
类似地,同样的问题如何适用于 SSD 呢?
答案1
HDD 如何确定使用哪个盘片/扇区?
什么样的算法会选择这个?当然它不可能是随机的,也不可能是连续的。
这是你不太可能找到的专有信息。“商业秘密“ 或者 ”秘密武器“如果你愿意……
没有“浅的“它不是随机的或连续的……但我怀疑磁盘制造商会通过将数据放在所有盘片上来优化数据吞吐量。很可能会有”深的“将数据放置在原处的原因(现代硬盘正在接近魔法的境界,需要大量的技术知识才能理解大部分正在发生的事情)。
从历史上看,它是开放的并且被广泛理解(参见中枢性高血压, 以下)。
驱动器本身是否内置有控制器?
是的 - 现代硬盘将提供SATA或者SAS与主机的接口...该通信链路在主板和硬盘的板载控制器之间运行。
控制器随后负责管理主轴速度、磁头位置、读/写指令之间的处理以及往返于读/写磁头的精确定时模拟信号等......
还是主板?操作系统?
从历史上看,硬盘是一种非常原始的设备——步进电机或音圈直接由主板驱动来管理磁头位置,模拟信号在传输到主板之前被粗略地清理。
看到这个富士通 337 MB 8 英寸硬盘的拆解视频了解详细信息。跳至~2:04 查看接口的运行情况(存储模块设备)。即便如此,如您所见,仍有相当多的支持电路用于接口。
硬盘使用CHS(气缸-缸盖-扇区),但最近它们被使用LBA(逻辑块寻址)。
我思考随着 LBA 的引入,我们也开始看到磁盘管理自己的坏扇区 - 将它们重新定位到配置的“空闲的“当检测到坏道时,空间就会被破坏。所以我们不再直接控制磁头的位置、使用哪个磁头以及访问哪个扇区。
在磁盘管理自己的坏扇区之前,您会看到出厂时带有坏扇区列表的标签,您必须在创建文件系统时将其输入系统。或者,您可以使用类似badblocks
扫描问题。例如:
类似地,同样的问题如何适用于 SSD 呢?
使用 SSD 时,整个闪存存储从物理地址空间映射到虚拟地址空间。这允许磨损均衡透明地实施,无需任何来自主机的知识。
答案2
什么决定了 HDD 写入哪个盘片/扇区?
控制硬盘中包含的单独算法和指令决定了发送到 HDD 的大多数数据的位置。
通过旋转硬盘,操作系统可以访问驱动器上所有可能的地址,并可以指定要读取或写入的特定位置。
使用 SSD,控制器会虚拟化实际地址以支持 SSD 提供的一些高级功能,例如过度配置和查找和标记坏位并将其列入黑名单而无需实际缩小,以及缓存等,因此操作系统通常不知道 SSD 中真正的可能地址。