0

我想将一个 NTFs 分区复制到另一个相同类型和相同大小的分区。我尝试使用 windows 函数 Copyfile() 并且它工作但速度慢是一个问题。然后我使用 readfile() 和 WriteFile() 而不是 Copyfile( )再次速度是一个问题。

我怎样才能获得更好的速度...??

我在内核模式下进行了相同的操作,并且使用 zwCreatefile() 、zwReadfile() 和 zwWriteFile() 获得了缓慢的性能...

我怎样才能获得更好的速度......?

我想将一个硬盘分区复制到另一个分区。我的源分区和目标分区是 NTF 且大小相同。为此,我首先复制了所有扇区并且它正在工作,但我只想复制使用过的扇区......</p>

然后我通过阅读 FSCTL_VOLUME_BITMAP 找到使用过的集群。但这一个也很慢..我想获得更好的速度。我也尝试通过使用 FSCTL_GET_RETEIVAL_POINTER 来获取使用过的集群。但它是一个缓慢的......

最后我也尝试了windows API CopyFile()…但是一切都给了一个缓慢的性能…</p>

我从根本上知道内核模式(环 0)的速度比用户模式慢,(即使环 0 可以直接访问硬件).....

除了它们之外,我还通过在 CreateFile 中设置 OVERLAPPED 标志尝试了异步操作....得到了小的改进....

而且我已经拍摄了卷的快照(卷影副本)并使用 Hobo 复制方法复制了文件......但一切都给出了相同的速度......

任何想法来帮助...

我用过Software Acronis Disk Director Suite。发现它的速度后我惊呼......!!!!!!

有什么想法可以帮助我...获得良好的速度.......???

与本节相关的白皮书的任何链接......???


感谢您

4

2 回答 2

2

我认为最简单的方法是使用 Linux Live Distribution 或 Linux Rescue Disk。

在终端中启动后,您必须输入(如果“/dev/hda1”是源分区,“/dev/hdb1”是目标):

dd if=/dev/hda1 of=/dev/hdb1 bs=64k

您也可以使用“dd_rescue”来代替某些救援发行版的“dd”。

小心使用正确的设备!除此之外,它工作得很好!

维尔纳

于 2009-06-30T16:10:25.053 回答
0

为了帮助您,您必须与我们分享您对“更好的速度”的定义。

为了计算预期速度(粗略),您需要知道 1. 块设备(在您的情况下为硬盘?)的原始性能是多少 2. 您需要传输的数据大小

因此,如果您的分区获得 X1 和 X2 mb/s 并且有 Y mb 要复制并且这两个分区不在同一个物理设备上,您应该期望在 y / min(X1, X2) 秒内完成复制。再一次 - 这是一个粗略的估计,只是一些参考点,所以我们可以给“更好的速度”这个词赋予意义

你得到的结果比这个估计慢多少?

于 2009-06-30T08:48:19.323 回答