web-dev-qa-db-ja.com

再起動後にmdadmがアセンブルされない

次の構造のディスクが2つあります。

lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0   3,7T  0 disk
├─sda1        8:1    0   2,7T  0 part
└─sda2        8:2    0 931,5G  0 part
sdb           8:16   0   2,7T  0 disk
└─sdb1        8:17   0   2,7T  0 part

実行すると、sda1とsdb1はmd0の一部になります

mdadm --misc --detail /dev/md0

戻る

mdadm: cannot open /dev/md0: No such file or directory

私のmdadm.confは次のとおりです。

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

# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
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

# This configuration was auto-generated on Thu, 03 Mar 2016 21:53:00 +0100 by mkconf
ARRAY /dev/md/0  metadata=1.2 UUID=6ca17528:517621d3:e1c460a2:529955dd name=rp3-0:0

実行したら

Sudo mdadm -A /dev/md0

または

Sudo mdadm --assemble --scan

戻る

mdadm: /dev/md/0 has been started with 2 drives.

新しいディスク構造は次のとおりです。

sda           8:0    0   3,7T  0 disk
├─sda1        8:1    0   2,7T  0 part
│ └─md0       9:0    0   5,5T  0 raid0
└─sda2        8:2    0 931,5G  0 part
sdb           8:16   0   2,7T  0 disk
└─sdb1        8:17   0   2,7T  0 part
  └─md0       9:0    0   5,5T  0 raid0

RAIDのfstab行は

/dev/md0        /mnt/ext        ext4    defaults,nobootwait,nofail      0       0

nobootwaitとnofailは、起動時にsystemdをクラッシュさせないためのものです。

システムを再起動すると、raid0が消えます。再起動するたびにレイドを持続させるにはどうすればよいですか?

ありがとう。

必要なのはconfとinitrd/initramfsフックだけです。これは、ディストリビューションによって異なる場合があります。

まず、confを追加します。

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

/ etc/mdadm /のようなディレクトリが見つかった場合は、ディストリビューションで代わりにファイルが必要になる可能性があります...シンボリックリンクするか、代わりにそのパスを使用してください。

次に、mdadminitrdフックがインストールされて有効になっていることを確認します。 (通常のmdadmパッケージにはそれらが含まれているはずです...ディストリビューションがおかしい場合にのみこれについて言及するので、2番目のパッケージを探すことを知っています)

たとえば、Archベース:

$ pacman -Ql mdadm | grep hook
mdadm /usr/lib/initcpio/hooks/
mdadm /usr/lib/initcpio/hooks/mdadm

$ grep mdadm /etc/mkinitcpio.conf 
HOOKS="base ... mdadm lvm2 filesystems ..."

そしてdebianベース:

$ dpkg -L mdadm | grep initr.*hook
/usr/share/initramfs-tools/hooks
/usr/share/initramfs-tools/hooks/mdadm

(I'm not really sure where the hook is enabled, but I think it should be enabled by default... someone else please fill that in)

そして、これらのファイルとパッケージがインストールされた後、initramfsを再構築し、場合によっては次の場合に備えてupdate-grubを再構築する必要があります。

アーチベース:

# mkinitcpio -p /etc/mkinitcpio.d/somekernel.preset
# update-grub

Debianベース:

# update-initramfs -u
# update-grub

また、より信頼性の高い起動のために、fstabで/ dev/md0ではなくUUIDを使用することを忘れないでください。 (たとえば、レスキューディスクで起動して変更すると、/ dev/md127に変更されたり、頑固で0に戻すのが難しい場合があります)。構文についてはmanfstabを、UUIDについてはblkidを参照してください。

1
Peter

私はこれが多くのDebianサーバーで起こるのを見てきました。毎回私のために働いた解決策(そして私を信じて、それを理解するのに何時間もかかった)は、ファイル「/ usr/share/initramfs-tools/scripts/local-top/mdadm」にパッチを当てることでした。 「すべてのMDアレイを組み立てる」が出力される場所を見つけて、その後に「sleep3」を追加します。完了したら、「update-initramfs -t -u -k all」を実行して、変更したスクリプトをインストールします。

0
ChrisB