使用网络共享作为驱动器的软件 RAID

zeb*_*aut 5 raid software-raid

免责声明:从性能的角度来看,这可能是疯狂的,也从可靠性的角度来看,也许只是学术价值(如:它会起作用吗?)。话虽如此:

mdadm 是否支持将单个冗余磁盘作为网络驱动器的 RAID 设置?

这是我的(疯狂?)想法的背景:我想使用一个只有一个小磁盘的linux盒子来容纳系统。通过以太网连接到这个盒子的是另外两台机器,每台机器都有一个 RAID-0 系统,可以从旧硬盘驱动器中获得一些用途。两个 RAID-0 卷都构建为具有大致相同的大小。现在,这些机器中的每一个都提供 RAID-0 卷作为网络共享,并且盒子将它们分别安装为 /old_drives_0 和 /old_drives_1。

最重要的是,我想告诉 mdadm on box 使用 /old_drives_0 和 /old_drives_1 作为两个镜像“磁盘”构建一个 RAID-1 系统,并在网络上提供这样创建的 RAID-1 卷作为驱动器。

我可以告诉 mdadm 使用任何挂载点(而不是通常的 /dev/sdaX),例如:

mdadm /dev/md0 --create --raid-devices=2 --level=1 /old_drives_1 /old_drives_2
mkfs /dev/md0 # optionally specifying -text3 or -text4
mount /dev/md0 /raid
Run Code Online (Sandbox Code Playgroud)

(粗略地引用https://unix.stackexchange.com/a/48437/27804

我知道不通过网络建立突袭的原因有很多,但也可能有支持它的原因:一旦磁盘损坏,我所要做的就是将网线连接到另一台机器上......还有,当我将三个 NIC 放入盒子中时,它可以通过专用以太网连接访问自己的两个 RAID“驱动器”,并将第三个用于上游流量,以便从其客户端访问 RAID-1 卷。

我什至可以保留一个“盒子”和一个“机器”作为直接替代品,一旦出现故障,就可以进行快速维护。

Hau*_*ing 6

RAID 总是需要一个设备(至少如果你使用 md)。有两种方法。可能更好的方法是使用网络块设备:

https://en.wikipedia.org/wiki/Network_block_device

您可以通过mdadm ... --write-mostly.

另一种选择是在网络卷(文件系统级别)上创建一个文件并将其用于循环设备。

  • NBD 是这个用例的更好选择,因为它的协议比 NFS 的开销更少(需要处理并发访问锁定、缓存等,这与 NBD 和 md 操作的层无关)。免责声明:我确实维护 NBD 用户空间工具。 (2认同)