Як увімкнути деградований завантажувач RAID1 в 16.04LTS?


14

У попередніх версіях ubuntu, додавши BOOT_DEGRADED=trueдо /etc/initramfs-tools/conf.d/mdadmдозволеної системи автоматичне завантаження, коли коренева файлова система знаходиться на деградованому масиві. Схоже, це більше не працює в 16.04 LTS.

Документація ( https://help.ubuntu.com/lts/serverguide/advanced-installation.html ) виглядає застарілою; sudo dpkg-reconfigure mdadmбільше не просить дозволити деградовані черевики, і bootdegraded=trueаргумент ядра також більше не працює. Система завжди завантажується в initramfs, коли масив кореневої файлової системи знижується. Звідти mdadm -IRsдозволяє система завантажуватися.

Як увімкнути автоматичне завантаження, коли коренева файлова система знаходиться на деградованому масиві RAID1 в 16.04LTS?


Насправді помилка конфігурації, здається, виправлена, але документація все ще є неправильною відповідно до bugs.launchpad.net/serverguide/+bug/1310162 Наскільки я зрозумів, додаткова конфігурація більше не потрібна для забезпечення завантаження з деградованим RAID на даний момент (18.04).
Дієго

Відповіді:


9

Згадана помилка з'являється в mdadm 3.3-2ubuntu7 і була виправлена ​​в 3.4-2.

Останній реліз mdadm для yakkety (16.10) 3.4-4 містить виправлення вже і доступний для 16.10, але не (ще?) Для 16.04LTS.

Таким чином, я оновив mdadm свого 16.04LTS вручну:

wget http://launchpadlibrarian.net/275652884/mdadm_3.4-4_amd64.deb
sudo dpkg -i mdadm_3.4-4_amd64.deb

Щоб перевірити я

  • вимкнути комп’ютер
  • від'єднав один від дисків / ssd
  • Увімкніть комп’ютер

Спостереження за консоллю: Завантаження з деградованого рейдового масиву працює !

Помилка: https://bugs.launchpad.net/ubuntu/+source/mdadm/+bug/1635049 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=784070


Ти щойно вирішив мої 1 тижні пошуку ... Спасибі людина.
Фахад Ахаммед

Цей помилка - це гнітюче читання.
Кевін Ліда

1

Схоже, що першопричиною є /usr/share/initramfs-tools/scripts/local-top/mdadmвідсутність скрипту - на Debian-8 він включений у mdadmпакет, але був втрачений у тому ж пакеті для Ubuntu-16.04 ;-(

Отже, після того як я створив його брудну версію і відтворив initramfs- мій тестовий сервер Ubuntu-16.04 LTS зміг повністю завантажитися, використовуючи єдиний другий HDD з масиву RAID1.

#!/bin/sh
# 2016-07-13 andrey@kopeyko.ru - missed mdadm script for Ubuntu-16.04
# see debian8_host:/usr/share/initramfs-tools/scripts/local-top/mdadm for full version

MDADM=/sbin/mdadm 
. /scripts/functions

echo "===>"
cat /proc/mdstat
echo "===>"
log_begin_msg "Assembling all MD arrays"
if $MDADM --assemble --scan --run --auto=yes
then
  log_success_msg "assembled all arrays."
else
  log_warning_msg "failed to assemble all arrays, attempting individual starts"
  for dev in $(cat /proc/mdstat | grep md | cut -d ' ' -f 1)
  do
    log_begin_msg "attempting mdadm --run $dev"
    if $MDADM --run $dev; then
      log_success_msg "started $dev"
    else
      log_failure_msg "failed to start $dev"
    fi
  done
fi
log_end_msg
echo "===>"
cat /proc/mdstat
echo "===>"

sleep 5

# TODO: run mdadm --readwrite /dev/mdN
# if array is in 'auto-read-only' mode

1
Ви ставите цей скрипт /usr/share/initramfs-tools/scripts/local-top/mdadmі потім встановлюєте update-initramfs -k all -u. Однак це створить попередження. щоб відключити попередження, поставлене case ${1:-} in prereqs) echo "multipath"; exit 0;; esacперед . /scripts/functionsрядком.
Кевін Ліда

Так, воно генерує попередження - але це попередження нешкідливо. Я думаю, що злом functionsне є хорошою ідеєю через можливі побічні ефекти. Тому я просто ігнорую це попередження.
Андрій Копейко

0

У мене була така ж проблема з 16.04, рейдовий масив просто відмовився активуватися в деградованому режимі.

ось просте вирішення:

  1. створити новий файл: / etc / initramfs-tools / script / init-premount / delay_mounting (не забудьте встановити + x)

додати

спати 20 (або скільки завгодно секунд)

  1. створити новий файл: / etc / initramfs-tools / skripts / local-top / mdadm (не забудьте встановити + x)

додайте наступне (примусити запустити масив, якщо у вас є / dev / md0, / dev / md1 та / dev / md2)

mdadm --run / dev / md0
mdadm --run / dev / md1
mdadm --run / dev / md2

потім

update-initramfs -k all -u , тоді все налаштовано.

Зверніть увагу, що для 14.04 потрібно лише 1), але робити це не завадить. окрім вас, можливо, ви побачите таке попереджувальне повідомлення, як-от:

mdadm: не вдалося запустити масив / dev / md0: пристрій або ресурс зайнятий

що є нешкідливим, оскільки він говорить лише про те, що, оскільки / dev / md0 активний, ви, безумовно, можете написати розумніший сценарій виконувати лише --run, коли це потрібно.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.