起動すると、毎回それを詰め込みます:
[root][centos ~] cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md127 : inactive sda[2] sdb[3]
1953524992 blocks
unused devices: <none>
[root][centos ~] mdadm --stop /dev/md127
mdadm: stopped /dev/md127
[root][centos ~] mdadm --assemble --scan
mdadm: /dev/md0 has been started with 4 drives.
[root][centos ~] cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sda1[0] sdd1[3] sdc1[2] sdb1[1]
2930279424 blocks level 5, 1024k chunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>
最初にBSmd127を検出し、次にそれを停止してから再アセンブルする必要があることがわかります。これは奇妙なことです。2つのmd0を検出しますが、成功します。
[root][centos ~] mdadm -Es
ARRAY /dev/md0 UUID=39c28990:e753d835:8b94c90b:72da1a08
ARRAY /dev/md0 UUID=88edc937:2ecbc9bb:8b94c90b:72da1a08
私のmdadm.conf
[root][centos ~] cat /etc/mdadm.conf
DEVICE partitions
ARRAY /dev/md0 UUID=88edc937:2ecbc9bb:8b94c90b:72da1a08
MAILADDR root
CREATE owner=root group=disk mode=0660 auto=yes
HOMEHOST <system>
しかし、dmesgで最も奇妙なことは、問題はここにあると思います。
md: kicking non-fresh sdc from array!
md: unbind<sdc>
md: export_rdev(sdc)
md: kicking non-fresh sdd from array!
md: unbind<sdd>
md: export_rdev(sdd)
async_tx: api initialized (async)
xor: automatically using best checksumming function: generic_sse
generic_sse: 6532.000 MB/sec
xor: using function: generic_sse (6532.000 MB/sec)
raid6: int64x1 1664 MB/s
raid6: int64x2 2148 MB/s
raid6: int64x4 1453 MB/s
raid6: int64x8 1457 MB/s
raid6: sse2x1 2417 MB/s
raid6: sse2x2 3222 MB/s
raid6: sse2x4 3429 MB/s
raid6: using algorithm sse2x4 (3429 MB/s)
md: raid6 personality registered for level 6
md: raid5 personality registered for level 5
md: raid4 personality registered for level 4
raid5: device sda operational as raid disk 2
raid5: device sdb operational as raid disk 3
raid5: allocated 4282kB for md127
2: w=1 pa=0 pr=4 m=1 a=2 r=4 op1=0 op2=0
3: w=2 pa=0 pr=4 m=1 a=2 r=4 op1=0 op2=0
raid5: not enough operational devices for md127 (2/4 failed)
RAID5 conf printout:
--- rd:4 wd:2
disk 2, o:1, dev:sda
disk 3, o:1, dev:sdb
raid5: failed to run raid set md127
md: pers->run() failed ...
私はそれを見つけたと思います、それは私のmdadm.confファイルが十分に具体的でなく、おそらくOSを混乱させる問題でした。
だから私はこれを読んだ: http://manpages.ubuntu.com/manpages/hardy/man5/mdadm.conf.5.html
そして私はこれを使うと
DEVICE partitions
次に:
これにより、mdadmは/ proc/partitionを読み取り、そこにあるすべてのデバイスとパーティションを含めます。
だから私はそれをに変更しました
DEVICE /dev/sd[abcd]1
ブートプロセスはルートファイルシステムをマウントできるようになるまでそのバージョンを使用する必要があるため、おそらくinitrd
を再構築して正しいmdadm.conf
ファイルを含める必要があります。
あなたがする必要があるのはこのようなものです:
mkinitrd /boot/initrd-<kernel-version>.img <kernel-version>
ここでは、使用しているCentOSバージョンがまだmkinitrd
を使用していると想定しています。dracut
に切り替えた場合は、次のようにします。
dracut /boot/initramfs-<kernel-version>.img <kernel-version>
いずれの場合も、新しいファイルをビルドする前に、まず古いファイルの名前を変更する必要があります。
mdadmはmdデバイスをアセンブルできる必要があります。いくつかの間違ったドライブが表示されているようです。
md127:非アクティブsda [2] sdb [3]
これは、パーティションsda1 sdb1 sdc1 sdd1ではなく、sdaディスクとsdbディスク全体をRAIDアレイに使用しているように見えます。
Blkidは何を示していますか? mdadm -E/dev/sdaまたはmdadm-E/dev/sdbは何を示していますか?
たぶん、スーパーブロックで何か奇妙なことが起こっています。
TomHが言ったように、initrdの再構築も試みる必要があります。
Ubuntuではこれでこの問題を解決しました:
Sudo update-initramfs -k all -u