我有一台 RHEL 6 文件服务器。它包含两个相同的 2TB SATA 驱动器。两个驱动器都应包含一个分区,该分区占用驱动器上的所有空间(过去也确实如此)。当我设置系统时,这意味着我有一个 /dev/sda1 和一个 /dev/sdb1,它们构成了我的 raid 阵列的两个活动成员。当时,这两个分区都跨越了驱动器上的所有柱面。/dev/md0 映射到 /。(没有单独的分区用于 /boot 或其他任何内容。)
由于 lba 寻址故障,sda 最近从 raid 中移除,在验证驱动器后,我盲目地将 /dev/sda 而不是 /dev/sda1 添加到 raid。当我意识到自己的错误时,我将 /dev/sda 设置为故障,将其从 raid 中移除,并决定将 /dev/sda1 重新创建为覆盖整个驱动器的单个分区,并将其重新添加到 raid。
我这次任务失败了,因为我无法让 /dev/sda1 分区与 /dev/sdb1 分区的大小相匹配。
如前所述,两个驱动器完全相同,因此它们具有相同数量的柱面。假设这个数字是 X。fdisk 将允许我创建一个从柱面 1 到柱面 X 的 /dev/sda1 分区。太好了。但是 md 不允许我将其添加到阵列中,因为它说大小不一样。因此,我通过 fdisk 查看了 /dev/sdb1,结果如下:它从柱面 1 到柱面 X+1!咦?
有人能向我解释发生了什么并告诉我如何解决这个问题吗?
答案1
您可能在选择最终磁柱时遇到舍入错误。请尝试指定略小的分区大小,然后让分区软件为您舍入。
答案2
更新:我做了相反的事情。我从 md0 中删除了 /dev/sdb1,尝试重新分区,然后重新添加 /dev/sdb1。这也不起作用,因为 /dev/sda 现在比 /dev/sdb1 大一个磁柱,而 /dev/sda 是 md0 的一部分。所以我将 /dev/sdb(而不是其分区)添加到 md0。这有效。所以现在我已将 /dev/sda 和 /dev/sdb 添加到 /dev/md0。至少,这是对称的。现在我遇到了一个有关 grub 的新问题,我发布了一个后续问题为了它。
答案3
首先,我不知道发生了什么。但我认为你仍然可以得到由分区组成的 RAID。首先,擦除 /dev/sda 的开头以清除任何分区表或 RAID 签名或任何带有 (小心,这将破坏 sda 上的数据)
dd if=/dev/zero of=/dev/sda bs=1M count=10
然后尝试以下方法之一
交互式 fdisk:
- 执行“fdisk -lu /dev/sdb”来找出 /dev/sdb1 开始和结束的确切扇区。
- 使用“fdisk /dev/sda”对 /dev/sdaa 执行交互式 fdisk。输入“u”即可在扇区中工作。使用步骤 1 中显示的开始/结束扇区创建一个新的主分区。
- 保存在 fdisk 中,然后使用“fdisk -l”进行验证或使用 /dev/sda1 再次尝试 mdadm。
暴力破解:
- 使用“dd if=/dev/sdb of=/dev/sda bs=512 count=1”将分区表从 /dev/sda 复制到 /dev/sdb。
- 重新启动或运行“partprobe”以使系统识别新的 /dev/sda1。尝试使用 mdadm 添加 /dev/sda1
复杂:
- 创建您想要的大小的 sda1(稍微小一点也可以)。
- 使用 /dev/sda1 和丢失的设备重新创建一个新的 RAID 阵列 (md1)。'mdadm --create /dev/md1 --level 1 --raid-devices=2 missing /dev/sda1'
- 在 /dev/md1 上创建文件系统并挂载 /dev/md0 和 /dev/md1。
- 将 /dev/md0 的内容复制到 /dev/md1。
- 将 /dev/sdb1 重新分区为您在步骤 1 中使用的大小。
- 将 /dev/sdb1 添加到 /dev/md1。