Читать далее...
После некоторых раздумий и экспериментов на тестовом сервере получилось как-то так:
Сразу оговорюсь - специфичные нюансы моей конфигурации в том, что везде используется intel matrix raid, для хранения конфигурации которого используется 3 последних сектора диска (geom использует 1) и в том, что все диски живут на отдельных каналах. Так что, YMMV
Итак: имеем
oxygen# atacontrol status ar0
ar0: ATA RAID1 status: READY
subdisks:
0 ad4 ONLINE
1 ad6 ONLINE
oxygen# atacontrol list | grep ad -B 1
ATA channel 2:
Master: ad4
--
ATA channel 3:
Master: ad6
Алгоритм: выносим 1 диск из ar0, дабы никто никуда не зеркалировался, выносим записи об ataraid н оставщемся и делаем geom на оставшемся в ar0 диске. Дожидаемся либо полного, либо частичного ребилда 2го диска в geom'е (дабы получить корректные значения в fstab и loader.conf), и перегружаемся:
oxygen# diskinfo ad6
ad6 512 1000204886016 1953525168 1938021 16 63
Количество секторов - 4-е число, которое впрочем можно получить, перемножив параметры из fdisk /dev/ad6
Выносим запись о рейде:
dd if=/dev/zero seek=1953525165 of=/dev/ad6 bs=512 count=3
oxygen# atacontrol detach ata3
oxygen# atacontrol attach ata3
oxygen# atacontrol status ar0
ar0: ATA RAID1 status: DEGRADED
subdisks:
0 ad4 ONLINE
1 ---- MISSING
Лечим 1й диск от тяжкого наследния ataraid'а:
oxygen# dd if=/dev/zero seek=1953525165 of=/dev/ad4 bs=512 count=3
oxygen# sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16
oxygen# kldload geom_mirror
oxygen# echo geom_mirror_load=\"YES\" >> /boot/loader.conf
oxygen# gmirror label -vb round-robin gm0 ad4
Metadata value stored on ad4.
Done.
oxygen# gmirror insert gm0 ad6
oxygen# gmirror status
Name Status Components
mirror/gm0 DEGRADED ad4
ad6 (1%)
oxygen# sed -i '' -e 's/ar0/mirror\/gm0/' /etc/fstab
oxygen# sync ; sync
oxygen# reboot -qn
0 comments:
Post a Comment