NTFS,可以将文件设置为放置在HDD盘片的最里面吗?

NTFS,可以将文件设置为放置在HDD盘片的最里面吗?

如果不设置多个分区(这是一个众所周知的解决方法,但我宁愿不这样做)或在文件写入后使用碎片整理程序(因此 HDD 的活动增加 2 倍),是否可以配置文件系统(或其他东西)从盘片的最内层而不是最外层开始放置文件?更像是将 HDD 做成存​​档形式,并将最外层留空,以便以后存放高速文件或临时文件。

答案1

当操作系统与 SATA 控制器通信时,它只是要求控制器读取/写入特定的逻辑块地址 (LBA)。LBA 从 0 开始,最高可达数十亿或数万亿,具体取决于驱动器的大小。

没有“数据去哪里”的概念。这个概念在软盘出现时是有效的(你必须告诉软盘哪一侧 [磁头]、磁道 [磁柱] 和扇区),但当 IDE 硬盘开始流行时,这个责任就完全转移到了驱动器上,而且从来都无法真正控制。旧的磁柱-磁头-扇区寻址确实花了一段时间才消失并被逻辑块寻址取代,但硬盘很快就超越了 CHS,而且据我回忆,自 90 年代初以来,CHS 从未真正反映过任何硬盘拓扑结构。

因此,操作系统 API 不支持这一点。

逻辑地址 0可能是最内层或最外层柱面,但没有任何保证,硬盘制造商可能在内部对盘片/柱面做了一些奇怪的事情。除非您真的逐个扇区测试访问时间或访问文档,否则您真的不知道发生了什么。

众所周知,硬盘驱动器的一点是,当您刚刚读取 LBA N 时,读取 LBA N+1 的速度在大多数情况下都非常快。因此,文件系统驱动程序会尝试将类似数据放在一起,但它们无法真正知道哪些 LBA 位于哪些柱面上。

您将需要创建多个分区,并将一个分区保留用于存储大部分只读数据,另一个分区保留用于存储更易失性的数据。

答案2

我的回答简短版为:不!

您希望获得的效果无法在 NTFS 中配置。只有一个访问文件位置的点。它是碎片整理 API:

https://docs.microsoft.com/en-us/windows/win32/fileio/defragmenting-files

为了实现目标,您必须修补或重新编程文件系统驱动程序。但即使这是可能的,驱动程序也不知道将什么放在哪里,因为文件系统 API 没有参数标志来判断文件是属于临时存储还是常规存储。每个程序都必须为此目的重写。

只有在文件夹路径包含“\temp”的少数情况下,文件系统才能合理地猜测该文件应该只存在有限的时间。

我的建议是:使用不同的分区和/或不同的驱动器。有了对碎片的认识,您很可能就会避免过多的碎片。

与其要求完成如此奇特的任务,不如描述一下碎片化问题。也许有更简单的方法可以解决您的问题。

相关内容