web-dev-qa-db-ja.com

起動後にmdadmにRAIDを自動組み立てさせるにはどうすればよいですか?

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

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を自動起動する正しい方法は何ですか?

42
BreakPhreak

注意: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レベル= raid5 num-devices = 3メタデータ= 00.90 UUID = a44a52e4:0211e47f:f15bce44:817d167c

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

これでアレイは起動時に自動構築されるはずです。したがって、マウントするために/ etc/fstabにエントリを追加できます(まだ存在していない場合)。

35
Linker3000

私はこれがより古い質問であることを理解しています、しかし私はUbuntu Server 12.04の32ビットバージョンでこれにイライラする時間を過ごしました。

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

ARRAY/dev/md0メタデータ= 1.2 name = ubuntu:0 UUID = a8a570c6:96f61865:05abe131:5c2e2f7e

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

ARRAY/dev/md/ubuntu:0メタデータ= 1.2 name = ubuntu:0 UUID = a8a570c6:96f61865:05abe131:5c2e2f7e

手動で/dev/md/ubuntu:0をマウントしてもうまくいきます。結局、それは私もfstabファイルに入れたものでした。

これがUbuntu 12.04でどのように機能するのか、またはこれが悪い習慣であるのであれば、私は何が問題なのかわかりません。ちょうど私のために働いたことを共有したいと思いました。

7
Deplicator
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

編集:コマンドを修正しました。

3
gorn

Raspbian GNU/Linux 8(jessie)を実行しているRaspberry Pi 2でこの問題が発生しました。 /dev/sda1および/dev/sdb1にRAIDアレイがあり、起動時にアセンブルできませんでした。 /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アレイを手動で組み立ててマウントすることはできましたが、明らかに正しくセットアップされているにもかかわらず、ブート中に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アレイを組み立てることができ、問題が解決しました。これが誰かを助けることを願っています!

3
Shaun Harker

Debian wheezyではもう1つのステップが必要です:/etc/default/mdadm setでautostartをfalseからtrueにする

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

また、mdadm -Es >>/etc/mdadm/mdadm.confオプションの代わりに--scanを使用しなければなりませんでした。

3
Bogdan Hlevca

私が試した

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

私はソフトリンク/dev/md/abcdefが再起動後も持続しているのを見ています、そしてもし必要ならソフトリンクを通して装置にアクセスしてください。

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

0
gudge

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

Checkroot.shの後でcheckfs.shを実行してupdate-rc.d mdadm-raid defaultsを実行する前にmdadm-raidを起動するようにブートの依存関係を変更し、続いてupdate-initramfs -uv -k `uname -r`unameに関するバックノートに注意してください)を修正しました。とにかく、私にとっては、YMMV。

0
Rodney

ラズベリーパイ3を持っていて、rootdelay=5/boot/cmdline.txtを追加することは私にとってこの問題を解決しました。

クレジットはここ になります

0
Petr Újezdský