复制文件序列,使其在硬盘上物理上连续放置

复制文件序列,使其在硬盘上物理上连续放置

我有一个图像文件序列,只要它们真的是按帧划分的视频,就需要尽可能快地读取它们。因此,当图像序列不是连续写入硬盘时,性能会很差,因为磁盘臂会不断移动磁头来搜索每个文件。我需要知道如何在复制时强制文件以正确的顺序物理写入硬盘。需要 OSX、Linux 和 Windows 程序。谢谢。

答案1

重叠群实用工具系统内部专门设计用于在具有 HDD 存储的 Windows 系统中一次对一个文件执行此操作。没有相当于重叠群已发现适用于 MacOS 或 Linux 的版本。

但是,如果您使用 SSD,请注意,数据会存储在 SSD 单元内,无论其固件决定将其存放在何处,因此按照 NTFS 连续写入文件的任何好处都可能会被抵消。

答案2

我认为你无法真正回答这个问题,尤其是对于 Linux、Windows 和 Mac 来说。因为:

  • 每个不同的文件系统都可以将文件放在磁盘上的不同位置。尝试创建一个 ext3/4 文件系统,并查看一个容易识别的文件(例如,包含所有a's)最终位于何处 - 它可能会在整个设备上以“条带”的形式写入。
  • 每个不同的硬盘可能有未知数量的盘片和磁头,以及未知的它们映射到扇区的方式
  • 操作系统或硬盘本身可以悄悄地将扇区“重新映射”到磁盘上的其他位置

一般来说,听起来你只是想避免文件碎片,你可以通过在写入文件时让文件系统为空(或几乎为空)来做到这一点。


如果你只想按照你喜欢的顺序一个接一个地写入特定的文件(但操作系统最终仍将决定将它们放在磁盘上的什么位置),你可以使用类似的循环(例如在 Linux 上)

while read filename
cp filename destination
sync
done

或者dd跳过缓冲区缓存并进行一些同步:

dd if=filename of=destination/filename oflags=direct,sync

相关内容