У меня 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 успешно монтируется.