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