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

Как я могу заставить RHEL / CentOS / SL 7 нормально загрузиться с деградировавшим программным RAID 1

Я установил новый сервер (мой первый с этой версией Linux). Я установил пару чистых жестких дисков SATA на 160 ГБ (один Seagate и один WDC, но с точно таким же количеством секторов LBA) на старый компьютер и решил установить Scientific Linux 7.0 (переименованный RHEL) в RAID 1 (программное обеспечение зеркальная) конфигурация.

Первая проблема заключалась в том, что я не мог понять, как заставить установщик SL / RHEL (Anaconda) настроить два диска для RAID1. Итак, я загрузился с компакт-диска PartedMagic и использовал его для разбиения на разделы.

Я разделил два диска одинаково. На каждом диске есть большой раздел для установки RAID1 + ext4. /, небольшой (в настоящее время неиспользуемый) раздел для RAID1 + ext3, который будет смонтирован в /safeи раздел подкачки Linux объемом 3 ГБ. я использовал fdisk для изменения типов разделов RAID на каждом диске на FD, и mdadm для построения RAID-массивов:

mdadm --create --verbose /dev/md0 --raid-devices=2 --level=1 /dev/sda1 /dev/sdb1
mdadm --create --verbose /dev/md1 --raid-devices=2 --level=1 /dev/sda2 /dev/sdb2

Затем я выключился, загрузил SL DVD и снова попытался установить. На этот раз установщик распознал массивы RAID1, отформатировал их для ext4 и ext3 соответственно и установил без проблем.

На данный момент все было в порядке. Я выключил его, запустил снова, и он загрузился нормально. Все идет нормально.

Затем я протестировал функциональность RAID1: выключил компьютер, удалил один из дисков и попытался его загрузить. Я ожидал, что он отобразит некоторые сообщения об ошибках о деградации RAID-массива, а затем перейдет к обычному экрану входа в систему. Но это не сработало. Вместо этого я получил:

Welcome to emergency mode! After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" to try again
to boot into default mode.
Give root password for maintenance
(or type Control-D to continue):

То же самое происходит независимо от того, какой диск отсутствует.

Это не хорошо! Зеркальные диски предназначены для обеспечения продолжения работы сервера в случае выхода из строя одного из дисков.

Ctrl-D просто возвращает меня к повторению того же "Welcome to emergency mode"экран. Также нужно ввести мой пароль root, а затем"systemctl default".

Итак, я попробовал провести эксперимент. В меню загрузки я нажал е отредактировать параметры загрузки ядра и изменить "rhgb quiet"к"bootdegraded=true"а потом загрузился. Никакой радости.

Это позволяло мне видеть больше сообщений о состоянии, но не позволяло машине нормально загружаться при отсутствии диска. Он все еще остановился на том же "Welcome to emergency mode"Экран". Вот то, что я видел с удаленным диском Seagate и оставшимся диском WDC. Последние несколько строк выглядят следующим образом (за исключением того, что "...." обозначает место, где я устал печатать):

[  OK  ] Started Activation of DM RAID sets.
[  OK  ] Reached target Encrypted Volumes.
[  14.855860] md: bind<sda2>
[  OK  ] Found device WDC_WD1600BEVT-00A23T0.
         Activating swap /dev/disk/by-uuid/add41844....
[  15.190432] Adding 3144700k swap on /dev/sda3.  Priority:-1 extents:1 across:3144700k FS
[  OK  ] Activated swap /dev/disk/by-uuid/add41844....
[ TIME ] Timed out waiting for device dev-disk-by\x2duuid-a65962d\x2dbf07....
[DEPEND] Dependency failed for /safe.
[DEPEND] Dependency failed for Local File Systems.
[DEPEND] Dependency failed for Mark the need to relabel after reboot.
[DEPEND] Dependency failed for Relabel all file systems, if necessary.
[  99.299068] systemd-journald[452]: Received request to flush runtime journal from PID 1
[  99.3298059] type=1305 audit(1415512815.286:4): audit_pid=588 old=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:auditd_t:s0 res=1
Welcome to emergency mode! After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default" to try again
to boot into default mode.
Give root password for maintenance
(or type Control-D to continue):

Таким образом, похоже, что установка на зеркальные диски RAID1 просто удвоит вероятность сбоя диска, который приведет к остановке сервера (поскольку здесь два диска вместо одного). Это не то, чего я надеялся достичь с зеркальными дисками.

Кто-нибудь знает, как заставить его загружаться и работать "нормально" (с деградированным массивом RAID1) при выходе из строя жесткого диска?

Два других примечания:

  1. Я новичок в RHEL / SL / CentOS 7, поэтому на экране «Выбор программного обеспечения» во время установки SL мне пришлось гадать. Я выбрал: «Универсальная система» + FTP-сервер, файловый сервер и сервер хранения, Office Suite и производительность, гипервизор виртуализации, инструменты виртуализации и средства разработки.

  2. Я вижу несколько безобидных ошибок:

    ATAИкс: softreset failed (device not ready)

"Икс"зависит от того, какие диски установлены. Я получаю больше таких ошибок с двумя установленными дисками, чем с одним.

Оказывается, проблема была не в основном разделе RAID1, а в других разделах.

Во-первых, мне не следовало использовать разделы подкачки. Это было просто глупо. Даже если бы это сработало, это, вероятно, сделало бы систему уязвимой для сбоя, если бы на диске образовался сбойный блок в разделе подкачки. Очевидно, что лучше использовать файл подкачки в разделе RAID1; Не знаю, о чем я думал.

Однако "лишний" ext3 md1 перегородка тоже была проблемой. Не знаю почему.

Как только я удалил ссылки на другие разделы (два раздела подкачки и ext3 md1 раздел) из /etc/fstab, система отлично загрузится с одним диском, запустив массив RAID1 в деградированном режиме, как я и хотел.

После того, как я выключился и переустановил отсутствующий диск, я снова запустил машину, и она все еще работала только с одним диском. Но я сделал "mdadm --add"чтобы добавить отсутствующий диск, и его состояние изменилось"spare rebuilding"на некоторое время, а затем"active. "

Другими словами, он работает отлично.