Ну вот и вторая часть создание нашего RAID массива на работающей системе Ubuntu 10.04
7. Подготовка /dev/sda
Если все пойдет хорошо, мы должны получить /dev/md0 и /dev/md2
df -h
root@server1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md2 4.0G 815M 3.0G 22% /
none 243M 192K 243M 1% /dev
none 247M 0 247M 0% /dev/shm
none 247M 40K 247M 1% /var/run
none 247M 0 247M 0% /var/lock
none 247M 0 247M 0% /lib/init/rw
none 4.0G 815M 3.0G 22% /var/lib/ureadahead/debugfs
/dev/md0 472M 27M 421M 6% /boot
root@server1:~#
Вывод команды
cat /proc/mdstat
должен быть следующим:
root@server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb1[1]
498624 blocks [2/1] [_U]
md1 : active raid1 sdb2[1]
499648 blocks [2/1] [_U]
md2 : active raid1 sdb3[1]
4242368 blocks [2/1] [_U]
unused devices:
root@server1:~#
Теперь мы должны изменить тип раздела /dev/sda из наших трех разделов в Linux raid autodetect:
fdisk /dev/sda
root@server1:~# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
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.
Syncing disks.
root@server1:~#
Теперь мы можем добавить /dev/sda1, /dev/sda2 и /dev/sda3 в соответствующий RAID массив:
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sda3
Теперь посмотрим командой
cat /proc/mdstat
и мы должны будем увидеть что RAID массивы синхронизированы:
root@server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
498624 blocks [2/2] [UU]
md1 : active raid1 sda2[2] sdb2[1]
499648 blocks [2/1] [_U]
resync=DELAYED
md2 : active raid1 sda3[2] sdb3[1]
4242368 blocks [2/1] [_U]
[===========>.........] recovery = 55.1% (2338176/4242368) finish=0.3min speed=83506K/sec
unused devices:
root@server1:~#
Теперь запустим командой
watch cat /proc/mdstat
для получения текущего вывода процесса создания нашего RAID массива. Для остановки просмотра нажмите комбинацию Ctrl + C
Подождите, пока синхронизация закончится. Вывод должен выглядеть следующим образом:
root@server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda1[0] sdb1[1]
498624 blocks [2/2] [UU]
md1 : active raid1 sda2[0] sdb2[1]
499648 blocks [2/2] [UU]
md2 : active raid1 sda3[0] sdb3[1]
4242368 blocks [2/2] [UU]
unused devices:
root@server1:~#
Затем исправим и установим в файле /etc/mdadm/mdadm.conf и новую уонфигурацию:
cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
/etc/mdadm/mdadm.conf должен выглядеть примерно вот так:
cat /etc/mdadm/mdadm.conf
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
# automatically tag new arrays as belonging to the local system
HOMEHOST
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
# definitions of existing MD arrays
# This file was auto-generated on Mon, 21 Jun 2010 13:21:00 +0200
# by mkconf $Id$
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=68686c40:b924278e:325ecf68:79913751
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=9719181e:3071f655:325ecf68:79913751
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=c3360f0f:7f3d47ec:325ecf68:79913751
8. Подготовка загрузчика GRUB2 (часть 2)
Сейчас мы удалим файл /etc/grub.d/09_swraid1_setup...
rm -f /etc/grub.d/09_swraid1_setup
И обновим нашу конфигурацию загрузчика GRUB2 :
update-grub
update-initramfs -u
Теперь если мы посмотрим /boot/grub/grub.cfg мы обнаружим в строке menuentry ### BEGIN /etc/grub.d/10_linux ### Секция должна быть такая же как мы прописывали в etc/grub.d/09_swraid1_setup. Следовательно у нас настроен раздел /dev/md0 на загрузку вместо (hd0, 1) или (hd1, 1), поэтому мы больше не нуждаемся в /etc/grub.d/09_swraid1_setup
Перезагрузим систему:
reboot
Теперь система должна загрузится без проблем.
Вот и все, мы успешно создали наш RAID массив на нашей работающей системе Ubuntu10.04
9. Тестирование нашей системы
Теперь протестируем наш RAID массив и сделаем имитацию отказа жесткого диска. В данном случае не имеет значения какой вы выберете жесткий диск /dev/sda или /dev/sdb . В виде примера я буду считать что /dev/sdb вышел из строя.
Для имитации сбоя жесткого диска, можно завершить работу системы и отключить жесткий диск /dev/sdb из системы, или можно произвести через soft-remove вот таким образом:
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md2 --fail /dev/sdb3
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm --manage /dev/md2 --remove /dev/sdb3
Выключаем систему
shutdown -h now
Теперь подключаем новый жесткий диск /dev/sdb (если вы имитируете сбой жесткого диска /dev/sda то необходимо в таком случае жесткий диск /dev/sdb переключить вместо /dev/sda, и новый жесткий диск подключить вместо /dev/sdb) и загружаем нашу систему. Наша система должна загрузится без проблем.
Далее запускаем:
cat /proc/mdstat
и мы увидим следующую картину, что наш RAID массив находится в состоянии распада
root@server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sda3[0]
4242368 blocks [2/1] [U_]
md1 : active raid1 sda2[0]
499648 blocks [2/1] [U_]
md0 : active raid1 sda1[0]
498624 blocks [2/1] [U_]
unused devices:
root@server1:~#
Вывод команды
fdisk –l
должен быть следующим:
root@server1:~# fdisk -l
Disk /dev/sda: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000246b7
Device Boot Start End Blocks Id System
/dev/sda1 * 1 63 498688 fd Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sda2 63 125 499712 fd Linux raid autodetect
Partition 2 does not end on cylinder boundary.
/dev/sda3 125 653 4242432 fd Linux raid autodetect
Partition 3 does not end on cylinder boundary.
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/md0: 510 MB, 510590976 bytes
2 heads, 4 sectors/track, 124656 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/md0 doesn't contain a valid partition table
Disk /dev/md1: 511 MB, 511639552 bytes
2 heads, 4 sectors/track, 124912 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/md1 doesn't contain a valid partition table
Disk /dev/md2: 4344 MB, 4344184832 bytes
2 heads, 4 sectors/track, 1060592 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/md2 doesn't contain a valid partition table
root@server1:~#
Сейчас мы скопируем таблицу разделов с /dev/sda в /dev/sdb
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
root@server1:~# sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 652 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 * 2048 999423 997376 fd Linux raid autodetect
/dev/sdb2 999424 1998847 999424 fd Linux raid autodetect
/dev/sdb3 1998848 10483711 8484864 fd Linux raid autodetect
/dev/sdb4 0 - 0 0 Empty
Warning: partition 1 does not end at a cylinder boundary
Successfully wrote the new partition table
Re-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
You have new mail in /var/mail/root
root@server1:~#
Потом мы удалим остатки предыдущего RAID массива с /dev/sdb ...
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3
Теперь посмотрим
cat /proc/mdstat
root@server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sdb3[2] sda3[0]
4242368 blocks [2/1] [U_]
[===>.................] recovery = 16.1% (683520/4242368) finish=0.6min speed=97645K/sec
md1 : active raid1 sdb2[2] sda2[0]
499648 blocks [2/1] [U_]
resync=DELAYED
md0 : active raid1 sdb1[1] sda1[0]
498624 blocks [2/2] [UU]
unused devices:
root@server1:~#
Осталось подождать пока закончится синхронизация и снова посмотрим на наш массив:
root@server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sdb3[1] sda3[0]
4242368 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
499648 blocks [2/2] [UU]
md0 : active raid1 sdb1[1] sda1[0]
498624 blocks [2/2] [UU]
unused devices:
root@server1:~#
Затем установим загрузчик на оба жестких диска:
grub-install /dev/sda
grub-install /dev/sdb
Ну вот и все, мы только что заменили неисправный жесткий диск в нашем RAID1 массиве
Ссылки:
The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
Ubuntu: http://www.ubuntu.com/
Howtoforge: http://www.howtoforge.org/
Комментарии
sudo update-initramf s -u
теперь будет загружаться без вопросов
Мне кажется, нужно еще добавить
grub-install /dev/sda
grub-install /dev/sdb
update-initramfs -u
RSS лента комментариев этой записи