Debian mdadm howto
Имеем: два жестких диска по 1TB, на первом установлена система Debian Squeeze, второй — пустой.
fdisk -l
aptitude search mdadm
aptitude install mdadm
Скопируем таблицу разделов с диска /dev/sda на диск /dev/sdb
dd if=/dev/sda of=/dev/sdb bs=512 count=1
Должно получиться два одинаково размеченых жестких диска

Теперь необходимо изменить идентификатор раздела, сейчас он 83 — стандартный раздел Linux, нам нужен fd — Linux raid autodetect
fdisk /dev/sdb
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): w
Создаем массивы
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2
Если все хорошо, должно получиться что-то вроде такого
cat /proc/mdstat
Форматируем
mkfs.ext4 /dev/md0
mkswap /dev/md1
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.backup
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Приступаем к копированию файловой системы. Монтируем /dev/md0 в /mnt
mount /dev/md0 /mnt
cp -dpRx / /mnt
Теперь необходимо изменить /etc/fstab.
vim /mnt/etc/fstab
Было
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#
proc /proc proc defaults 0 0
# / was on /dev/sda1 during installation
UUID=4c0123e9-01d6-4f7b-a607-cad87d278278 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda2 during installation
UUID=50a93592-b00f-428f-b284-a16e00a11a3c none swap sw 0 0
Стало
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#
proc /proc proc defaults 0 0
/dev/md0 / ext4 errors=remount-ro 0 1
/dev/md1 none swap sw 0 0
Установим и сконфигурируем grub
grub-install --root-directory=/mnt/ /dev/sdb
У меня была ошибка
/usr/sbin/grub-probe: error: no such disk.
Auto-detection of a filesystem of /dev/md0 faild.
Вылечилось созданием символических ссылок
ln -s /dev/md0 /dev/md/0
ln -s /dev/md1 /dev/md/1
grub-install --recheck /dev/sdb
Еще один момент: необходимо раскомментировать GRUB_TERMINAL=console в /mnt/etc/default/grub
Далее делаем так:
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
chroot /mnt
update-grub
grub.cfg должен выглядеть вот так
root@node1:/# cat /boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
load_env
fi
set default="0"
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function load_video {
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
}
terminal_input console
terminal_output console
set timeout=5
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
insmod raid
insmod mdraid
insmod part_msdos
insmod ext2
set root='(md/0)'
search --no-floppy --fs-uuid --set d91f199f-e8b0-424f-a03a-a0979f4cbd25
echo 'Loading Linux 2.6.32-5-amd64 ...'
linux /boot/vmlinuz-2.6.32-5-amd64 root=/dev/md0 ro quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.32-5-amd64
}
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
insmod raid
insmod mdraid
insmod part_msdos
insmod ext2
set root='(md/0)'
search --no-floppy --fs-uuid --set d91f199f-e8b0-424f-a03a-a0979f4cbd25
echo 'Loading Linux 2.6.32-5-amd64 ...'
linux /boot/vmlinuz-2.6.32-5-amd64 root=/dev/md0 ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.32-5-amd64
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
На всякий случай перепроверим UUID
blkid
Перезагружаем сервер, загружаемся со второго диска
Осталось добавить в массив диск /dev/sda
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
cat /proc/mdstat
Следить за синхронизацией удобно следующим образом
watch cat /proc/mdstat
На этом установка закончена.
Удаление raid массива
- Остановить все процессы, использующие массив
fuser -mv /mnt/raid
- Отмонтировать подключенный raid
umoun /dev/md0
- Остановить массив
mdadm -S /dev/md0
- Очистить суперблоки на разделах жестких дисков, из которых состоит массив
mdadm --zero-superblock /dev/sda1 mdadm --zero-superblock /dev/sdb1
Удаление жесткого диска из массива
mdadm --manage /dev/md0 --fail /dev/sda1
mdadm --manage /dev/md0 --remove /dev/sda1
mdadm --zero-superblock /dev/sda1
После строчек:
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: device /dev/sdb1 not suitable for any style of array
Попробуйте этот вариант http://www.lemm.ru/showthread.php?t=866, пишут, что такое бывает, когда остались метаданные от старого массива
root@debian:/home/alex# mdadm —add /dev/md0 /dev/sda1
mdadm: Cannot open /dev/sda1: Device or resource busy
root@debian:/home/alex# mdadm —add /dev/md1 /dev/sda2
mdadm: Cannot open /dev/sda2: Device or resource busy
root@debian:/home/alex# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active (auto-read-only) raid1 sdb1[1]
4294644 blocks super 1.2 [2/1] [_U]
md1 : active (auto-read-only) raid1 sdb2[1]
945140 blocks super 1.2 [2/1] [_U]
unused devices:
Вот такая вот беда: http://pastebin.com/sA6CAy2C
Вверху ошибка!
fdisk /dev/sda
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): w
Эти операции надо выполнять для /dev/sdb как на скриншотах!
Какой смысл от свопа в RAID?