升级了 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 不为它们创建设备呢?
我看到了这个:
但是,这并不完全适用。就我而言,之前和之后的主板都是 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
我忘记了在之前的盒子上设置了它。我不完全确定设备映射器为什么会这样做,但是……这阻止了它 :-)