Содержание
Проблемы, возникающие при установке, а точнее при загрузке операционной системы со второго диска массива, описаны в постах форума www.nixzeya.ru.net здесь и здесь. Решение проблемы может быть выполнено двумя способами. Первый - достаточно простой, второй - чуть по-сложнее :
- переконфигурирование загрузчика GRUB и выключение графического режима меню,
- отказ от 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
Суть:
- Отказываемся от GRUB в пользу классического LiLo.
- Отказываемся от автоматики, которую предоставляет нам инсталлятор на этапе редактирования разделов.
Загрузка с диска
Загружаемся с загрузочного диска 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.
Далее уже средствами мастера:
- Форматируем /dev/md0 в нужной фаловой системе.
- Задаём параметры для монтирования корневой файловой системы в этот раздел.
- Сохраняем изменения и начинаем установку дистрибутива.
Установка загрузчика 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
Смотрите также
- Ещё один вариант установки от Gerald Przybylski и Arthur Jones: Yet another web page on installing Debian Linux on Software RAID
- man mdadm , man lilo, man lilo.conf(5)