Ubuntu 14 c разбивкой диска sda указанной ниже + был добавлен диск /dev/sdb одинакового с диском /dev/sda диском
1 |
# lsblk |
1 2 3 4 5 6 7 |
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 10G 0 disk ├─sda1 8:1 0 190M 0 part /boot ├─sda2 8:2 0 488M 0 part [SWAP] └─sda3 8:3 0 9.3G 0 part / sdb 8:16 0 10G 0 disk sr0 11:0 1 1024M 0 rom |
Установка необходимых пакетов/инструментов
1 |
# apt-get install mdadm initramfs-tools |
Загрузка необходимых модулей
1 |
# modprobe linear |
1 |
# modprobe raid1 |
1 |
# modprobe raid1 |
Для создание RAID-1-массива на уже существующей системе необходимо
А) Подготовить новый диск /dev/sdb для RAID-массива
Б) Скопировать содержимое диска /dev/sda на диск /dev/sdb
В) Добавить диск /dev/sda в RAID-массив
Копируем таблицу разделов с диска /dev/sda на диск /dev/sdb
1 |
# sfdisk -d /dev/sda | sfdisk --force /dev/sdb |
Проверка, что оба диска имеют одинаковую структуру
1 |
# fdisk -l |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000aef2c Device Boot Start End Blocks Id System /dev/sda1 * 2048 391167 194560 83 Linux /dev/sda2 391168 1390591 499712 82 Linux swap / Solaris /dev/sda3 1390592 20969471 9789440 83 Linux Disk /dev/sdb: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sdb1 * 2048 391167 194560 83 Linux /dev/sdb2 391168 1390591 499712 82 Linux swap / Solaris /dev/sdb3 1390592 20969471 9789440 83 Linux |
Изменяем тип разделов для трех разделов диска /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 |
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. |
Чтобы быть уверенным, что на /dev/sdb не осталось никаких следов от возможных предыдущих установок RAID-массивов, выполните следующие команды:
1 |
# mdadm --zero-superblock /dev/sdb1 |
1 |
# mdadm --zero-superblock /dev/sdb2 |
1 |
# mdadm --zero-superblock /dev/sdb3 |
Если никаких остатков предыдущих установок RAID не обнаружится, то каждая из приведенных выше команд mdadm выдаст ошибку (не надо беспокоиться) примерно следующего вида:
1 |
mdadm: Unrecognised md component device — /dev/sdb1 |
В противном случае никакого вывода не будет.
Создание RAID-массивов(/dev/md0, /dev/md1, /dev/md2)
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 |
Создание файловой системы на массивах
1 |
# mkfs.ext4 /dev/md0 # /boot |
1 |
# mkswap /dev/md1 # swap |
1 |
# mkfs.ext4 /dev/md2 # / |
Делаем резервную копию конф.файла mdadm
1 |
# cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf~ |
Cоздаём новый на основании данных нашей системы, уже работающих в ней массивов
1 |
# mdadm --examine --scan >> /etc/mdadm/mdadm.conf |
1 |
# mkdir -p /mnt/{md0,md2} |
Монтируем массивы /dev/md0 и /dev/md2 (не нужно монтировать swap-массив /dev/md1 )
1 |
# mount /dev/md0 /mnt/md0 |
1 |
# mount /dev/md2 /mnt/md2 |
Отредактируем файл /etc/fstab — закомментируем строки, относящиеся к /dev/sda и добавим информацию о массивах:
1 |
# grep -iE "uuid|md" /etc/fstab |
1 2 3 4 5 6 |
#UUID=ec45bae2-d8d2-4c09-9eab-08e311101df0 / ext4 errors=remount-ro 0 1 #UUID=86375376-efb0-45f2-82a0-e06965806a0b /boot ext4 defaults 0 2 #UUID=d51f4e9d-92c2-4bfe-88f3-0ba5b0fe3399 none swap sw 0 0 /dev/md2 / ext4 errors=remount-ro 0 1 /dev/md0 /boot ext4 defaults 0 2 /dev/md1 none swap sw 0 0 |
Настроим GRUB2 загрузчик
1 |
# cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup |
1 |
# nano /etc/grub.d/09_swraid1_setup |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
menuentry 'Ubuntu, with Linux 3.16.0-70-generic' --class ubuntu --class gnu-linux --class gnu --class os { insmod raid insmod mdraid recordfail load_video insmod gzio insmod part_msdos insmod ext2 set root='(md/0)' echo 'Loading Linux 3.16.0-70-generic ...' linux /vmlinuz-3.16.0-70-generic root=/dev/md2 ro echo 'Loading initial ramdisk ...' initrd /initrd.img-3.16.0-70-generic } |
Шаблон взял с файла /boot/grub/grub.cfg в секции ### BEGIN /etc/grub.d/10_linux ###
Корректную версию ядра узнаем с помощью команды
1 |
# uname -r |
Нужно обратить внимание на
a) соответствие версий в параметрах linux и initrd
b) Загрузка выставлена с raid-массива md0 (строка set root='(md/0)’
c) корневой раздел установлен как RAID-массив (root=/dev/md2) в строке line
Отключим использование UUID для наших блочных устройств
Так как мы изменили файл /etc/fstab на использование обычных названий устройств вместо их UUID, сообщим об этом загрузчику
1 |
# nano /etc/default/grub |
1 |
GRUB_DISABLE_LINUX_UUID=true |
Чтобы записать /etc/grub.d/09_swraid1_setup в /boot/grub/grub.cfg обновляем загрузчик
1 |
# update-grub |
Подготавливаем ramdisk
1 |
# update-initramfs -u |
Копируем содержимое /dev/sda1 на /dev/md0 и /dev/sda3 на /dev/md2
1 |
# cp -dpRx / /mnt/md2 |
1 |
# cd /boot/ |
1 |
# cp -dpRx . /mnt/md0 |
Устанавливаем загрузчик на оба диска /dev/sda и /dev/sdb
1 |
# grub-install /dev/sda |
1 |
# grub-install /dev/sdb |
Перезагружаемся, чтобы убедиться, что загрузка с RAID-массива /dev/md0 работает корректно
1 |
# shutdown -r now |
После перезагрузки проверяем наличие RAID-массивов
1 |
# df -h |
1 2 3 4 5 6 7 8 9 10 |
Filesystem Size Used Avail Use% Mounted on udev 483M 4.0K 483M 1% /dev tmpfs 99M 1.1M 98M 2% /run /dev/md2 9.1G 5.3G 3.3G 62% / none 4.0K 0 4.0K 0% /sys/fs/cgroup none 5.0M 0 5.0M 0% /run/lock none 494M 0 494M 0% /run/shm none 100M 0 100M 0% /run/user tmpfs 32M 0 32M 0% /tmpfs /dev/md0 180M 68M 99M 41% /boot |
1 |
# cat /proc/mdstat |
1 2 3 4 5 6 7 8 9 10 11 |
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md2 : active raid1 sdb3[1] 9781120 blocks super 1.2 [2/1] [_U] md1 : active raid1 sdb2[1] 499392 blocks super 1.2 [2/1] [_U] md0 : active raid1 sdb1[1] 194368 blocks super 1.2 [2/1] [_U] unused devices: <none> |
Изменим тип разделов диска /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 |
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. |
Добавляем разделы диска /dev/sda в соответствующие RAID-массивы:
1 |
# mdadm --add /dev/md0 /dev/sda1 |
1 |
# mdadm --add /dev/md1 /dev/sda2 |
1 |
# mdadm --add /dev/md2 /dev/sda3 |
Проверяем, что RAID-массивы синхронизируются
1 |
# cat /proc/mdstat |
1 2 3 4 5 6 7 8 9 10 11 12 |
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md2 : active raid1 sda3[2] sdb3[1] 9781120 blocks super 1.2 [2/1] [_U] resync=DELAYED md1 : active raid1 sda2[2] sdb2[1] 499392 blocks super 1.2 [2/1] [_U] resync=DELAYED md0 : active raid1 sda1[2] sdb1[1] 194368 blocks super 1.2 [2/1] [_U] [=============>.......] recovery = 68.1% (133056/194368) finish=0.2min speed=4158K/sec |
Отредактируем конф.файл mdadm /etc/mdadm/mdadm.conf, восстановив его предварительно из резервной копии:
1 |
# cp /etc/mdadm/mdadm.conf~ /etc/mdadm/mdadm.conf |
1 |
# mdadm --examine --scan >> /etc/mdadm/mdadm.conf |
Его содержимое станет приблизительно таким:
1 |
# cat /etc/mdadm/mdadm.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#DEVICE partitions containers # 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 <system> # instruct the monitoring daemon where to send mail alerts MAILADDR root # definitions of existing MD arrays # This file was auto-generated on Sun, 10 Apr 2016 22:34:37 +0300 # by mkconf $Id$ ARRAY /dev/md/0 metadata=1.2 UUID=cc709442:f635bb3b:388f2f15:ca27fd98 name=ubuntu:0 ARRAY /dev/md/1 metadata=1.2 UUID=f34fc566:a8f6b5e8:6d92fbbf:8e7e63a1 name=ubuntu:1 ARRAY /dev/md/2 metadata=1.2 UUID=df080dfd:065046bd:3faa653e:a0c09857 name=ubuntu:2 |
Удалим файл /etc/grub.d/09_swraid1_setup:
1 |
# rm -f /etc/grub.d/09_swraid1_setup |
И обновим конфигурацию загрузчика:
1 |
# update-grub |
1 |
# update-initramfs -u |
Обновим загрузчик на обоих жестких дисках:
1 |
# grub-install /dev/sda |
1 |
# grub-install /dev/sdb |
Перезагружаем систему:
1 |
# shutdown -r now |
После перезагрузки ожидаем окончания синхронизации дисков
1 |
# watch -d -n1 "cat /proc/mdstat" |
1 2 3 4 5 6 7 8 9 10 11 |
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md1 : active raid1 sda2[2] sdb2[1] 499392 blocks super 1.2 [2/2] [UU] md2 : active raid1 sda3[2] sdb3[1] 9781120 blocks super 1.2 [2/2] [UU] md0 : active raid1 sda1[2] sdb1[1] 194368 blocks super 1.2 [2/2] [UU] unused devices: <none> |
Тестирование
Например, предположим,что диск /dev/sdb требует замены
Помечаем все разделы диска /dev/sdb как неисправные и удаляем диск с RAID-массивов
1 |
# mdadm --manage /dev/md0 --fail /dev/sdb1 |
1 |
# mdadm --manage /dev/md1 --fail /dev/sdb2 |
1 |
# mdadm --manage /dev/md2 --fail /dev/sdb3 |
1 |
# mdadm --manage /dev/md0 --remove /dev/sdb1 |
1 |
# mdadm --manage /dev/md1 --remove /dev/sdb2 |
1 |
# mdadm --manage /dev/md2 --remove /dev/sdb3 |
Выключаем сервер и заменяем диск /dev/sdb
После загрузки сервера проверяем, что массив имеет статус degraded
Проверям таблицу разделов
1 |
# fdisk -l |
Копируем таблицу разделов с диска /dev/sda на диск /dev/sdb
1 |
# sfdisk -d /dev/sda | sfdisk --force /dev/sdb |
Удаляем любые остатки(если они есть) от предыдущего RAID-массива с диска /dev/sdb
1 |
# mdadm --zero-superblock /dev/sdb1 |
1 |
# mdadm --zero-superblock /dev/sdb2 |
1 |
# mdadm --zero-superblock /dev/sdb3 |
Добавляем диск /dev/sdb в RAID-массив
1 |
# mdadm --add /dev/md0 /dev/sdb1 |
1 |
# mdadm --add /dev/md1 /dev/sdb2 |
1 |
# mdadm --add /dev/md2 /dev/sdb3 |
Источник:
https://www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-system-incl-grub2-configuration-debian-squeeze
https://www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-system-incl-grub2-configuration-ubuntu-10.04-p2