在软件 RAID1 的帮助下使用 dd 克隆多个 SATA 驱动器

在软件 RAID1 的帮助下使用 dd 克隆多个 SATA 驱动器

因此,我每天从图像中克隆大量基于 Windows 的 NTFS 驱动器,并且我已完成一个项目的一半,该项目可能会帮助我和其他人大大加快这一过程。

我目前安装了带有 mdadm 和 16 个 SATA 端口的 Ubuntu 17.10。想法是将驱动器连接到每个 SATA 端口,然后同时对每个端口进行克隆。

如果我一次在一个驱动器上使用 dd,我可以获得大约 ~135MB/s(最大 ~180MB/s)的结果,但是一旦我开始同时克隆其他驱动器,速度就会大大降低。

同样的事情也发生在 dcfldd 上,它还有能够指定多个of=输出的额外好处。

现在……我最初的想法是利用 RAID1 阵列一次性包含我想要克隆的所有驱动器。但是,RAID 的架构和克隆后驱动器的可用性似乎存在一些不一致之处。

到目前为止,我尝试过以下方法:我可以使用 mdadm 创建多个驱动器的阵列,然后继续运行。sudo dd if=/home/clone/some_image.img of=/dev/md0 bs=4096 这个过程似乎运行得非常顺利,速度也非常快(每个驱动器一次约 110Mb/s)。这个过程完成后,驱动器似乎不包含我们刚刚写入的数据。我的下一步是将驱动器上的超级块清零,希望将它们恢复为可用的驱动器,但这似乎也行不通。

我甚至尝试使用较旧的超级块版本(从 1.2 到 0.9)创建一个新数组,但产生的结果与以前相同。

就好像无论驱动器上存储了什么数据,都只能通过 mdadm 访问,这使得这个想法完全失败,尽管最初的结果非常有希望。

因此,我向您提出以下问题:是否有任何方法可以将映像写入 RAID1 阵列,然后再转回单个磁盘?是否有其他技术可以让我享受克隆到 RAID1 的速度优势,而无需使用 RAID 或第三方工具来安装驱动器?

非常感谢您阅读本文。

答案1

不,这行不通。如果您有 Linux 软件 RAID(或实际上是硬件 RAID),您将拥有所需的 RAID 外部管理结构,这会使您的磁盘无法用于您的用例。

答案2

当你克隆时单张图片对于多个磁盘,您需要确保dd同时启动所有实例。这样,所有读取(第一个除外)都来自缓存,源磁盘不会崩溃。

如果你正在克隆不同的图像源磁盘需要更快,并具有较低的访问延迟。简单的 RAID 1 或 0 可能不够用。SSD 或具有多个磁盘的更大 RAID 最有可能做到这一点。

相关内容