各ブート後にmdadmでRAIDを自動アセンブルするにはどうすればよいですか?


43

を利用して、RAID(ミラーリング)を作成しましたmdadm。ただし、起動するたびに次のコマンドを実行する必要があります。

mdadm --stop --scan // to stop /dev/md127 - I don't know where the number 127 even comes from
mdadm --assemble --scan // to start /dev/md0

何が間違っているのですか、ブート時にこれらのコマンドを実行する必要があるのはなぜですか?各(再)ブートでRAIDを自動起動する正しい方法は何ですか?

回答:


36

注:rootとしてログインするか、sudoを使用してこれらすべてを行う必要があります...

  • 作成または編集するためにあなたの好きなエディタを使用し/etc/mdadm/mdadm.confを次のようにファイル:

ファイルが存在しない場合でも、新しい空のファイルに次を貼り付けます。

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
  • ファイルを保存する

  • 次のコマンドを実行して、ファイルの最後に配列構成への参照を追加します。

    mdadm --detail --scan >> /etc/mdadm/mdadm.conf

これにより、次のような行がmdadm.confの最後に追加されます。

ARRAY / dev / md0 level = raid5 num-devices = 3 metadata = 00.90 UUID = a44a52e4:0211e47f:f15bce44:817d167c

mdadmコマンドがARRAY行の上に他のものを追加した場合、それを削除します。たとえば、私のマシンの1つで、コマンドは「mdadm:metadata format 00.90 unknown、ignored。」を返します。ARRAY行の前。

これで、アレイはブート時に自動ビルドされるはずです。したがって、/ etc / fstabにエントリを追加してマウントできます(まだない場合)。


6
追加する場合があります:initramfsも更新する必要がありますupdate-initramfs -u
パブロモンテパガーノ

1
mdadm --detail --scanはシステムに何も出力しませんが、raid0(ミラー)の一部である2つのパーティションがあることは確かです。これに関する一般的なアドバイスは大歓迎です。
レナート・ローランド

1
@LennartRolland- mdadm -Es代わりに試してください。
slm

これは私にとってはうまくいきませんgrub-install /dev/sdaでした。それを機能させるためにやらなければなりませんでした(sdaを適切なものに置き換えてください)
16

または、カーネルオプションを使用することもできますmd.auto=1。...実際にこれを完全にテストしたことはありませんが、おそらくそれらを検出し、アセンブルします(または、少なくともそうしようとします)。しかし、kernel.org / doc / html / v4.15 / admin-guide / md.htmlはその点で少し曖昧です:mdが(モジュールとしてではなく)カーネルにコンパイルされると、タイプ0xfdのパーティションがスキャンされ、自動的にアセンブルされますRAIDアレイに。[...]カーネル2.6.9以降、タイプ0のスーパーブロックを備えたドライブのみが自動検出され、ブート時に実行できます。また、md.auto(またはそれが何であれ)を参照していないため、今はわかりません。
プリフタン

7

これは古い質問であることに気づきましたが、Ubuntu Server 12.04の32ビットバージョンでこれにイライラする時間がありました。

mdadm --detail --scan >> /etc/mdadm/mdadm.conf行を追加して実行

ARRAY / dev / md0 metadata = 1.2 name = ubuntu:0 UUID = a8a570c6:96f61865:05abe131:5c2e2f7e

再起動後、/ dev / md0が表示されることはありませんでした。mdadm --detail --scanもう一度実行します(結果をファイルに入れずに)

ARRAY / dev / md / ubuntu:0 metadata = 1.2 name = ubuntu:0 UUID = a8a570c6:96f61865:05abe131:5c2e2f7e

手動でマウント/dev/md/ubuntu:0すると機能します。結局、それもfstabファイルに入れたものです。

これがUbuntu 12.04でどのように機能するか、またはこれが悪い習慣であるかどうか、私は何が間違っていたのかわかりません。ちょうど私のために働いたものを共有したかった。


ここで同じ「問題」。それは問題があるわからない場合..けれども
クリストフ・デ・トロイヤー

3

Debian wheezyでは、もう1つの手順が必要です:autostartをfalseからtrue に/etc/default/mdadm設定する

#自動スタート:
#mdadmは/etc/mdadm/mdadm.confにリストされているアレイを自動的に起動する必要があります
#起動中?
AUTOSTART = true

また、私にとっては機能しなかったためmdadm -Es >>/etc/mdadm/mdadm.conf--scanオプションの代わりに使用する必要がありました。


3
sudo mdadm -Es >> /etc/mdadm/mdadm.conf

/etc/mdadm/mdadm.confに追加された行を次の方法で編集します。基本的な部分を除くすべてを削除します。次のようになります

ARRAY /dev/md5 UUID=031cea92:50a7a28c:6b077fe7:8817092a
ARRAY /dev/md6 UUID=53454954:4044eb66:9169d1ed:40905643

注:mdXでXを選択できます。

今再起動

sudo update-initramfs -u
sudo reboot

編集:コマンドが修正されました。


Linker3000の答えが私にとってうまくいかなかったので、私はthiを書きました。
15年

3

Raspbian GNU / Linux 8(jessie)を実行しているRaspberry Pi 2でこの問題が発生しました。私は上のRAIDアレイを持っていた/dev/sda1し、/dev/sdb1ブート時に組み立てることができませんでした。私は自分で持っていた/etc/mdadm/mdadm.confファイルのエントリ

ARRAY /dev/md/0  metadata=1.2 UUID=53454954:4044eb66:9169d1ed:40905643 name=raspberrypi:0 

(番号は異なります。これを取得する方法については、他の回答を参照してください。)

私は自分で持っていた/etc/fstabファイルのエントリ

/dev/md0        /data           ext4    defaults          0       0

(そしてもちろん/data実際に存在しました)

OPのように、ブート後にRAIDアレイを手動で組み立ててマウントすることはできましたが、明らかに正しく設定されているにもかかわらず、ブート中に自動的に発生することはできませんでした。

次のようにして問題を解決することができました。スクリプトを調査し、/etc/init.d/mdadm-raidデバッグコードの行を挿入しました

ls /dev > /home/pi/devices.txt

再起動し、私はそのデバイスを学んだ、このファイルをチェック/dev/sdaし、/dev/sdb一度に存在していたmdadm-raid初期化が起こったのが、パーティション/dev/sda1および/dev/sdb1欠落していました。/etc/init.d/mdadm-raidファイルを編集し、行を挿入しました

partprobe

ヘッダーの後(つまり### END INIT INFO、スクリプトの後、スクリプトの開始前)。これによりパーティションが検出されたため、mdadm-raidスクリプトはRAIDアレイをアセンブルし、問題を解決できました。これが誰かを助けることを願っています!


0

私は、Raspberry Piで外部USB HDDをいくつか使用して、Raspbianでこれと戦っています。USBドライブがudevによって認識された後、checkfs.sh(ブート時にファイルシステムをチェックする)の前にmdadm-raidが開始されるように、サービスの開始順序をいじる必要がありました。mdadm-raidの起動が早すぎる場合、ドライブが利用できなかったため、アレイは組み立てられませんでした。つまり、fsckはその後失敗し、ブートプロセスはメンテナンスプロンプトにドロップしました(他のサービスにはRAIDアレイが必要なため)。

ブート依存関係を変更してupdate-rc.d mdadm-raid defaults、checkroot.shの後、checkfs.shおよびrunningの前にmdadm-raidを開始し、続いてupdate-initramfs -uv -k `uname -r`(前後のバックティックに注意uname)修正しました(最終的に)。とにかく、YMMV。


上記のuname -rはバックティックになっているはずですが、それらをエスケープする方法がわからないので、ここに印刷します
ロドニー

これはraspbianのどのバージョンですか?Wheezyで正常に動作していましたが、Jessieへのアップグレードにより、起動時にアセンブルが壊れました。
-nwaltham

0

私が試した

mdadm --create /dev/md/abcdef ...

私はソフトリンクをご覧/dev/md/abcdefソフトリンクを介して必要性のBEのアクセスが再起動にしている場合、デバイスを永続化。

それは許容できる解決策ですか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.