В систему уже существует диск /dev/sda разбитый на разделы
1 2 3 |
/dev/sda1 – boot /dev/sda2 -/ /dev/sda3 – swap |
Добавляем новый диск /dev/sdb для создания RAID1-массива
1 |
# fdisk -l | grep /dev |
1 2 3 4 5 |
Disk /dev/sda: 7516 MB, 7516192768 bytes, 14680064 sectors /dev/sda1 * 2048 1001471 499712 83 Linux /dev/sda2 1001472 12681215 5839872 83 Linux /dev/sda3 12681216 14680063 999424 82 Linux swap / Solaris Disk /dev/sdb: 7516 MB, 7516192768 bytes, 14680064 sectors |
Установка утилиты mdadm
1 |
# yum install mdadm |
1.Копирование таблицы разделов с /dev/sda на /dev/sdb
1 |
# sfdisk -d /dev/sda | sfdisk --force /dev/sdb |
2.Подгрузка необходимыx модулей ядра
1 |
# modprobe linear |
1 |
# modprobe raid0 |
1 |
# modprobe raid1 |
Проверка состояния RAID-массива
1 |
# cat /proc/mdstat |
1 2 |
Personalities : [linear] [raid0] [raid1] unused devices: <none> |
Проверка, что оба диска имеют одинаковую таблицу разделов
1 |
# fdisk -l | grep dev |
1 2 3 4 5 6 7 8 |
Disk /dev/sda: 7516 MB, 7516192768 bytes, 14680064 sectors /dev/sda1 * 2048 1001471 499712 83 Linux /dev/sda2 1001472 12681215 5839872 83 Linux /dev/sda3 12681216 14680063 999424 82 Linux swap / Solaris Disk /dev/sdb: 7516 MB, 7516192768 bytes, 14680064 sectors /dev/sdb1 * 2048 1001471 499712 83 Linux /dev/sdb2 1001472 12681215 5839872 83 Linux /dev/sdb3 12681216 14680063 999424 82 Linux swap / Solaris |
3.Изменение типа разделов на втором жестком диске /dev/sdb на Linux raid autodetect
1 |
# fdisk /dev/sdb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): t Partition number (1-3, default 3): 1 Hex code (type L to list all codes): fd Changed type of partition 'Linux' to 'Linux raid autodetect' Command (m for help): t Partition number (1-3, default 3): 2 Hex code (type L to list all codes): fd Changed type of partition 'Linux' to 'Linux raid autodetect' Command (m for help): t Partition number (1-3, default 3): 3 Hex code (type L to list all codes): fd Changed type of partition 'Linux swap / Solaris' to 'Linux raid autodetect' Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. |
Проверка типа разделов диска /dev/sdb
1 |
# fdisk -l | grep /dev/sdb |
1 2 3 4 |
Disk /dev/sdb: 7516 MB, 7516192768 bytes, 14680064 sectors /dev/sdb1 * 2048 1001471 499712 fd Linux raid autodetect /dev/sdb2 1001472 12681215 5839872 fd Linux raid autodetect /dev/sdb3 12681216 14680063 999424 fd Linux raid autodetect |
4.Обнуление всех разделов нового диска.
Чтобы быть уверенным, что на /dev/sdb не осталось никаких следов от возможных предыдущих установок RAID-массивов, выполните следующие команды:
1 |
# mdadm --zero-superblock /dev/sdb1 |
mdadm: Unrecognised md component device — /dev/sdb1
1 |
# mdadm --zero-superblock /dev/sdb2 |
mdadm: Unrecognised md component device — /dev/sdb2
1 |
# mdadm --zero-superblock /dev/sdb3 |
mdadm: Unrecognised md component device — /dev/sdb3
Если никаких остатков предыдущих установок RAID не обнаружится, то каждая из приведенных выше команд mdadm выдаст ошибку (не надо беспокоиться) примерно следующего вида:
1 |
mdadm: Unrecognised md component device - /dev/sdb1 |
В противном случае никакого вывода не будет.
5.Создание RAID-массива
Если используется Grub 2, который поддерживает по умолчанию версию метаданных( сейчас 1.2)
Для Centos 7
1 |
# mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1 |
1 |
# mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2 |
1 |
# mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb3 |
Проверка состояния нашего массива должна показать, что у нас есть три поврежденных RAID-массива ([_U] или [U_] означает, что массив поврежден, а [UU] означает, что все в порядке):
1 |
# cat /proc/mdstat |
1 2 3 4 5 6 7 8 9 10 11 |
Personalities : [linear] [raid0] [raid1] md2 : active raid1 sdb3[1] 998848 blocks super 1.2 [2/1] [_U] md1 : active raid1 sdb2[1] 5835776 blocks super 1.2 [2/1] [_U] md0 : active raid1 sdb1[1] 499392 blocks super 1.2 [2/1] [_U] unused devices: <none> |
6.Создание файловых систем на созданных RAID-устройствах
1 |
# mkfs.ext4 /dev/md0 # /boot |
1 |
# mkfs.ext4 /dev/md1 #/ |
1 |
# mkswap /dev/md2 # swap |
7.Копируем данные с корневой файловой системы на корневой RAID-массив md1
1 |
# mkdir /mnt/sysimage |
1 |
# mount /dev/md1 /mnt/sysimage |
1 |
# mkdir /mnt/sysimage/boot |
1 |
# cd / |
1 |
# find . -depth -xdev | cpio -pmd /mnt/sysimage/ |
8.Копируем данный с /boot-раздела системы на boot RAID-массив md0
1 |
# mkdir /raid |
1 |
# mount /dev/md0 /raid/ |
1 |
# cd /boot |
1 |
# find . -depth | cpio -pmd /raid/ |
1 |
# umount /raid |
9.Монтируем md0 массив в новый корневой раздел в каталог boot
1 |
# mount /dev/md0 /mnt/sysimage/boot/ |
10.Монтируем информацию о текущей системе в наш новый корень и делаем chroot в него
1 |
# mount -o bind /proc /mnt/sysimage/proc |
1 |
# mount -o bind /dev /mnt/sysimage/dev |
1 |
# mount -o bind /sys /mnt/sysimage/sys |
1 |
# chroot /mnt/sysimage/ |
11.Получаем UUID для наших md-массивов и заменяем ими присутствующие в /etc/fstab UUID-ы
1 |
# blkid | grep md |
1 2 3 |
/dev/md0: UUID="8f07acb0-38c5-4a12-a636-3457b0a242d0" TYPE="ext4" /dev/md1: UUID="22851961-18a0-43b7-a864-b22ee65301da" TYPE="ext4" /dev/md2: UUID="8ab36f74-017f-478e-baf1-750838234db1" TYPE="swap" |
1 |
# blkid | grep md >> /etc/fstab |
1 |
# nano /etc/fstab |
1 2 3 |
UUID=22851961-18a0-43b7-a864-b22ee65301da / ext4 defaults 1 1 UUID=8f07acb0-38c5-4a12-a636-3457b0a242d0 /boot ext4 defaults 1 2 UUID=8ab36f74-017f-478e-baf1-750838234db1 swap swap defaults 0 0 |
12.Создаем конфиг для mdadm
1 |
# mdadm --detail --scan > /etc/mdadm.conf |
1 |
# cat /etc/mdadm.conf |
1 2 3 |
ARRAY /dev/md0 metadata=1.2 name=centos71.kamaok.org.ua:0 UUID=becf3635:e3608836:0a44f349:c3857549 ARRAY /dev/md1 metadata=1.2 name=centos71.kamaok.org.ua:1 UUID=8d673c0f:e7f66134:e457e6e4:b3b5ea57 ARRAY /dev/md2 metadata=1.2 name=centos71.kamaok.org.ua:2 UUID=de74ce22:e214af73:a81827bd:55283ead |
13. Делаем новый initramfs, с нужными модулями
1 |
# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.old |
1 |
# dracut /boot/initramfs-$(uname -r).img $(uname -r) |
14. Передаем ядру опцию «rd.auto=1» явно через «GRUB», для этого, добавляем ее в «GRUB_CMDLINE_LINUX»:
1 |
# nano /etc/default/grub |
1 |
GRUB_CMDLINE_LINUX="rhgb quiet rd.auto=1" |
Необходимость передачи этой опции является то,что по какой-то причине initramfs созданый «dracut» не видит собранного raid и отказывается грузится. Версия «dracut» 033.
https://habrahabr.ru/post/248073/
15.Пересоздаем конфигурационный файл GRUB /boot/grub2/grub.cfg
1 |
# grub2-mkconfig -o /boot/grub2/grub.cfg |
Устанавливаем загрузчик на оба диска
1 |
# grub2-install /dev/sdb |
1 |
# grub2-install /dev/sda |
16. Проверяем, что uuid md0 и опция «rd.auto=1» точно записались
1 |
# less /boot/grub2/grub.cfg |
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
............................... menuentry 'CentOS Linux (3.10.0-327.13.1.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.13.1.el7.x86_64-advanced-22851961-18a0-43b7-a864-b22ee65301da' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod diskfilter insmod mdraid1x insmod ext2 set root='mduuid/becf3635e36088360a44f349c3857549' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint='mduuid/becf3635e36088360a44f349c3857549' 8f07acb0-38c5-4a12-a636-3457b0a242d0 else search --no-floppy --fs-uuid --set=root 8f07acb0-38c5-4a12-a636-3457b0a242d0 fi linux16 /vmlinuz-3.10.0-327.13.1.el7.x86_64 root=UUID=22851961-18a0-43b7-a864-b22ee65301da ro rhgb quiet rd.auto=1 initrd16 /initramfs-3.10.0-327.13.1.el7.x86_64.img } ...................................... |
1 |
# grep md0 /etc/mdadm.conf |
1 |
ARRAY /dev/md0 metadata=1.2 name=centos71.kamaok.org.ua:0 UUID=becf3635:e3608836:0a44f349:c3857549 |
1 |
# blkid | grep md1 |
1 |
/dev/md1: UUID="22851961-18a0-43b7-a864-b22ee65301da" TYPE="ext4" |
17.Перезагрузка системы
1 |
# shutdown -r now |
Проверяем,что используем md-массивы вместо диска sda
1 2 3 4 5 6 7 8 9 |
# df -h Filesystem Size Used Avail Use% Mounted on /dev/md1 5.4G 1.1G 4.0G 22% / devtmpfs 484M 0 484M 0% /dev tmpfs 493M 0 493M 0% /dev/shm tmpfs 493M 6.8M 487M 2% /run tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/md0 465M 119M 318M 28% /boot tmpfs 99M 0 99M 0% /run/user/0 |
18.Изменение типа разделов на /dev/sda на Linux raid autodetect
1 |
# fdisk /dev/sda |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): t Partition number (1-3, default 3): 1 Hex code (type L to list all codes): fd Changed type of partition 'Linux' to 'Linux raid autodetect' Command (m for help): t Partition number (1-3, default 3): 2 Hex code (type L to list all codes): fd Changed type of partition 'Linux' to 'Linux raid autodetect' Command (m for help): t Partition number (1-3, default 3): 3 Hex code (type L to list all codes): fd Changed type of partition 'Linux swap / Solaris' to 'Linux raid autodetect' Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. |
19.Добавление /dev/sda1, /dev/sda2 и /dev/sda3 в RAID-массив
1 |
# mdadm --manage --add /dev/md0 /dev/sda1 |
1 |
mdadm: added /dev/sda1 |
1 |
# mdadm --manage --add /dev/md1 /dev/sda2 |
1 |
mdadm: added /dev/sda2 |
1 |
# mdadm --manage --add /dev/md2 /dev/sda3 |
1 |
mdadm: added /dev/sda3 |
Устанавливаем загрузчик на диск /dev/sda
1 |
# grub2-install /dev/sda |
20.Проверка состояния RAID-массива(процесса синхронизации)
И проверяем состояние массива. Убеждаемся, что идет процесс синхронизации
1 |
# watch -d -n1 "cat /proc/mdstat" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Personalities : [raid1] md2 : active raid1 sda3[2] sdb3[1] 998848 blocks super 1.2 [2/1] [_U] resync=DELAYED md1 : active raid1 sda2[2] sdb2[1] 5835776 blocks super 1.2 [2/1] [_U] resync=DELAYED md0 : active raid1 sda1[2] sdb1[1] 499392 blocks super 1.2 [2/1] [_U] [==============>......] recovery = 71.8% (358976/499392) finish=0.4min speed=5048K/sec unused devices: <none> |
21.По окончании синхронизации всех массивов
1 |
# cat /proc/mdstat |
1 2 3 4 5 6 7 8 9 10 11 |
Personalities : [raid1] md2 : active raid1 sda3[2] sdb3[1] 998848 blocks super 1.2 [2/2] [UU] md1 : active raid1 sda2[2] sdb2[1] 5835776 blocks super 1.2 [2/2] [UU] md0 : active raid1 sda1[2] sdb1[1] 499392 blocks super 1.2 [2/2] [UU] unused devices: <none> |
Тестирование
Проверка состояние RAID-массива
1 |
# cat /proc/mdstat |
Помечаем диск /dev/sda как сбойный
1 |
# mdadm --manage /dev/md0 --fail /dev/sda1 |
1 |
mdadm: set /dev/sda1 faulty in /dev/md0 |
1 |
# mdadm --manage /dev/md1 --fail /dev/sda2 |
1 |
mdadm: set /dev/sda2 faulty in /dev/md1 |
1 |
# mdadm --manage /dev/md2 --fail /dev/sda3 |
1 |
mdadm: set /dev/sda3 faulty in /dev/md2 |
Проверка состояние RAID-массива
1 |
# cat /proc/mdstat |
1 2 3 4 5 6 7 8 9 |
Personalities : [raid1] md1 : active raid1 sda2[2](F) sdb2[1] 5835776 blocks super 1.2 [2/1] [_U] md2 : active raid1 sda3[2](F) sdb3[1] 998848 blocks super 1.2 [2/1] [_U] md0 : active raid1 sda1[2](F) sdb1[1] 499392 blocks super 1.2 [2/1] [_U] |
Удаляем диск sda с RAID-массива
1 |
# mdadm --manage /dev/md0 --remove /dev/sda1 |
1 |
mdadm: set /dev/sda1 faulty in /dev/md0 |
1 |
# mdadm --manage /dev/md1 --remove /dev/sda2 |
1 |
mdadm: set /dev/sda2 faulty in /dev/md1 |
1 |
# mdadm --manage /dev/md2 --remove /dev/sda3 |
1 |
mdadm: set /dev/sda3 faulty in /dev/md2 |
После замены диска
1.Копируем таблицу разделов с диска /dev/sdb на диск /dev/sda
1 |
# sfdisk -d /dev/sdb | sfdisk --force /dev/sda |
2.Удаляем любые остатки(если они есть) от предыдущего RAID-массива с диска /dev/sda
1 |
# mdadm --zero-superblock /dev/sda1 |
1 |
# mdadm --zero-superblock /dev/sda2 |
1 |
# mdadm --zero-superblock /dev/sda3 |
3.Добавляем диск /dev/sda в RAID-массив
1 |
# mdadm --manage --add /dev/md0 /dev/sda1 |
1 |
# mdadm --manage --add /dev/md1 /dev/sda2 |
1 |
# mdadm --manage --add /dev/md2 /dev/sda3 |
4.Проверка состояние RAID-массива(процесс синхронизации)
1 |
# watch -d -n1 cat /proc/mdstat |
5.Установим загрузчик на новом диске
1 |
# grub2-install /dev/sda |
Источник:
https://habrahabr.ru/post/248073/
https://wiki.centos.org/HowTos/Install_On_Partitionable_RAID1
http://www.howtoforge.com/how-to-create-a-raid1-setup-on-an-existing-centos-redhat-6.0-system