web-dev-qa-db-ja.com

新しいmdadmRAIDは再起動後に消えます

再起動後にmdadmに問題があり、再アセンブルできません/dev/md0

私はdebianwheezyに取り組んでいます。

私は次の手順を実行しました::

Sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sd[b-e]
cat /proc/mdstat
Sudo mdadm --readwrite /dev/md0
Sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf
echo check > /sys/block/md0/md/sync_action
Sudo pvcreate /dev/md0
Sudo pvdisplay
Sudo vgcreate vgraid6 /dev/md0
Sudo lvcreate -l 100%FREE -n lvHD vgraid6
Sudo mkfs.ext4 -v /dev/vgraid6/lvHD

ここではすべて正常に動作します。

RAIDをマウントした後、RAIDを使用したり、ファイルを作成したり、他のPCからアクセスしたりできます...

問題が発生しました:

サーバーを再起動した後(今すぐ再起動)、RAIDはもう存在しません。/dev/md0 なくなっている。

最初にチェックしました/etc/mdadm/mdadm.conf

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
#DEVICE partitions containers
...
CREATE owner=root group=disk mode=0660 auto=yes
MAILADDR root
ARRAY /dev/md0 metadata=1.2 name=media:0 UUID=cb127a0b:ad4eb61d:e0ba8f82:db4b062d

私が試した後:

$ mdadm --stop --scan
$ mdadm --assemble --scan

または:

$ Sudo  mdadm --assemble /dev/md0 /dev/sd[b-e]
    mdadm: Cannot assemble mbr metadata on /dev/sdb
    mdadm: /dev/sdb has no superblock - Assembly aborted


$ Sudo  mdadm --examine /dev/sd[b-e]
/dev/sdb:
   MBR Magic : aa55
Partition[0] :   4294967295 sectors at            1 (type ee)
/dev/sdc:
   MBR Magic : aa55
Partition[0] :   4294967295 sectors at            1 (type ee)
/dev/sdd:
   MBR Magic : aa55
Partition[0] :   4294967295 sectors at            1 (type ee)
/dev/sde:
   MBR Magic : aa55
Partition[0] :   4294967295 sectors at            1 (type ee)

Mdadmデーモンが実行されています(ps aux | grep mdadm

空の/ proc/mdstat

$ cat /proc/mdstat
Personalities :
unused devices: <none>

どうしましたか?

1
peon

その理由は2つあります。

  • (new)mdadm.confは、配列がアセンブルされるまでに読み取られていません。

    これは、ルートファイルシステムがマウントされる前に発生するため(明らかに、アクセスするには動作中のRAIDデバイスが必要です)、このファイルは、いわゆるプリブート環境を含むinitramfsイメージから読み取られます。

    したがって、これを機能させるには、構成を更新した後、

    # update-initramfs -u
    

    initramfsを更新します。

  • RAIDデバイスが検出されておらず、起動時に自動的に組み立てられていません。

    これを提供するには、メンバーパーティションのタイプを0xfd(Linux RAID自動検出)に変更します—MBRスタイルのパーティションテーブルの場合は00FD(同じ)に変更します。これを行うには、それぞれfdiskまたはgdiskを使用できます。

    mdadmは起動時に(initramfsから)実行され、使用可能なパーティションをスキャンし、タイプ0xfdのすべてのパーティションからメタデータブロックを読み取り、可能なすべてのRAIDデバイスをアセンブルして起動します。これには、initramfsイメージ内の最新のmdadm.confのコピーは必要ありません。

どの方法を好むかはあなた次第です。私は個人的には2番目のようですが、複数の(多くの)RAIDデバイスがあり、起動時にそれらのいくつかを起動し(ルートファイルシステムが機能している必要があります)、残りを後でアクティブにしたい場合は、最初のアプローチまたは組み合わせそれらの中で行く方法です。

12
kostix

答えてくれてありがとう。

私はすでにinitranfdを更新しようとしましたが、成功しませんでした。

2番目のヒントで、問題を修正します。

以下を使用して、各ディスクにパーティションを作成します。

gdisk /dev/sd[b-e] \n \ \fd00\w\y

デバイスのいずれかのパーティションにmdadmを作成します(最後に1をチェックしてください)

Sudo mdadm --create --verbose /dev/md0 --level=6 --assume-clean --raid-devices=4 /dev/sd[b-e]1
0
peon

私はそれが古い投稿であることを知っています、しかし私はこの問題に苦労していました、そしてこれは私の結果です:

私のディスクは「凍結」されていました-Seagateディスク。コマンドを入力して、同じ問題があるかどうかを確認できます。

hdparm -I /dev/sdb

示した:

Security: 
Master password revision code = 65534
    supported
not enabled
not locked
    **frozen**
not expired: security count
    supported: enhanced erase

この設定を変更できませんでした。ディスクは通常のパーティションで正常に機能しましたが、Linux RAIDとしてフォーマットしていると、パーティションテーブルが失われ、再起動後に「空」になりました。

デバイスではなく、パーティションにレイドを作成しました。

mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

そして今、それらは再起動後に問題なく、すべてが期待どおりに機能します。

0
user1158172