使用usb 2.0和usb 3.0接口时最大化RAID1效率

mar*_*ith 3 performance arch-linux raid1 raspbian

我有一个 USB 2.0 端口和一个 USB 3.0 端口,并且想在 RAID1 中设置两个 HDD(均为 USB 3.0)。

不完全确定镜像是如何工作的,但想知道是否有某种方法可以将连接到 USB 3.0 端口的驱动器配置为用作“初始”写入/读取优先级的“主要”驱动器,以便最大限度地提高性能,将任何数据复制到连接到 USB 2.0 接口的驱动器。

欢迎任何想法或建议。理想情况下,该解决方案适用于与 raspberry pi 4 兼容的操作系统,但是,我也有兴趣了解任何其他解决方案。

Fab*_*bby 5

由于您有 2 种独立 USB 技术的硬件限制:

  • USB2.0的最大信号速率为480Mbps
  • USB3.x的最大信号速率为 5120Mbps (5.0 Gbps)

设置使用RAID-1 mdadmmULTI device administrator)都会有一些抽奖的挫折。

选项 1:添加硬件。

添加 USB 3.x 端口分配器/USB 3.x HUB 并将两个 HDD 连接到 HUB,将 HUB 连接到 Pi 的 USB 3.x 端口,因此将它们各自的最大理论传输速率降低到 2560 Mbps (5120/2)而不是将一个连接到 USB2 端口,另一个连接到 USB3,因为这会将两者的最大理论传输速率降低到仅 480Mbps。¹

选项 2:在速度上有所不同。²

好的,所以您没有时间、金钱或物理空间在此解决方案中放置一个 USB HUB、一个 Pi 和 2 个 HDD:
因为 RAID(任何版本)中没有“主要”和“次要”这样的东西但只有JBOD合二为一,您可以使用 的write-mostly选项mdadm来规避一些差异。

此选项将指定其中一个 HDD 为“慢”,所有读取都将来自快速的,但所有写入仍将等待慢的。(所以只有USB 3.0磁盘的一半好处)

设置 RAID:

以下所有命令都需要作为root或使用sudo.

假设第一个 HDD 出现,/dev/sdc第二个HDD/dev/sdd执行以下命令以md0使用 2 个 HDD创建一个名为RAID 级别 1的软件 RAID :

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
Run Code Online (Sandbox Code Playgroud)

仅当您使用选项 #2 时,您才应该--write-mostly 在慢速驱动器之前添加(sdd作为示例)并使用以下命令而不是上面的命令(将鼠标悬停在它上面以取消隐藏它以避免混淆使用哪个):

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc --write-mostly /dev/sdd

现在我们必须在新创建的/dev/md0软件 RAID上创建一个文件系统:

mkfs.ext4 -F /dev/md0
Run Code Online (Sandbox Code Playgroud)

现在我们要安装这个空间/mnt(如果你需要把它安装在其他地方,用这个代替)

mkdir --parents /mnt/md0
Run Code Online (Sandbox Code Playgroud)

并编辑您fstab以在每次启动时包含此安装(在 末尾添加第二行fstab):

nano /etc/fstab
/dev/md0  /mnt/md0 ext4 defaults 0 2
Run Code Online (Sandbox Code Playgroud)

Ctrl+X Y Enter保存并退出。

现在重新启动以使其处于活动状态或键入以下命令而不重新启动:

mount /dev/md0 /mnt/md0
Run Code Online (Sandbox Code Playgroud)

注 1:链中最薄弱的环节决定了 2 个 HDD 成为一个时的整体速度。 :-(
注 2:感谢fra-sanStephen Kitt我指明了第二个选项的正确方向
注 3:有关pi 本身mdadm类型的更多信息man mdadm并阅读它(所有这些甚至你认为的东西您永远不需要在失败后重新组装 RAID...) ;-)
注 4:RAID 不是备份的替代品!;-P