C 在磁光盘上的磁道/磁头/气缸上写入

C 在磁光盘上的磁道/磁头/气缸上写入,c,linux-kernel,disk,sata,C,Linux Kernel,Disk,Sata,我正在开发一个高性能数据库,我想直接写入一个特定的磁道/气缸,同时写入多个磁头。在Linux中,如何通过SATA总线使用SATA磁盘实现这一点?您可以推荐任何文档、示例吗?您不能直接这样做。对于现代驱动器,物理驱动器布局由驱动器控制器抽象出来,对于过去20年制造的任何磁盘,驱动器控制器都位于驱动器内部。主机看到的接口是根据线性逻辑块地址定义的(驱动器报告的C/H/S值仅用于兼容性,与硬件布局无关) 然而,很可能(在没有重新映射的块的情况下)简单地写入相邻逻辑块的块是最快的选择-这是因为驱动器往往

我正在开发一个高性能数据库,我想直接写入一个特定的磁道/气缸,同时写入多个磁头。在Linux中,如何通过SATA总线使用SATA磁盘实现这一点?您可以推荐任何文档、示例吗?

您不能直接这样做。对于现代驱动器,物理驱动器布局由驱动器控制器抽象出来,对于过去20年制造的任何磁盘,驱动器控制器都位于驱动器内部。主机看到的接口是根据线性逻辑块地址定义的(驱动器报告的C/H/S值仅用于兼容性,与硬件布局无关)


然而,很可能(在没有重新映射的块的情况下)简单地写入相邻逻辑块的块是最快的选择-这是因为驱动器往往被优化以执行快速线性写入。

典型的HDD一次只能执行一个读或写操作。为了执行这种优化的块操作,您可能需要编写自己的文件系统。但是,由于大多数(或全部?)现代HDD采用分区录制和坏扇区重新映射,因此您永远无法确定磁道的终点以及“下一个”(相邻)扇区的访问最终涉及寻道和/或旋转延迟。