我无意中用 mdadm --create 将 1 个磁盘 raid1 打开为 raid0,这似乎覆盖了默认的 raid 元信息,并使我的设备在用 mdadm --assemble --scan 检测为 raid0。出于显而易见的原因,我目前看不到我的分区,所以我确定我没有向该分区写入任何内容。
有没有一种安全的方法可以恢复 1 个磁盘 raid1,而不会丢失磁盘上的数据?
非常感谢,克鲁尼
更新:
感谢您的快速回复。我可能回答得不够具体,让我来修正一下。
场景: - 我有一个 raid1,其中 sda1 和 sdb1 位于 /dev/md0 中,运行良好。 - 我的 sdb 开始出现故障,因此我移除 sdb 并将其带回去以获得保修。 - 我从救援 CD 启动,这会混淆我的驱动器顺序:我的 mb 上有 2 个 sata 端口,Sil SATA 卡上有 4 个其他 sata 端口,即作为内核模块加载与编译到内核时的差异可能会导致这样的事情 - 所以毕竟我犯了错误说 mdadm --create /dev/md1 --level=0 --raid-devices=1 /dev/sda1 -f 并创建了我的 md1,我发现混淆了。
我没有擦除包含 raid1 数据的分区。我没有创建新的文件系统(我希望及时意识到这一点)。
然而我注意到 mdadm 元数据可能已更改为 v1.2 - 我认为这没有其他含义,但它保存在其他地方 - 这也让我认为以前的 raid 元信息应该仍然可用。
因此,这背后真正的问题是:mdadm --create 到底是做什么的?在同一分区上执行 mdadm --create /dev/md0 --level=0 能解决这个问题吗?还是会导致更大的麻烦?我能否找到以前的元数据(我没有看到任何被删除/擦除/等的迹象)并使用它来重建有故障的 /dev/md0?如果可以,如何找到?
答案1
首先,我建议你再创建一份硬盘副本。这是必要的,以免在尝试修复 RAID 时出现错误而导致数据丢失。
您可以使用以下命令创建raid1阵列:
$ sudo mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
当然,您可以根据自己的需要自定义上述命令。
您可以使用以下命令检查突袭状态:cat /proc/mdstat
。
您还可以查看man mdadm
以获取更多帮助。
答案2
如果您打算使用 RAID1,我猜您有一种备份系统的方法,我就不多说了。
您不能简单地从 RAID0 更改为 1。您必须创建一个新阵列,这将清除驱动器上的所有数据。您可以进行备份,创建 RAID1 阵列,然后将备份恢复到新阵列上。