Centos6 RAID 1 (UUID)
Убиваем предыдущие рейды, если такие были:
mdadm -S /dev/mdx , x-номер устройства
mdadm --zero-superblock /dev/sdb[0-9]
Копируем разметку с sda на sdb
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Редактируем скопированную разметку, разделам что будут в рейде нужно поставить Raid autodetect
fdisk /dev/sdb
Command (m for help): t
Partition number (1-5): 1 - номер sdb*, можно посмотреть через fdisk -l
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect) - для каждого раздела кроме swap
После проставления меток fd, на каждом диске нужно сохранять разметку, вводя команду w.
Создаем RAID 1
mdadm --create /dev/md0 --bitmap=internal --bitmap-chunk=131072 --level 1 --raid-devices=2 missing /dev/sdb2 - md0 для /
mdadm --create /dev/md1 --metadata=0.90 --bitmap=internal --bitmap-chunk=131072 --level 1 --raid-devices=2 missing /dev/sdb1 - md1 для /boot
mdadm --create /dev/md2 --bitmap=internal --bitmap-chunk=131072 --level 1 --raid-devices=2 missing /dev/sdb3 - md2 для /tmp или других
Если дисков больше двух, то нужно добавить ключ --assume-clean для каждого md. Это предотвратит синхронизацию пустых разделов между собой. Если дисков 4 шт. и мы выносим отдельно дополнительные разделы (например, /home или /var/www при соответствующей панели), то для md3 необходимо указать --level 10
Также внимательно указывать --raid-devices=X в зависимости от кол-ва дисков.
Создаем файловую систему на рейдах, на корень, boot и остальное, что создали выше. ФС нужно делать ту, которая на данный момент для корня и бут раздела. Посмотреть df -hT
mkfs.ext4 -m1 -O dir_index /dev/md0
mkfs.ext2 -m1 -O dir_index /dev/md1 - для boot обычно ext2
mkfs.ext4 -m1 -O dir_index /dev/md2
Создаем конфиг mdadm
echo "DEVICE /dev/hd*[0-9] /dev/sd*[0-9] /dev/cciss/c0d[0-3]p[0-9]" > /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf
Смотрим
blkid /dev/md0 и т.д. и записываем UUID-ы
Бэкапим текущий fstab и в новом указываем UUID (blkid) для созданных рейдов
cp /etc/fstab /etc/fstab.old
nano /etc/fstab - замена старых UUID на новые /dev/md* соответственно, кроме swap
Сохраняем оригинальный конфиг груба (загрузчика) и редактируем новый на предмет UUID.
cp /boot/grub/menu.lst /boot/grub/menu.lst.old
nano /boot/grub/menu.lst - меняем UUID /(корня) на UUID /dev/md0
также rd_NO_MD заменить на selinux=0
В цикле генерим initramfs для ядер:
for i in `ls -d /lib/modules/2.*|xargs -n1 basename`; do echo -e "\E[01;32m $i\E[0m"; mkinitrd -f --with=raid1 --with=ahci --with=ext4 /boot/initramfs-$i.img $i;done
Монтируем рейд устройства, в /mnt монтируем md для корня, копируем данные на него с текущего корня фс
mount /dev/md0 /mnt
cp -dpRx / /mnt
Монтируем boot и копируем в него данные:
mount /dev/md1 /mnt/boot
cp -dpRx /boot/* /mnt/boot/
Монтируем tmp и копируем в него данные:
mount /dev/md2 /mnt/tmp
chmod 1777 /mnt/tmp
Ставим груб на диск что в рейде:
grub
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
reboot
После ребута ОС загрузится с созданного рейда без основного диска (в текущем примере рейд будет на sdb и ОС будет работать с md устройств). Остается скопировать разметку с sdb на sda, добавить sda в рейд, после синка поставить груб на /dev/sda (первичный диск) в системе.
Добавление остальных дисков в RAID Проверить что sda нигде не примонтирован (речь о SWAP разделе), если используется, выключить его через swapoff -a
Скопировать разметку с sdb на sda (через sfdisk)
sfdisk -d /dev/sdb | sfdisk --force /dev/sda
Вставить sda в рейд, начинать с /boot раздела, т.к. он маленький и синхронизируется быстрее
mdadm --add /dev/md1 /dev/sda1 - /boot раздел
mdadm --add /dev/md0 /dev/sda2
mdadm --add /dev/md2 /dev/sda3
cat /proc/mdstat - посмотреть синхронизацию
Когда рейд для /boot синхронизируется, нужно поставить загрузчик на sda диск (и на все остальные, если они есть) grub
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
reboot
Делаем отдельные Swap-ы на каждый диск
swapoff -a Выключаем весь свап для разделов
mkswap /dev/sdb*, c*, d*
Добавляем UUID всех свапов(см blkid /dev/sda*), в (nano /etc/fstab)
swapon -a Вкл свап
reboot