Настройка программного raid массива mdadm на Debian Squeeze

Debian mdadm howto
Имеем: два жестких диска по 1TB, на первом установлена система Debian Squeeze, второй — пустой.

fdisk -l

mdadm debian

aptitude search mdadm

mdadm debian

aptitude install mdadm

mdadm debian

mdadm debian

Скопируем таблицу разделов с диска /dev/sda на диск /dev/sdb

dd if=/dev/sda of=/dev/sdb bs=512 count=1

Должно получиться два одинаково размеченых жестких диска

переносим работающую систему на raid 1 debian

Теперь необходимо изменить идентификатор раздела, сейчас он 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

переносим работающую систему на raid 1 debian

переносим работающую систему на raid 1 debian

Создаем массивы

mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2

переносим работающую систему на raid 1 debian

Если все хорошо, должно получиться что-то вроде такого

cat /proc/mdstat

переносим работающую систему на raid 1 debian

Форматируем

mkfs.ext4 /dev/md0
mkswap /dev/md1

переносим работающую систему на raid 1 debian

cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.backup
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

переносим работающую систему на raid 1 debian

Приступаем к копированию файловой системы. Монтируем /dev/md0 в /mnt

mount /dev/md0 /mnt

переносим работающую систему на raid 1 debian

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 debian mdadm

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

debian grub mdadm

Перезагружаем сервер, загружаемся со второго диска

настройка raid 1 debian

Осталось добавить в массив диск /dev/sda

mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
cat /proc/mdstat

mdadm debian настройка raid 1

Следить за синхронизацией удобно следующим образом

watch cat /proc/mdstat

mdadm raid 1 debian squeeze

На этом установка закончена.
Удаление raid массива

  1. Остановить все процессы, использующие массив
    fuser -mv /mnt/raid
  2. Отмонтировать подключенный raid
    umoun /dev/md0
  3. Остановить массив
    mdadm -S /dev/md0
  4. Очистить суперблоки на разделах жестких дисков, из которых состоит массив
    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

Настройка программного raid массива mdadm на Debian Squeeze: 6 комментариев

  1. После строчек:
    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

  2. 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:

  3. Вверху ошибка!
    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 как на скриншотах!

Добавить комментарий

Ваш адрес email не будет опубликован.