Archives
среда, апреля 29, 2009
Как чинить совсем развалившийся mdadm raid5
          Недавно приключилась неприятность: в работащем raid5 в процессе rebuild'а после замены диска вылетел второй диск. Rebuild был завершен где-то на 90%. Ценные данные на массиве занимали только первую треть диска, а значит были теоретически спасены. Но raid не запускается, т.к. нет двух дисков. Как быть?
Рецепт спасения следующий:
0. Данные действия могут быть деструктивными для ваших данных. Настоятельно рекомендуется скопировать все диски, и эксперименты по восстановлению проводить на копии.
1. Проверить параметры старого raid. Для этого сделать mdadm -E на любой из имеющихся дисков.
2. Собрать raid в деградировавшем состоянии. Для этого выполнить:
mdadm --create /dev/md0 -n XXX -c YYY -l 5 -p ZZZ --assume-clean /dev/sda1 /dev/sdb1 /dev/sdc1 missing /dev/sde1
Здесь XXX - число дисков в raid, YYY - размер chunk'а, ZZZ - используемая геометрия, все эти параметры от старого raid'а выдает mdadm -E. Важно соблюсти порядок дисков таким же, какой был в оригинальном массиве, и поставить missing на месте именно сбойного диска.
3. Готово. Можно проверить целостность данных, и "доткнуть" оставшийся диск, чтобы запустить repair на восстановленный raid.
 
     
          Рецепт спасения следующий:
0. Данные действия могут быть деструктивными для ваших данных. Настоятельно рекомендуется скопировать все диски, и эксперименты по восстановлению проводить на копии.
1. Проверить параметры старого raid. Для этого сделать mdadm -E на любой из имеющихся дисков.
2. Собрать raid в деградировавшем состоянии. Для этого выполнить:
mdadm --create /dev/md0 -n XXX -c YYY -l 5 -p ZZZ --assume-clean /dev/sda1 /dev/sdb1 /dev/sdc1 missing /dev/sde1
Здесь XXX - число дисков в raid, YYY - размер chunk'а, ZZZ - используемая геометрия, все эти параметры от старого raid'а выдает mdadm -E. Важно соблюсти порядок дисков таким же, какой был в оригинальном массиве, и поставить missing на месте именно сбойного диска.
3. Готово. Можно проверить целостность данных, и "доткнуть" оставшийся диск, чтобы запустить repair на восстановленный raid.
пятница, апреля 17, 2009
Как установить CentOS 5.3 на софтверный Partitionable RAID1
- Установить CentOS используя стандартный инсталлятор на диск sda. При разбивке диска оставить немного места (хотя бы один юнит) в самом хвосте диска незанятым.
- Загрузиться с диска в Rescue режим. Систему не искать и не монтировать.
- Собрать рейд:
 mdadm --create --level=1 --raid-devices=2 /dev/md_d0 /dev/sda missing
- Воткнуть /dev/sdb в получившийся рейд, чтобы он ребилдился:
 mdadm --add /dev/md_d0 /dev/sdb
 Убедиться, проверив /proc/mdstat, что рейд стал ребилдиться.
- Смонтировать руками систему в состояние, пригодное для chroot и сделать chroot:
 mkdir /mnt/sysimage
 mount /dev/md_d0p1 /mnt/sysimage
 mount -o bind /dev /mnt/sysimage/dev
 mount -o bind /selinux /mnt/sysimage/selinux
 mount -t proc none /mnt/sysimage/proc
 mount -t sysfs none /mnt/sysimage/sys
 chroot /mnt/sysimage
- Подготовить систему к тому, что она будет жить на рейде.
 Сначала сделать /etc/mdadm.conf:
 mdadm --examine --scan > /etc/mdadm.conf
 В результирующем файле заменить /dev/md0 на /dev/md_d0
 Отредактировать /etc/fstab, заменить там монтирование по LABEL на явное монтирование устройств типа /dev/md_d0p1, ...
 Отредактировать /etc/grub.conf, заменить root=LABEL=... на root=/dev/md_d0p1
- Пропатчить mkinitrd, патч взять здесь:
 cd /sbin
 cp mkinitrd mkinitrd.dist
 patch -p0 < /tmp/mkinitrd-md_d0.patch
- Запрещаем обновлять mkinitrd, для этого в /etc/yum.conf дописываем exclude=mkinitrd*
- Делаем новый initrd:
 cd /boot
 mv initrd-2.6.18-128.el5.img initrd-2.6.18-128.el5.img.bak
 mkinitrd /boot/initrd-2.6.18-128.el5.img 2.6.18-128.el5
- Проверяем /proc/mdstat, как только рейд собрался - можно нажимать Ctrl-D до упора, пока система не перезагрузится.

