/dev 分区丢失,因此 mdadm 损坏。如何让 Linux 查看分区?

/dev 分区丢失,因此 mdadm 损坏。如何让 Linux 查看分区?

升级了 Linux 系统并更换了根驱动器。我移动了三个 SATA 驱动器的 RAID-5 阵列(不是根驱动器)。重新安装了操作系统,但之前和之后都是 CentOS 6.4。

# mdadm --assemble /dev/md1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: cannot open device /dev/sdc1: No such file or directory
mdadm: /dev/sdc1 has no superblock - assembly aborted

确实,没有 /dev/sdc1。

该分区确实存在:

# fdisk -l /dev/sdc

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000cca42

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1      121601   976760001   83  Linux

驱动器显示在 BIOS 中,显然我可以对它们进行 fdisk 操作,这样它们就可以正常工作了。但是为什么 Linux 不为它们创建设备呢?

我看到了这个:

/dev 中缺少分区

但是,这并不完全适用。就我而言,之前和之后的主板都是 Intel RAID Matrix 主板,但我从未使用过 Intel 的 RAID - 一直使用 mdadm 并在内核中执行 RAID。

当我进行检查时:

# mdadm -Evvv /dev/sdc
/dev/sdc:
   MBR Magic : aa55
Partition[0] :   1953520002 sectors at           63 (type 83)

/dev/mapper 中我什么也没看到。操作系统是最新的 6.4 版本(还没有进行 yum 更新)。

那么...我怎样才能让 /dev/sdc1 显示在操作系统上?

/dev/sdd1 和 /dev/sde1 也存在同样的问题,它们是旧阵列中的另外两个驱动器。/dev/sdf1 到 /dev/sdi1 (新的)都运行正常。

答案1

您以前一定使用过 Intel fakeraid 中的驱动器,并且只是禁用了 raid bios。这会将 fakeraid 签名留在驱动器上,从而dmraid识别并隐藏分区,因为您不应该接触它们,只能通过设备dmraid。用于dmraid -E擦除驱动器上的 fakeraid 签名。

答案2

yum 更新未能修复该问题。

解决方案是:将“nodmraid”添加到内核的启动行:

title CentOS (2.6.32-358.14.1.el6.x86_64)
        root (hd1,0)
        kernel /boot/vmlinuz-2.6.32-358.14.1.el6.x86_64 ro root=UUID=bcc55ef9-43b4-4938-a1a6-9ccd1f9be1f8 rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 nodmraid rd_MD_UUID=e5431160:92d33565:164c859f:ee1f94e6 SYSFONT=latarcyrheb-sun16 quiet rd_NO_LVM rd_NO_DM crashkernel=auto
        initrd /boot/initramfs-2.6.32-358.14.1.el6.x86_64.img

我忘记了在之前的盒子上设置了它。我不完全确定设备映射器为什么会这样做,但是……这阻止了它 :-)

相关内容