Автор: Сергей
Программный raid1 FreeBSD
Перед началом, убедитесь, что у вас есть два физических диска равной емкости.
Предположительно ваша ОС FreeBSD установлена на первый жесткий диск в моем варианте ad4
Перед построением зеркала включите дополнительную отладочную информацию и откройте доступ к устройству:
- sysctl kern.geom.debugflags=17
Теперь создаeм зеркало.
gmirror label -vb round-robin gm0 /dev/ad4
Система выдаст:
- Metadata value stored on /dev/ad4.
Done.
Инициализируем GEOM:
- gmirror load
После успешного завершения команды будет создано устройство gm0 в каталоге /dev/mirror
Включение автоматической загрузки модуля geom_mirror.ko во время старта операционной системы:
- echo geom_mirror_load="YES" >> /boot/loader.conf
Или можно пересобрать ядро добавив строку:
- options GEOM_MIRROR
Отредактируем файл /etc/fstab, заменив в нём упоминания старого имени устройства ad4 новым именем устройства зеркала gm0. Предварительно сделав копию файла fstab.
- cp /etc/fstab /etc/fstab.orig
До редактирывания ваш файл fstab был приблезительно такого вида :
- # Device Mountpoint FStype Options Dump Pass#
/dev/dev/ad4s1b none swap sw 0 0
/dev/dev/ad4s1a / ufs rw 1 1
/dev/dev/ad4s1d /usr ufs rw 0 0
/dev/dev/ad4s1f /home ufs rw 2 2
/dev/dev/ad4s1e /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
После того как мы в нем полазим примет следующий вид:
- # Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1d /usr ufs rw 0 0
/dev/mirror/gm0s1f /home ufs rw 2 2
/dev/mirror/gm0s1e /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
Перезагрузите систему:
- shutdown -r now
- mount
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/mirror/gm0s1a 1012974 224604 707334 24% /
devfs 1 1 0 100% /dev
/dev/mirror/gm0s1f 45970182 28596 42263972 0% /home
/dev/mirror/gm0s1d 6090094 1348356 4254532 24% /usr
/dev/mirror/gm0s1e 3045006 2241420 559986 80% /var
devfs 1 1 0 100% /var/named/dev
- gmirror insert gm0 /dev/ad6
- gmirror status
- Name Status Components
mirror/gm0 COMPLETE ad4
ad6
- gmirror remove gm0 ad4
- gmirror forget gm0
gmirror insert gm0 /dev/ad4
Root mount error
- dd if=/dev/zero of=/dev/ad1 bs=512 count=79
sysctl kern.geom.debugflags=17 gmirror label -v -n -b round-robin gm0 /dev/ad1
- gmirror load
- fdisk -v -B -I /dev/mirror/gm0
bsdlabel -w -B /dev/mirror/gm0s1 # initialize
bsdlabel -e /dev/mirror/gm0s1 # create custom partitions
b: размерG * swap
c: не трогаем
d: размерG *
e: размерG *
После создаем файловую систему, монтируем раздел, переходим туда копируем данные и распаковываем.
- newfs -U /dev/mirror/gm0s1a
mount /dev/mirror/gm0s1a /mnt
cd /mnt
dump -0auLf - /mnt /dev/ad4s1a
restore -rf ad4s1a
newfs -U /dev/mirror/gm0s1d
mount /dev/mirror/gm0s1d /mnt/var
dump -L -0 -f- /var | (cd /mnt/var; restore -r -v -f-)
newfs -U /dev/mirror/gm0s1e
mount /dev/mirror/gm0s1e /mnt/usr
dump -L -0 -f- /usr | (cd /mnt/usr; restore -r -v -f-)
- cp -p /mnt/etc/fstab /mnt/etc/fstab.orig
Добавляем:
- echo geom_mirror_load="YES" >>/mnt/boot/loader.conf
- shutdown -r now
- dd if=/dev/zero of=/dev/ad0 bs=512 count=79
gmirror configure -a gm0
gmirror insert gm0 /dev/ad4
- shutdown -r now
- dd if=/dev/zero of=/dev/ada1 bs=1m count=1
- dd if=/dev/zero of=/dev/ada1 bs=1m oseek=`diskinfo ada1 | awk '{print int($3 / (1024*1024)) - 4;}'`