我有一些几年前出现故障的旧硬件,但我仍然有 2 个 HDD,都配置为 JBOD。
有没有办法将这些驱动器转储到一块 HDD 上,并在实际硬件不再可用的情况下移除/重建 JBOD?
JBOD 建立在 Promise 20579 芯片(适用于 AMD 64 的 MSI Mainboard K8T Neo)上。
答案1
你的磁盘可能只是连接的合并到一个大卷中。这是 JBOD 最简单的解决方案。如果只有硬件人员能够跟上KISS 原则,您将可以毫无问题地使用软件而不是硬件来访问/转储数据。
在 Linux 中,正确的工具是dmsetup
,但如果您只想将磁盘转储到映像(或另一个磁盘),那么简单的工具cat
就足够了。
调查
首先,您需要知道 JBOD 中磁盘的原始顺序。识别第一个磁盘应该很容易;棘手的部分是排列其余磁盘的顺序。对于有两个 HDD 的情况,您应该不会遇到问题。第一个磁盘具有有效的 MBR 分区表或有效的 GPT(主分区表,但不是辅助分区表),它描述了全部的JBOD。除非您使用的 JBOD 没有任何分区表,否则此方法将有效。检查您的磁盘gdisk -l
并识别第一个磁盘。
准备
在我的例子中,正确的顺序是/dev/sdb
,/dev/sdc
。请根据需要更改以下变量定义。
device1=/dev/sdb
device2=/dev/sdc
这样,您就可以使用后面的 Bash 命令而无需进行任何更改。
要将磁盘转储到映像,这应该足够了(注意:从现在开始您可能需要sudo
):
cat "$device1" "$device2" > image.raw
如果您想要实际使用 JBOD,则需要做更多准备。您需要将设备的大小存储在 512 字节扇区中。检索大小的命令如下blockdev --getsz /dev/sdX
,因此
size1="$(blockdev --getsz "$device1")"
size2="$(blockdev --getsz "$device2")"
确认echo "$size1" "$size2"
您有两个数字。(完整性检查:如果将它们乘以 512,您应该会得到磁盘的大小。)
映射设备创建
现在该创建一个虚拟串联设备了。以下代码使用这里的文件语法以提高可读性。如果您不使用 Bash,则可能需要对其进行调整。另一方面,使用 Bash 时,只需粘贴到终端即可。
dmsetup create mydevice << EOF
0 $size1 linear $device1 0
$size1 $size2 linear $device2 0
EOF
注意mydevice
是任意名称。第二行和第三行创建 的设备映射dmsetup
。请参阅man dmsetup
了解更多信息。
现在您应该可以/dev/mapper/mydevice
使用了;它是您的 JBOD。(我不能 100% 确定 的每个实现都会dmsetup
在 中创建节点/dev/mapper/
;但mydevice
应该会出现在某个地方。)像使用任何其他设备一样使用它。
安装
读我的另一个答案。 整个安装其中的部分适用于您的情况。
打扫
摧毁/dev/mapper/mydevice
:
dmsetup remove /dev/mapper/mydevice
当然你应该umount
先对它进行分区。