我有四块 500GB 的磁盘,在安装 Debian 时设置为 Linux Software-RAID 5 卷(位于系统驱动器旁边,系统驱动器是 SSD)。其中一个驱动器 (sda) 坏了,现在我正尝试更换它,但遇到了一些麻烦。
在 mdadm 中从阵列中移除坏驱动器后,我用新买的 PC 附带的另一个 500GB 备用驱动器替换了该驱动器。该驱动器有一个 NTFS 分区,上面有 Windows(已立即用 SSD 替换)。
第一次尝试(或多或少)出了问题 - NTFS3G 看到了分区,我能够将 NTFS 卷添加到阵列并开始重建。在我的 RAID 下使用 NTFS 绝对不是我的本意,所以我停止了重建并开始对驱动器进行重新分区。
起初我尝试使用 fdisk 手动分区(最大大小、默认值、分区类型“fd”) - 没有成功,mdadm 拒绝了 sda1。使用 fdisk 快速检查 - Start、Blocknumber 和 End 不匹配 - 好的,我明白问题所在了。
第二次尝试是使用“sfdisk -d /dev/sdd | sfdisk /dev/sda”从其他磁盘复制分区数据。我甚至按照 sfdisk 在其评论末尾的建议将前 512 字节归零。比较分区数据(开始、结束和匹配的块数)看起来不错。
但是现在 mdadm 告诉我 /dev/sda1 不是块设备,不允许我添加它。但是可以销毁 /dev/sda 上的分区数据,并将整个驱动器交给 mdadm,它将重建,但现在这看起来有点不对劲:
Number Major Minor RaidDevice State
4 8 0 0 active sync /dev/sda
1 8 17 1 active sync /dev/sdb1
2 8 33 2 active sync /dev/sdc1
3 8 49 3 active sync /dev/sdd1
而且我对此感觉非常不好,因为 fdisk 现在找不到 /dev/sda 上的分区 - 在系统崩溃的情况下,当使用整个驱动器而不是分区时,在另一个系统上重新组装阵列似乎有点棘手(另请参阅:这里)。
我错过了什么?我如何告诉 mdadm 将分区用于其 RAID?或者有人仍然建议使用整个驱动器(甚至转换其他驱动器)?或者 debian 安装程序在那里所做的(在完整驱动器上设置分区以从分区中创建 RAID)是否真的更有意义?
我希望我没有给出太多的文字和细节,但是现在我有点困惑,因为我按照几个教程推荐的方式做了所有事情,现在我偶然发现了这些基本问题......
感谢您的帮助!
答案1
首先,我认为使用完整的驱动器进行 mdadm 操作没有任何问题。换句话说,您的设置现在就可以正常工作,您再摆弄它也不会有任何好处。从您引用的答案来看:
分区 RAID 有其用途,但是当您在伪存储池设置中使用驱动器时,有时最好使用“整个驱动器”而不是“分区” RAID 成员。
现在,如果您仍然想使用分区:您第一次所做的是正确的,但看起来内核没有注册/dev/sda1
。要么是内核没有注册(只需重新启动它就会自行解决),要么您对其他驱动器使用了 GPT 分区(据我所知,sfdisk 不支持 - 您只是复制了保护性 MBR)。使用 gdisk 或 gparted 等工具重试。
您可以/dev/sda
从 raid 中移除(标记为失败,将其从阵列中移除),制定合理的分区布局(如果您使用 GPT,请确保使用 gdisk 或类似程序),必要时重新启动并添加/dev/sda1
到您的 RAID 阵列。
答案2
我喜欢在重新用于 mdadm 之前用零填充旧驱动器。这会使驱动器恢复出厂设置并避免此类问题。这将用零填充 /dev/sda...
dd if=/dev/zero of=/dev/sda bs=1M