Назад | Перейти на главную страницу

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

Линия 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 /, возможно, вашему дистрибутиву требуется файл там вместо этого ... создайте символическую ссылку или просто используйте этот путь.

Во-вторых, убедитесь, что обработчики mdadm initrd установлены и включены. (они должны быть в нормальном пакете mdadm ... Я упоминаю об этом только в том случае, если ваш дистрибутив странный, поэтому вы знаете, что искать второй пакет)

Например, на основе 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

Также не забудьте использовать UUID, а не / dev / md0 в вашем fstab для более надежной загрузки. (например, если вы загрузите его на аварийный диск и измените его, иногда он изменяется на / dev / md127, а иногда его трудно вернуть обратно на 0). Смотрите man fstab для синтаксиса и blkid для UUID.

Я видел это на многих серверах Debian. Решение, которое помогало мне каждый раз (и поверьте, мне потребовалось много-много часов, чтобы понять это), было исправление файла "/ usr / share / initramfs-tools / scripts / local-top / mdadm". Найдите место вывода «Assembly all MD array», затем добавьте после него «sleep 3». Когда закончите, запустите update-initramfs -t -u -k all, чтобы установить измененный сценарий.

Это обходной путь, но через много часов единственное решение - отредактировать etc/rc.local. Я добавил эту строку раньше exit 0

$ sudo mdadm -A /dev/md0 && sudo mount /dev/md0 /mnt/ext

И теперь после каждой перезагрузки RAID успешно монтируется.