磁盘克隆:是否可以加快整个过程?

磁盘克隆:是否可以加快整个过程?

我有两个相同的 USB 3.0 硬盘(750GB)。其中一个是空的,我想将其用作第一个磁盘的镜像(作为备份)。

两个磁盘都连接到 USB 3.0 端口,在测试中读写速度都相当不错(读取速度最大约为 110MB/s,最小约为 60MB/s;写入速度最大约为 100MB/s,最小约为 55MB/s)。

我尝试使用 dd 工具来做到这一点,如下所示:

dd if=/dev/sdc | pv | dd of=/dev/sdd

最大速度不超过 20MB/s。 有办法加快速度吗?

答案1

添加块大小可能会加快速度。例如dd if=/dev/sdc bs=1M

究竟要使用什么 bs 很难预测,但默认值似乎是 512 个字节,这意味着您要在 750x1024x1024x2 个块中传输 750GiB。如果您使用 1M 作为块大小,那么这会将块数(和系统调用)减少 2048 个。这可以消除很多开销。

使用 dd 和 SAS 以及 SATA 连接磁盘进行的自己的测试表明,从 512 字节到 4K 有很大的增加,但此后的增加就小得多。

其次:两个磁盘是否连接到同一个 USB3 控制器?那么你正在共享该 USB 控制器的带宽。两个不同的 USB 控制器应该可以加快速度。(请注意,我写的是控制器,而不是 USB 端口。一个控制器通常控制多个端口)。

请注意:USB2 的存档速度通常高达 30 或 35MB/秒。您可以尝试将其中一个磁盘移至 USB 2 连接器,将另一个磁盘留在 USB 3 端口上。假设 USB3 端口没有足够的(内部)带宽来维持两个通道,这可能会使您的速度翻倍。(除了通过设置块大小获得的提升)。

第三:“镜子”一词的使用有点令人困惑。大多数情况下,“镜子”是指RAID-1并且可以在 RAID-1 镜像中使用两个 USB 磁盘。这样它们总是获得相同的内容。这也意味着删除某些内容会将其从两个驱动器中删除。

答案2

如果您说的是 RAID-1 中的镜像,请注意这不是备份。镜像可以让您在一个驱动器发生物理故障时幸存下来,但如果您删除文件则无济于事。

如果您想将所有文件从一个驱动器复制到另一个驱动器,您应该考虑使用 rsync。这将确保只复制文件,而不是复制所有物理块。这可能会快很多,具体取决于您的驱动器有多满。此外,后续同步可能会快得多,因为只会复制更改的文件。

如果您坚持要复制物理块,您可能需要考虑先将它们复制到直接连接的驱动器,然后从那里复制到第二个 USB 驱动器。这将防止两个驱动器争夺 USB 资源,并且可能比您当前的方法更快。显然,这要求您在直接连接的驱动器上有 750GB 的备用空间。

您可以考虑使用 mdadm 设置 RAID-1 配置。它可能不会更快,但可能更符合您要执行的操作。

相关内容