Я бы хотел иметь следующую настройку raid1 (зеркало):
/dev/md0 consists of /dev/sda and /dev/sdb
Я создал это устройство raid1, используя
mdadm --create --verbose /dev/md0 --auto=yes --level=1 --raid-devices=2 /dev/sda /dev/sdb
Это дало предупреждение о том, что метаданные имеют значение 1.2, и моя система может не загружаться. Я не могу использовать 0.9, потому что он ограничивает размер рейда до 2 ТБ, и я предполагаю, что grub, поставляемый с последней версией debian (squeeze), должен иметь возможность обрабатывать метаданные 1.2.
Итак, я создал необходимые разделы следующим образом:
# creating new label (partition table)
parted -s /dev/md0 mklabel 'msdos'
# creating partitions
sfdisk -uM /dev/md0 << EOF
0,4096
,1024,S
;
EOF
# making root filesystem
mkfs -t ext4 -L boot -m 0 /dev/md0p1
# making swap filesystem
mkswap /dev/md0p2
# making data filesystem
mkfs -t ext4 -L data /dev/md0p3
Затем я смонтировал корневой раздел, скопировал минимальную установку debian внутрь и временно смонтировал / dev / proc / sys. После этого я перешел в новую корневую папку и выполнил:
grub-install --no-floppy --recheck /dev/md0
Однако это плохо с:
/ usr / sbin / grub-probe: ошибка: неизвестная файловая система. Не удалось автоматически определить файловую систему / dev / md0p1. Сообщите об этом вместе с выводом "/ usr / sbin / grub-probe --device-map = / boot / grub / device.map --target = fs -v / boot / grub" в
Я не думаю, что это ошибка в grub (так что я еще не сообщал об этом), но это моя ошибка. Так что мне действительно интересно, как правильно настроить мой raid1, все, что я пробовал до сих пор, не удалось.
Не думаю, что делать перегородки на рейде - хорошая идея. Лучшим подходом было бы создать разделы на каждом устройстве, а затем соответственно создать рейды.
Кроме того, создайте 2 загрузочных раздела одинакового размера (точно так же, как разделы raid должны совпадать по размеру), которые не будут частью raid, и убедитесь, что они точно такие же, чтобы система могла загрузиться с любого из них.
Я также предпочитаю отдельные разделы для обычных мест, таких как / var, / tmp, / usr, / home и т. Д.
Например:
/dev/sd[ab]1 - /boot
/dev/sd[ab]2 - swap
/dev/sd[ab]3 - /
/dev/sda[ab]4 - /usr
/dev/sda[ab]5 - /tmp
/dev/sda[ab]6 - /var
/dev/sda[ab]7 - /home
Создавайте рейды из каждого раздела, кроме первого. Например:
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[ab]2
и так далее.
Затем назначьте / boot для / dev / sda1 и убедитесь, что MBR сохранена как в / dev / sda, так и в / dev / sdb. Как только вся система будет установлена, вы делаете (bs = 500M значительно ускорит dd, установите 500M примерно на 2/3 памяти вашей системы):
dd bs=500M if=/dev/sda1 of=/dev/sdb1
Теперь, пока BIOS будет пытаться загрузиться с любого диска, тогда в случае отказа одного из дисков система автоматически загрузится с другого диска, потому что UUID точно такие же. Не забывайте иногда повторять команду dd, если / boot изменился, например, при обновлении ядра.
Вы действительно хотите протестировать это, изменив приоритет загрузки BIOS. И если вам повезет, проверьте его, выдернув один диск :-)
Это также будет работать с raid10, я сделал это как с raid1, так и с raid10, даже с raid10 с 3 дисками (что на самом деле возможно с mdadm).
Кстати, вы должны использовать загрузочный раздел, который не является частью рейда, потому что в противном случае ваша система не сможет загрузиться. Должен быть способ запуска рейда, и, поскольку это софтрейд, сначала нужно загрузить ядро, чтобы рейд был повторен.
Вы должны установить grub на свои диски MBR, а не на / dev / md0, поэтому запустите grub-install /dev/sda ; grub-install /dev/sdb
. Это лучше работает?
Делать sudo update-grub
. Есть шанс, что ваш /boot/grub/device.map
не обновлен, и ошибка устаревшей карты устройств такая же.