Вот как раз для этого есть отличный мануал от Red Hat: http://kbase.redhat.com/faq/docs/DOC-7355 и вот еще один мануал с Opennet и вот еще один.
Вот конфигурация винтов:
fdisk -l
Disk /dev/sda: 300.0 GB, 300069052416 bytes
255 heads, 63 sectors/track, 36481 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 523 4200966 82 Linux swap / Solaris
/dev/sda2 524 785 2104515 83 Linux
/dev/sda3 786 36481 286728120 83 Linux
Disk /dev/sdb: 300.0 GB, 300069052416 bytes
255 heads, 63 sectors/track, 36481 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Создаем на втором диске (/dev/sdb) структуру разделов аналогичную /dev/sda
fdisk /dev/sdb
n
p
1
[enter]
523 # соответствует значению End напротив /dev/sda1 из таблицы выше
w
fdisk /dev/sdb
n
p
2
[enter]
785 # соответствует значению End напротив /dev/sda2 из таблицы выше
fdisk /dev/sdb
n
p
3
[enter]
[enter]
w
В итоге должна получиться следующая картина:
fdisk -l
Disk /dev/sda: 300.0 GB, 300069052416 bytes
255 heads, 63 sectors/track, 36481 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 523 4200966 82 Linux swap / Solaris
/dev/sda2 524 785 2104515 83 Linux
/dev/sda3 786 36481 286728120 83 Linux
Disk /dev/sdb: 300.0 GB, 300069052416 bytes
255 heads, 63 sectors/track, 36481 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 523 4200966 83 Linux
/dev/sdb2 524 785 2104515 83 Linux
/dev/sdb3 786 36481 286728120 83 Linux
Как легко заметить, структура размещения разделов на обоих дисках идентична.
Кстати говоря, на Opennet автор рекомендует использовать вот такую простую команду для копирования структуры разделов:
sfdisk -d /dev/sda | sfdisk /dev/sdbона работает отлично, также рекомендую, как более простой путь :)
Меняем тип для всех вновь созданных разделов с Linux на Linux Raid
fdisk /dev/sdb
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): fd
Changed system type of partition 3 to fd (Linux raid autodetect)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
Итого в результате у нас получается следующее:
fdisk -l
Disk /dev/sda: 300.0 GB, 300069052416 bytes
255 heads, 63 sectors/track, 36481 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 523 4200966 82 Linux swap / Solaris
/dev/sda2 524 785 2104515 83 Linux
/dev/sda3 786 36481 286728120 83 Linux
Disk /dev/sdb: 300.0 GB, 300069052416 bytes
255 heads, 63 sectors/track, 36481 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 523 4200966 fd Linux raid autodetect
/dev/sdb2 524 785 2104515 fd Linux raid autodetect
/dev/sdb3 786 36481 286728120 fd Linux raid autodetect
Создаем Raid на основе второго диска (/dev/sdb):
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
Слово missing означает, что создается degraded (разбитый) массив, т.е. массив, в котором один из дисков отсутствует.
Форматируем диски вновь созданного Raid
mkswap /dev/md0
mkfs.ext3 /dev/md1
mkfs.ext3 /dev/md2
Составляем конфиг RAID
Теперь нам необходимо составить конфиг нашего RAID массива (как я понял, он особо никому не нужен, но сделать его стоит хотя бы для удобства):
Генерируется он так:
mkdir -p /etc/mdadm
/sbin/mdadm --examine --scan > /etc/mdadm/mdadm.conf
Перенос данных
Теперь нам нужно перенести данные c /dev/sda2 и /dev/sda3 на соответственно /dev/md1 и /dev/md2
Данные на sda2 и sda3 у нас размещены в следующих точках мониторования:
/dev/sda2 on /boot type ext3 (rw)
/dev/sda3 on / type ext3 (rw)
Итак, копируем /dev/sda2:
mkdir /mnt/md1
mount /dev/md1 /mnt/md1
cp -axu /boot/* /mnt/md1
sync
umount /mnt/md1
В итоге получаем идентичное содержимое папок:
root@CentOS-54-32-minimal /etc # ls /mnt/md1
boot message
config-2.6.18-164.6.1.el5PAE symvers-2.6.18-164.6.1.el5PAE.gz
grub System.map-2.6.18-164.6.1.el5PAE
initrd-2.6.18-164.6.1.el5PAE.img vmlinuz-2.6.18-164.6.1.el5PAE
lost+found
root@CentOS-54-32-minimal /etc # ls /boot
boot message
config-2.6.18-164.6.1.el5PAE symvers-2.6.18-164.6.1.el5PAE.gz
grub System.map-2.6.18-164.6.1.el5PAE
initrd-2.6.18-164.6.1.el5PAE.img vmlinuz-2.6.18-164.6.1.el5PAE
lost+found
Следующая операция крайне длительна и не хотелось бы, чтобы она оборвалась по вине интернет-соединения, поэтому ставим и запускаем screen:
yum install -y screen
screen
Переносим /dev/sda3:
mkdir /mnt/md2
mount /dev/md2 /mnt/md2/
cp -axu / /mnt/md2
Также убеждаемся в идентичности содержимого папок:
root@CentOS-54-32-minimal /etc # ls /mnt/md2/
bin dev home lib media opt root selinux sys usr
boot etc installimage.conf lost+found mnt proc sbin srv tmp var
root@CentOS-54-32-minimal /etc # ls /
bin dev home lib media opt root selinux sys usr
boot etc installimage.conf lost+found mnt proc sbin srv tmp var
Корректирование /etc/fstab
Теперь на нашем примонтированном рейде нам нужно внести изменения в fstab чтобы система монтировала не старые разделы, а уже RAID. Для этого открываем файл:
vi /mnt/md2/etc/fstab
И строки:
/dev/sda1 none swap sw 0 0
/dev/sda2 /boot ext3 defaults 0 0
/dev/sda3 / ext3 defaults 0 0
Заменяем соотвественно на:
/dev/md0 none swap sw 0 0
/dev/md1 /boot ext3 defaults 0 0
/dev/md2 / ext3 defaults 0 0
Регенерируем Initrd ядра, включаем в него модули поддержки RAID
mkinitrd --fstab=/mnt/md2/etc/fstab -v -f /boot/initrd-`uname -r`.img `uname -r`
При этом в выдаче команды должны промелькнуть строки "raid-1". Только вот честно не понимаю, где он узнает, что на машинке теперь используется RAID. Как выяснилось после долгих изысканий, об использовании RAID на root разделе он узнает из fstab.
Теперь повторяем перенос /boot раздела, т.к. у нас новый initrd
Сейчас оптимизирую мануал. чтобы этого избежать.
mkdir -p /mnt/md1
mount /dev/md1 /mnt/md1
cp -axu /boot/* /mnt/md1
sync
umount /mnt/md1
Отмонитируем раздел
umount /mnt/md2/
Вносим коррективы в системный GRUB
Для этого открываем /etc/grub.conf и там
root=/dev/sda3
заменяем на:
root=/dev/md2
Тоже самое делаем для нового /boot (/dev/md1).
mount /dev/md1 /mnt/md1
vi /mnt/md1/grub/menu.lst
umount /mnt/md1
Перезагружаемся
shutdown -r now
Ставим GRUB на второй диск
grub-install /dev/sdb
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(hd0) /dev/sda
(hd1) /dev/sdb
Также я бы рекомендовал "освежить" инсталляцию grub на первом диск:
grub-install /dev/sda
Еще раз перезагружаемся
И ставим в BIOS загрузку со второго, нового жесткого диска ( Boot Sequecce ) и еще раз перзагружаемся, при этом уже загрузка пойдет со второго диска и первый не потребуется вообще.
Устанавливаем тип Linux Raid для разделов первого диска
fdisk /dev/sda
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): fd
Changed system type of partition 3 to fd (Linux raid autodetect)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
Добавляем разделы с первого диска в RAID
mdadm /dev/md0 -a /dev/sda1
mdadm /dev/md1 -a /dev/sda2
mdadm /dev/md2 -a /dev/sda3
Дожидаемся окончания ребилда RAID
cat /proc/mdstat
Personalities : [raid1] [raid10] [raid0] [raid6] [raid5] [raid4]
md0 : active raid1 sda1[2] sdb1[1]
4200896 blocks [2/1] [_U]
[==========>..........] recovery = 52.7% (2215232/4200896) finish=0.5min speed=58454K/sec
md1 : active raid1 sda2[2] sdb2[1]
2104448 blocks [2/1] [_U]
resync=DELAYED
md2 : active raid1 sda3[2] sdb3[1]
286728000 blocks [2/1] [_U]
resync=DELAYED
unused devices:
Еще раз перезагружаемся
И Убеждаемся, что все окей :) Либо идем заказывать KVM
This comment has been removed by the author.
ReplyDeleteА вот ещё 1 описание, тренировались тоже на CentOS 5.3
ReplyDeletehttp://rus-linux.net/nlib.php?name=/MyLDP/sys-conf/RAID1_CentOS.html
Ага, я из него тоже, вроде бы, что-то брал :)
ReplyDelete