Lenny raid
Материал из Ksimute
Возникает иногда такая ситуация:
Купили сервер в загранице. Инженеры у провайдера могут поставить только стандартный дистрибутив на один из дисков.
Т.е. никакого софтверного рэйда и т.п.
Зато в случае возникновения сбоев могут заменить нужный диск.
Соответственно заказываем сервер с lenny.
swap буду держать в файле. он в моих задачах практически не используется. Нет желание выделять под него партишн.
Что портировано со старту:
Device Boot Start End Blocks Id System /dev/hda1 * 1 9636 77401138+ 83 Linux /dev/hda2 9637 9729 747022+ 5 Extended /dev/hda5 9637 9729 746991 82 Linux swap / Solaris /dev/hdс1 * 1 9729 78148161 fd Linux raid autodetect
В планах
2 диска в зеркале.
hda,hdc
остальные будут LVM файлохранилище.
#aptitude install mdadm
Выбираем какие массивы стартовать - all
aptitude ругается несколькими варнингами на
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays. W: mdadm: no arrays defined in configuration file.
Ерунда, счас создадим.
также aptitude апдейтит initrd update-initramfs: Generating /boot/initrd.img-2.6.26-2-686
#mdadm --create /dev/md0 -l mirror --raid-devices=1 /dev/hdс1 --force # mkfs.ext3 /dev/md0
Монтируем папку, копируем систему создаем папки mnt,proc,sys,tmp
home-gate:/mnt# mkdir /mnt/md0 home-gate:/mnt# mount /dev/md0 /mnt/md0
правим fstab /dev/md0 / ext3 defaults 0
Правим /boot/grub/menu.lst
[...] default 0 fallback 2 [...]
По умолчанию загрузится первое ядро (нумерация начинается с 0) Если не загрузится, загрузится 2-е. Это перестраховка на случай если raid не поднимется.
Смотрим какие ядра есть ядреные :) Копируем нужное, ставим первым, правим root=/dev/hda1 на root=/dev/md0 Вот так эта секция у меня выглядит
title Debian GNU/Linux, kernel 2.6.26-2-686 raid hd2 root (hd2,0) kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/md0 ro quiet initrd /boot/initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-2-686 raid hd0 root (hd0,0) kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/md0 ro quiet initrd /boot/initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-2-686 root (hd0,0) kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro quiet initrd /boot/initrd.img-2.6.26-2-686
3-е ядро уберу когда массив поднимется. и построится. update-initramfs - может и не нужен, его aptitude делал, но лучше не рисковать.
# update-initramfs -u update-initramfs: Generating /boot/initrd.img-2.6.26-2-686 W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
Устанавливаем grub в /dev/hdc, на всякий случай в hda тоже пропишем, но по идее RTFM это не обязательно, хотя когда сервер далеко, лучше перестраховаться.
#grub grub> root (hd0,0) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) grub> root (hd2,0) Filesystem type is ext2fs, partition type 0xfd grub> setup (hd2) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd2)"... 17 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd2) (hd2)1+17 p (hd2,0)/boot/grub/stage2 /boot/grub /menu.lst"... succeeded Done. grub> quit
Ну а дальше как обычно:
sync && PRAY :) :) && REBOOT && CRY :) :) :)
т.е.
#reboot
Заработало. Ух... Выдохнули...
Сносим партишны на /dev/hda, строим Linux Raid Autodetect, добавляем в raid, ждем синхронизации, прописываем grub, бутаемся, радуемся.
подрастим наш массив до 2-х и более дисков
#mdadm --grow --raid-devices=2 /dev/md0 #mdadm --add /dev/md0 /dev/hda1
правим grub
прописываем, бутаемся.
иногда возникают проблемы с добавлением диска в массив после партирования.
blockdev --rereadpt не помогает
parted тоже.
прописываем grub (чтобы на hdc ядро брал на hda его больше нет.)
бутаемся. добавляем диск.
И система на рэйде...
После синхронизации дисков финальный grub
default 0 fallback 1 title Debian GNU/Linux, kernel 2.6.26-2-686 raid hd2 root (hd0,0) kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/md0 ro quiet initrd /boot/initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-2-686 raid hd0 root (hd2,0) kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/md0 ro quiet initrd /boot/initrd.img-2.6.26-2-686
grub> root (hd0,0) grub> setup (hd0) grub> root (hd2,0) grub> setup (hd2)
Done. Resolved.