如何使用 mdadm 设置 FakeRAID/SoftRAID 而不丢失数据?

如何使用 mdadm 设置 FakeRAID/SoftRAID 而不丢失数据?

通过 Silicon Image 3132 SATA SoftRAID 控制器连接了 2 个驱动器的 RAID0。在 Windows 下,它被分区为一个具有 4 TB NTFS 卷的动态 GPT 磁盘。驱动器上有很多音乐和电影。我试图让它在 Ubuntu 下被视为单个磁盘,而不是 2 x 2 TB。

我尝试通过 dmraid 读取它,但没有成功,它没有显示在 中/dev/mapper。还尝试配置内核,但没有发现任何可疑的东西,我的控制器的驱动程序已打开。还有一个来自制造商的驱动程序,但它仅适用于 RHEL 和 SLES。这里据报道,内核支持 SoftRAID,但显然不是完全支持。如果我将驱动器插入主板内置的 AMD 控制器,驱动器将被视为单个驱动器,但数据会丢失。我知道 mdadm 能够丢弃磁盘上的所有信息。那么,是否有可能以某种方式创建一个阵列,而无需实际记录所用驱动器的信息,并让系统稍后正确识别其中的部分?

阵列相关信息:

/dev/sdf - Disk 0
/dev/sdg - Disk 1
Array type: Stripe
Chunk Size: 64KB

/dev/md1另外,使用命令创建设备mknod /dev/md1 b 9 1

答案1

不得不销毁我的数据,但找到了解决办法。该--build命令实际上构造了一个现存的数组并运行它。我的完整命令如下:

sudo mdadm --build --verbose --chunk=64K /dev/md1 --level=0 --raid-devices=2 /dev/sdh /dev/sdi

我认为 chunk 和 level 选项不是必需的,但使用它们可以确保一切正常。而且我也不应该使用该--create命令,因为它会破坏现有数组。

随着时间的推移,dmraid 得到了改进。现在,在 2017 年,它可以检测 Silicon Image SoftRAID 卷,所以我只需安装并运行即可dmraid -ay

相关内容