Проблемы, возникающие при установке, а точнее при загрузке операционной системы со второго диска массива, описаны в постах форума nix.zeya.org здесь и здесь. Решение проблемы может быть выполнено двумя способами. Первый - достаточно простой, второй - чуть по-сложнее :

  1. переконфигурирование загрузчика GRUB и выключение графического режима меню,
  2. отказ от GRUB`а и установка загручика LILO.

Ниже будут описаны оба способа на выбор читателя.

Исходные данные:
Установка должна производиться с нуля. Имеется /dev/sda - условно первый диск, /dev/sdb - условно второй диск. Для примера и понимания процесса, вся система ставится в один раздел /dev/md0 размером 1Гб без применения swap`ов.

Способ 1. Переконфигурирование GRUB

Решение описал пользователь Anhel на форуме сайта. Вкратце, суть сводится к установке загрузчика на жёсткие диски RAID-массива через переконфигурацию GRUB`а. Загрузчик не совсем корректно устанавливается на все диски кроме первого и, предположительно, возникает проблема недоступности шрифтов для самого загрузчика. Это проявляется в виде бесконечного процесса циклической перезагрузки, если машина стартует не с первого диска. Для устранения этой проблемы следует переконфигурировать загрузчик для работы меню в текстовом режиме, а не графическом (графический режим активен по умолчанию). Таким образом шрифты не подгружаются с недоступного раздела и загрузчик отрабатывает без проблем.

Установка дистрибутива

Установка дистрибутива выполняется стандартно с помощью графического или текстового инсталлятора:

  • жёсткие диски разбиваются на разделы,
  • первые разделы на дисках помечаются как загрузочные,
  • из разделов создаются разделы RAID, затем в RAID-разделах создаётся файловая система и указываются точки монтирования.

Когда процесс установки завершён, загружаемся с жёсткого диска, входим в систему под root`ом и приступаем к конфигурированию загрузчика.

Переконфигурирование GRUB`а

В текстовом редакторе (nano, vi, mcedit) открываем файл /etc/default/grub . Ищем строку, содержащую:

# GRUB terminal=console

и раскомментируем её:

GRUB terminal=console

- эта настройка отключает графический режим вывода меню GRUB. Теперь инсталлируем загрузчик на диски. Выполняем:

# dpkg-reconfigure grub-pc

Программа-конфигуратор сперва попросит ввести "командную строку Linux", на что вводим (с учётом пробелов):

root (hd0,0)

Затем конфигуратор попросит ввести "командную строку Linux по умолчанию", на что, также с учётом пробелов, вводим:

setup (hd0)

Далее программа попросит выделить устройства (разделы) на которые требуется установить загрузчик GRUB - выбираем все разделы, из которых состоит RAID, в нашем случае: /dev/sda и /dev/sdb. Если всё прошло успешно будет выведено что-то типа:

Installation finished. No error reported.
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-5-686
Found initrd image: /boot/initrd.img-2.6.32-5-686
done

На этом настройка закончена. При желании, можно изменить ход настройки: сначала установить GRUB, а только затем модифицировать файл /etc/default/grub и в конце выполнить:

# update-grub

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

Способ 2. Отказ от загрузчика GRUB в пользу LILO

Суть:

  1. Отказываемся от GRUB в пользу классического LiLo.
  2. Отказываемся от автоматики, которую предоставляет нам инсталлятор на этапе редактирования разделов.

Загрузка с диска

Загружаемся с загрузочного диска Debian Squeeze в текстовом псевдографическом режиме, выполняя все действия доходим до момента, когда нужно производить разбивку диска. Заходим в ручной(Manual) режим разбивки и заодно смотрим какие разделы присутствуют. Разбивку средствами инсталлятора не делаем!!!

Создание разделов

Заходим в соседнюю консоль (ALT+F2 или ALT+F3 и тд). С помощью команды fdisk создаём нужные разделы на каждом жёстком диске (это sda1 и sdb1). При этом не забываем первые разделы сделать загрузочными и нужные разделы для включения RAID пометить как "Linux raid autodetect" - код fd .

Создание RAID-разделов

В этой же консоли создаём raid-массив:

# mdadm --create /dev/md0 --level=1 --raid-disks=2 --metadata=0.9 /dev/sda1 /dev/sdb1

, где параметр "--metadata=0.9" задаёт формат метаданных, с которыми работает массив. LiLo работает только с версией 0.9, а инсталлятор собирает массив с версией 1.2 !

Проверяем успешность создания массива через:

# /cat/proc/mdstat

или

# mdadm --detail /dev/md0 

Установка файлов системы

Возвращаемся в первую консоль, где висит экран графического инсталлятора с мастером разбивки дисков. В нём делаем отмену и не записываем данные на диск. При этом попадаем в главное меню инсталлятора. Снова нажимаем на пункте "Разбивка дисков", попадаем в мастер разбивки диска и наблюдаем, что появился раздел /dev/md0.
Далее уже средствами мастера:

  1. Форматируем /dev/md0 в нужной фаловой системе.
  2. Задаём параметры для монтирования корневой файловой системы в этот раздел.
  3. Сохраняем изменения и начинаем установку дистрибутива.

Установка загрузчика LILO

Когда установка дошла до места, где инсталлятор спрашивает куда ставить загрузчик GRUB, нужно сделать отмену. При этом снова попадаем в главное меню инсталлятора. Ищем пункт "Установка загрузчика LILO" и начинаем процедуру установки. Система спросит "Включить режим bigmem?" - это для поддержки больших по объёму образов initrd. Выбираем "включить" (может пригодиться в будущем). Если система спросит куда ставить LiLo, выбираем установку в MBR.

Далее установка продолжается в штатном режиме. После окончания установки, извлекаем загрузочный диск и перезагружаем машину. Появится краткое приветствие "LILO 22.8" и через 2 секунды начнёт грузиться ядро. Для изменения параметров загрузчика, в конце статьи есть небольшой раздел с описанием некоторых опций.

На этом настройка завершена. Переходим к проверке.

Проверка работоспособности массива

Когда все настройки завершены, не лишним будет потратить время на проверку работоспособности массива в разных условиях.
Для получения информации о состоянии массива выполняем:

# /cat/proc/mdstat

или

# mdadm --detail /dev/md0 

,на что должен быть примерно такой ответ:

 /dev/md0:
        Version : 0.90
  Creation Time : Wed May 25 10:50:47 2011
     Raid Level : raid1
     Array Size : 1060160 (1035.49 MiB 1085.60 MB)
  Used Dev Size : 1060160 (1035.49 MiB 1085.60 MB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Wed May 25 12:00:26 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           UUID : e7f0c2df:d01eaff1:9fc5d9be:c3746f40 (local to host localhost)
         Events : 0.108

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1

Строки "active sync" в колонке "State" говорят что все устройства в массиве работают исправно.

Теперь проверяем отказоустойчивость. Выключаем машину, физически отключаем первый жёсткий диск, включаем машину, при необходимости изменяем порядок просмотра дисков в настройках БИОС.
Система должна без проблем загрузиться и нормально работать. Вывод # mdadm --detail /dev/md0 должен показать примерно такое:

/dev/md0:
        Version : 0.90
  Creation Time : Wed May 25 10:50:47 2011
     Raid Level : raid1
     Array Size : 1060160 (1035.49 MiB 1085.60 MB)
  Used Dev Size : 1060160 (1035.49 MiB 1085.60 MB)
   Raid Devices : 2
  Total Devices : 1
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Wed May 25 12:12:22 2011
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           UUID : e7f0c2df:d01eaff1:9fc5d9be:c3746f40 (local to host localhost)
         Events : 0.122

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8        1        1      active sync   /dev/sda1

"removed" в колонке "State" и "degraded" в строке "State:" говорит об отсутствии диска и работе массива в деградированном режиме.

Снова выключаем машину, подключаем первый диск и пробуем загрузиться. Машина должна загрузиться. При этом вывод # mdadm --detail /dev/md0 должен показать такую же ситуацию - "degraded" и "removed". Теперь очищаем метаданные на /dev/sda1 (чтобы синхронизация пошла с /dev/sdb, а не наоборот!) и добавляем обратно в массив, выполнив:

# mdadm --zero-superblock /dev/sda1
# mdadm --add /dev/md0 /dev/sda1
mdadm: added /dev/sda1

Будьте внимательны применяя команды, веделенные красным, иначе можно синхронизировать массив "не в ту сторону"!!

Проверяем процесс синхронизации:

 # mdadm --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Wed May 25 10:50:47 2011
     Raid Level : raid1
     Array Size : 1060160 (1035.49 MiB 1085.60 MB)
  Used Dev Size : 1060160 (1035.49 MiB 1085.60 MB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Wed May 25 12:25:28 2011
          State : clean, degraded, recovering
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1

 Rebuild Status : 25% complete

           UUID : e7f0c2df:d01eaff1:9fc5d9be:c3746f40 (local to host localhost)
         Events : 0.216

    Number   Major   Minor   RaidDevice State
       2       8        1        0      spare rebuilding   /dev/sda1
       1       8       17        1      active sync   /dev/sdb1

В итоге должна получиться исходная картина, когда все диски массива находятся в "active sync". Для надёжности можно сделать проверку и с отсутствием второго диска в массиве. На этом установку можно считать завершённой.

Тьюнинг LiLo

Если кому не нравится стандартная работа LILO, подкорректировать параметры можно в /etc/lilo.conf , после чего обязательно нужно выполнить команду: # lilo , для вступления изменений в силу. Кстати, чтобы загрузка работала, нужно чтобы в lilo.conf присутствовали такие опции для работы с raid:

boot=/dev/md0
root=/dev/md0
raid-extra-boot=mbr-only

Опция:

delay=100

формирует задержку меню в n*0.1 секунды (число 100 соответствует 10-ти секундам).

Собственно весь lilo.conf для данного примера:

lilo.conf
# Automatically added by lilo postinst script
large-memory
 
# /etc/lilo.conf - See: `lilo(8)' and `lilo.conf(5)',
# ---------------       `install-mbr(8)', `/usr/share/doc/lilo/',
#                       and `/usr/share/doc/mbr/'.
 
# +---------------------------------------------------------------+
# |                        !! Reminder !!                         |
# |                                                               |
# | Don't forget to run `lilo' after you make changes to this     |
# | conffile, `/boot/bootmess.txt' (if you have created it), or   |
# | install a new kernel.  The computer will most likely fail to  |
# | boot if a kernel-image post-install script or you don't       |
# | remember to run `lilo'.                                       |
# |                                                               |
# +---------------------------------------------------------------+
 
# Specifies the boot device.  This is where Lilo installs its boot
# block.  It can be either a partition, or the raw device, in which
# case it installs in the MBR, and will overwrite the current MBR.
#
boot=/dev/md0
 
# Specifies the device that should be mounted as root. (`/')
#
root=/dev/md0
 
# This option may be needed for some software RAID installs.
#
raid-extra-boot=mbr-only
 
# Enable map compaction:
# Tries to merge read requests for adjacent sectors into a single
# read request. This drastically reduces load time and keeps the
# map smaller.  Using `compact' is especially recommended when
# booting from a floppy disk.  It is disabled here by default
# because it doesn't always work.
#
# compact
 
# Installs the specified file as the new boot sector
# You have the choice between: text, bmp, and menu
# Look in lilo.conf(5) manpage for details
#
#install=menu
 
# Specifies the location of the map file
#
map=/boot/map
 
# You can set a password here, and uncomment the `restricted' lines
# in the image definitions below to make it so that a password must
# be typed to boot anything but a default configuration.  If a
# command line is given, other than one specified by an `append'
# statement in `lilo.conf', the password will be required, but a
# standard default boot will not require one.
#
# This will, for instance, prevent anyone with access to the
# console from booting with something like `Linux init=/bin/sh',
# and thus becoming `root' without proper authorization.
#
# Note that if you really need this type of security, you will
# likely also want to use `install-mbr' to reconfigure the MBR
# program, as well as set up your BIOS to disallow booting from
# removable disk or CD-ROM, then put a password on getting into the
# BIOS configuration as well.  Please RTFM `install-mbr(8)'.
#
# password=tatercounter2000
 
# Specifies the number of deciseconds (0.1 seconds) LILO should
# wait before booting the first image.
#
delay=100
 
# You can put a customized boot message up if you like.  If you use
# `prompt', and this computer may need to reboot unattended, you
# must specify a `timeout', or it will sit there forever waiting
# for a keypress.  `single-key' goes with the `alias' lines in the
# `image' configurations below.  eg: You can press `1' to boot
# `Linux', `2' to boot `LinuxOLD', if you uncomment the `alias'.
#
# message=/boot/bootmess.txt
#	prompt
#	delay=100
#	timeout=100
 
# Specifies the VGA text mode at boot time. (normal, extended, ask, <mode>)
#
# vga=ask
# vga=9
#
 
 
# Kernel command line options that apply to all installed images go
# here.  See: The `boot-prompt-HOWTO' and `kernel-parameters.txt' in
# the Linux kernel `Documentation' directory.
#
# append=""
 
# If you used a serial console to install Debian, this option should be
# enabled by default.
# serial=
 
#
# Boot up Linux by default.
#
default=Linux
 
image=/vmlinuz
	label=Linux
	read-only
#	restricted
#	alias=1
    append="quiet"
	initrd=/initrd.img
 
image=/vmlinuz.old
	label=LinuxOLD
	read-only
	optional
#	restricted
#	alias=2
    append="quiet"
	initrd=/initrd.img.old
 
 
# If you have another OS on this machine to boot, you can uncomment the
# following lines, changing the device name on the `other' line to
# where your other OS' partition is.
#
# other=/dev/hda4
#	label=HURD
#	restricted
#	alias=3

Смотрите также

Печать/экспорт