sda 和 sdb 块特殊指向同一设备并混淆(新安装 12.04 后硬件 RAID 不起作用)

sda 和 sdb 块特殊指向同一设备并混淆(新安装 12.04 后硬件 RAID 不起作用)

我刚刚安装了最新的 Ubuntu 12.04,显然它搞砸了一些事情。我不确定这是否与我有 Raid 1 有关,但目前,我有 sda 和 sdb 指向同一设备:

# blkid
/dev/sda1: UUID="88aa922a-4304-406e-8abd-edc2e9064d79" TYPE="ext2" 
/dev/sda2: UUID="22b881d5-6f5c-484d-94e8-e231896fa91b" TYPE="swap" 
/dev/sda3: UUID="e1fa161b-b014-4a6b-831a-9d8f9e04be07" TYPE="ext3" 
/dev/sda5: UUID="6ed19886-1cba-47b2-9ce0-7c2ea8f9c3c9" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sdb1: UUID="88aa922a-4304-406e-8abd-edc2e9064d79" TYPE="ext2" 
/dev/sdb2: UUID="22b881d5-6f5c-484d-94e8-e231896fa91b" TYPE="swap" 
/dev/sdb3: UUID="e1fa161b-b014-4a6b-831a-9d8f9e04be07" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sdb5: UUID="6ed19886-1cba-47b2-9ce0-7c2ea8f9c3c9" TYPE="ext3" 

但我只有一个“可见”硬盘,所以这应该是 sda。在我的早期版本(10.10)中,/dev/mapper 解决了这个问题。查看下面的挂载点。在当前版本中,这个不再起作用了,所以我一开始在fstab中输入了sda挂载点,这似乎可以工作,但是当我执行mount命令时,我看到突然有一个分区被挂载为sdb而不是sda。所以我尝试在fstab中使用UUID作为文件系统,但问题仍然存在。更糟糕的是:它混淆了两种设备。这意味着它有时会将一个分区挂载为 sda,而在下次重新启动时,它会突然挂载为 sdb。它的行为就像它会挂载不同的硬盘驱动器,因为我的 /home 分区曾经作为 sda 挂载,现在作为 sdb 挂载,并且我在文件系统中所做的更改和设置突然“重置”。我能做些什么?我应该删除所有 sdb 块特价吗?

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
#/dev/mapper/pdc_ccfhbjbeeg3 /               ext3    errors=remount-ro 0       1
#/dev/mapper/pdc_ccfhbjbeeg1 /boot           ext2    defaults        0       2
#/dev/mapper/pdc_ccfhbjbeeg5 /home           ext3    defaults        0       2
#/dev/mapper/pdc_ccfhbjbeeg2 none            swap    sw              0       0
#/dev/sda1                   /boot           ext2    defaults        0       2
#/dev/sda2                   none            swap    sw              0       0
#/dev/sda3                   /               ext3    errors=remount-ro 0     1
#/dev/sda5                   /home           ext3    defaults        0       2

UUID=e1fa161b-b014-4a6b-831a-9d8f9e04be07      /               ext3    errors=remount-ro 0     1
UUID=88aa922a-4304-406e-8abd-edc2e9064d79       /boot           ext2    defaults        0       2
UUID=6ed19886-1cba-47b2-9ce0-7c2ea8f9c3c9      /home           ext3    defaults        0       2
UUID=22b881d5-6f5c-484d-94e8-e231896fa91b       none            swap    sw     0       0

顺便说一句更新
,Ubuntu 安装程序显示 RAID 阵列而不是分区。也可以看看https://bugs.launchpad.net/ubuntu/+bug/973147

答案1

看看如果你激活了一个raid,你是否可以隐藏你的真实磁盘。这可能是您 PC 的主系统或 RAID-BIOS 中的设置。

我在 CentOS 5.5 上也遇到了类似的问题,升级到 5.6 后就消失了。

在浏览了一些关于这些伪袭击设备的网页后,我按照那里给出的建议并将其停用。之后我用纯 Linux 方式重建为纯软件 raid ( man mdadm)。

在此过程中,我没有丢失任何数据并获得了大量空间 - 我将一些分区放入 RAID0 配置中,以存储需要快速且可以轻松恢复的数据。

答案2

我怀疑你有一个“假RAID”控制器。这些 RAID 控制器仅在 BIOS 中提供最低限度的支持;大部分工作是在 Windows 驱动程序中完成的。 Linux 通常无法很好地处理这些控制器,因为它缺少 Windows 驱动程序。看到单个 UUID 但有两个磁盘是假 RAID 的常见症状(Windows 驱动程序会知道有两个磁盘,但它们应该具有相同的内容)。

如果您有假 RAID 设备(您可能有:消费级 RAID 控制器几乎总是假 RAID),并且您不与 Windows 共享磁盘,请在 BIOS 中关闭 RAID。然后启用 Linux 的软件 RAID,它对于 RAID-1 在各方面都更胜一筹(除非您与 Windows 共享磁盘)。

也可以看看Ubuntu 假 RAID 指南,如何区分“假 RAID”和真正的 RAID?

答案3

我找到了一个非常简单的解决方案来让我的(显然是假的)硬件 RAID 再次工作。

重新安装 Ubuntu 12.04 后,我没有重新启动,而是保持在尝试模式。然后我安装 / 并编辑

/usr/share/initramfs-tools/scripts/local-top/dmraid

我在最后一条评论后添加了 dmraid -ay :

# Activate any dmraid arrays that were not identified by udev and vol_id.
dmraid -ay
if devices=$(dmraid -r -c); then
    for dev in $devices; do
        dmraid-activate $dev
    done
fi

我想就是这样,但一开始我添加了

dm-raid45
dm-mirror
dm-region-hash

/etc/modules

我不确定这是否重要,因为第一次启动后(最终在没有回退到维护控制台的情况下工作), /etc/modules 不再包含这 3 个模块,所以我想你可以忽略它。

当我执行 mount 时,我看到 /dev/mapper 再次挂载:

/dev/mapper/pdc_ccfhbjbeeg3 on / type ext3 (rw,errors=remount-ro)
/dev/mapper/pdc_ccfhbjbeeg1 on /boot type ext2 (rw)
/dev/mapper/pdc_ccfhbjbeeg5 on /home type ext3 (rw)

答案4

由于您不是使用 Windows 双启动,因此您应该停止使用 fakeraid 并使用普通的 mdadm 软件 raid 重建系统。由于您安装了各个磁盘,因此损坏了 raid 阵列,导致两个副本彼此不同步。即使您现在正确安装阵列,读取有时也可能会从其他磁盘返回不同步的数据,这可能会导致大量文件系统损坏。

请注意,您必须实际删除 raid 阵列才能摆脱它,而不仅仅是将控制器模式切换回非 raid,否则 Ubuntu 仍然会识别并尝试使用它。

另请记住,raid 不能替代备份。旨在提高速度和/或减少硬件故障时的停机时间;它不能防止数据丢失。

相关内容