Столько воды утекло с тех пор как вышел второй граб - а я всё за него не решался браться: видимо консерватизм и банальная лень.
Но тут выше debian 6 - squeeze и волей не воле пришлось изучать этот замечательный загрузчик...
GRUB-LEGASY v.0.97 - мой любимый загрузчик знаю его как свои 5 пальцев - ушел на покой последним только в debian lenny - ЧЕСТЬ И ХВАЛА ему. До этого все дистры уже перешли на GRUB2. Так что если уж и дебиан перешел - значит и мне пора...
Есть задача сделать зеркальный массив программно так как fake-raid от интела используют драйвер и софт под масдай и сами ресурсы от ОС т.е от Виндоус 9x/Me/2K/XP/2K3/Vista/Seven/2K8 - нужное подчеркнуть. Т.е. fake raid в UNIX почти бесполезен по причине отсутствия драйверов контролирующих жёсткие диски. Отсюда встала задача: сделать софт рэйд. В бытность работая с МАУ - я уже много ра собирал системы на программном рэйде - mdadm - и всё бы ничего но сука вышел граб второй и тут как говорится нашла коса на камень. Прочем мануал на англицком - хоть я его и почти не знаю но вроде технический понимаю...
Итог трех рабочих дней под катом... Букаф много....
apt-get install initramfs-tools mdadm
Грузим модули в ядро
modprobe linear
modprobe multipath
modprobe raid1
modprobe raid5
modprobe raid10
Оставим только нужные модули - ибо нехуй...
Чекаем -
root@xxx:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid1] [raid5] [raid10]
unused devices:
Теперь собстно что нужно получить:
есть два диска /dev/sda и зеркальный /dev/sdb
нужно их засинхронизировать...
fdisk -l
Disk /dev/sda: 36.6 GB, 36698849280 bytes
255 heads, 63 sectors/track, 4461 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00070290
Device Boot Start End Blocks Id System
/dev/sda1 1 62 497983+ 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 63 311 2000092+ 82 Linux swap / Solaris
Partition 1 does not end on cylinder boundary.
/dev/sda3 312 4461 33334875 83 Linux
Partition 1 does not end on cylinder boundary.
Disk /dev/sdb: 36.6 GB, 36698849280 bytes
255 heads, 63 sectors/track, 4461 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b703e
Device Boot Start End Blocks Id System
Таким образом получается что: md0=sda1=sdb1, md2 = sda2=sdb2, md3=sda3=sdb3.
Размеры дисков не ахти - ибо SSD встроенные на плату PCI-E x8 - скорость просто жесть 6Gb/sec = это всё делается под быстрый кэш для прокси-веб-майл сервера...
далее копируем разделы с sda на sdb
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Форс обязательно из-за Partition 1 does not end on cylinder boundary.
Что енто такое я так и не понял - видимо какой атавизм от ДОСа.
Чекаем снова:
fdisk -l
Disk /dev/sda: 36.6 GB, 36698849280 bytes
255 heads, 63 sectors/track, 4461 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00070290
Device Boot Start End Blocks Id System
/dev/sda1 1 62 497983+ 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 63 311 2000092+ 82 Linux swap / Solaris
Partition 1 does not end on cylinder boundary.
/dev/sda3 312 4461 33334875 83 Linux
Partition 1 does not end on cylinder boundary.
Disk /dev/sdb: 36.6 GB, 36698849280 bytes
255 heads, 63 sectors/track, 4461 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b703e
Device Boot Start End Blocks Id System
/dev/sdb1 1 62 497983+ 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sdb2 63 311 2000092+ 82 Linux swap / Solaris
Partition 1 does not end on cylinder boundary.
/dev/sdb3 312 4461 33334875 83 Linux
Partition 1 does not end on cylinder boundary.
Создаем разделы через fdisk /dev/sdb. Создаем на главных разделах 1,2 и 3 партиции типа fd. И выходим по W - записывая всё это дело на винт.
Создаем RAID
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2
mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb3
Теперь уже в cat /prox/mdstat есть рэйды но по 1 диску.
md2 : active raid1 sdb3[1]
497983 blocks [2/1] [_U]
md1 : active raid1 sdb2[1]
2000092 blocks [2/1] [_U]
md0 : active raid1 sdb1[1]
33334875 blocks [2/1] [_U]
Создадим ext4 на разделах:
mkfs.ext4 /dev/md0
mkswap /dev/md1
mkfs.ext4 /dev/md2
Далее всё это дело вносим в
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
И получаем:
tail -n10 /etc/mdadm/mdadm.conf
# definitions of existing MD arrays
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=
# This file was auto-generated on Tue, 01 Mar 2011 16:01:51 +0500
# by mkconf 3.1.4-1+8efb9d1
Теперь собстно всё это дело монтируем
Сделали папочки
mkdir /mnt/md0
mkdir /mnt/md2
Смонтировали
mount /dev/md0 /mnt/md0
mount /dev/md2 /mnt/md2
Не монтируем раздел подкачки...
Правим /etc/fstab
# / was on /dev/sda3 during installation
#UUID=48d65bba-0f02-44b4-8557-b508309b1963 / ext4 errors=remount-ro 0 1
/dev/md2 / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
#UUID=e3a677ee-2db0-4a8a-8d6c-94715c8cd90f /boot ext4 defaults 0 2
/dev/md0 /boot ext4 defaults 0 2
# swap was on /dev/sda2 during installation
#UUID=1e27f700-ec54-4de9-9428-c6d47d7921f4 none swap sw 0 0
/dev/md1 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0
Правим /etc/mtab
Конец файла только
/dev/md0 /boot ext4 rw 0 0
/dev/md0 /mnt/md0 ext4 rw 0 0
/dev/md2 /mnt/md2 ext4 rw 0 0
А теперь как раз про GRUB2)))
cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup
cat /etc/grub.d/09_swraid1_setup
#!/bin/sh
exec tail -n +3 $0
menuentry 'SERVER' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod raid
insmod mdraid
insmod ext2
set root='(md0)'
linux /vmlinuz-2.6.32-5-686 root=/dev/md2 ro quiet
initrd /initrd.img-2.6.32-5-686
}
Далее обновляем инфу о грабе
update-grub
Копирнем раздел
cd /
cp -dpRx . /mnt/md2
cd /boot
cp -dpRx . /mnt/md0
По новой проинсталируем
grub-install /dev/sda
grub-install /dev/sdb
и как говорится семь бед - один резет...
shutdown -r now
Держим пальчики крестом...
Логонимся....
Теперь по налаогии повторяем с разделом sda.
.
Создаем разделы через fdisk /dev/sda. Создаем на главных разделах 1,2 и 3 партиции типа fd. И выходим по W - записывая всё это дело на винт.
А вот теперь уже cat /proc/mdstat
md2 : active raid1 sda3[1]
497983 blocks [2/2] [UU]
md1 : active raid1 sda2[1]
2000092 blocks [2/2] [UU]
md0 : active raid1 sda1[1]
33334875 blocks [2/2] [UU]
Повторяем шаманские танцы по поводу mdadm.conf fstab mtab...
А вот это я нашел на одном из зарубежных форумов
Необходимо удалить:
rm -f /etc/grub.d/09_swraid1_setup
И обновить граб
update-grub
update-initramfs -u
Мне в этом нелегком деле помогли:
http://www.howtoforge.org/http://tldp.org/HOWTO/Software-RAID-HOWTO.htmlhttp://debian.org