Меню сайта
Категории каталога
Использование gmirror для создания программного зеркалирования дисков [2008]
Досталась мамка с кривым S-ATA контроллером - SiL3112 . До того, как выяснилось что он кривой, успел заказать два S-ATA харда :). Поколупавшись день, понял, что на ней ничё не светит, и взял со склада два P-ATA. Тока вот RAID-контроллер на маме был лишь новомоднявого формата Serail ATA. Поэтому, ввиду того, что машина ответственная, решил сделать зеркало софтверное. Вначале, хотел забульбенить по-старинке, через atacontrol , но после некоторого размышления, решил что лучше мутить на gmirror . Основной причиной стало то, что за зеркалом на atacontrol надо присматривать больше, чем на gmirror. Ненамного, но больше. Итак, для начала добавляем строку в /boot/loader.conf
/usr/home/lissyara/>echo 'geom_mirror_load=YES' >> /boot/loader.conf
/usr/home/lissyara/>
После чего создаём зеркало:
/usr/home/lissyara/>gmirror label -v -b round-robin gm0 /dev/ad0
Can't store metadata on /dev/ad0: Operation not permitted.
/usr/home/lissyara/>
Не даёт писать на диск который используется. Правиться при помощи sysctl:
/usr/home/lissyara/>sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16
/usr/home/lissyara/>
Снова пробуем:
/usr/home/lissyara/>gmirror label -v -b round-robin gm0 /dev/ad0
Metadata value stored on /dev/ad0.
Done.
/usr/home/lissyara/>
Сделали зеркало из одного диска. Надо добавить второй, но вначале правим /etc/fstab из такого:
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s2b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /jails/eliron ufs rw 2 2
/dev/ad0s1f /jails/gptel ufs rw 2 2
/dev/ad0s1g /jails/grand-prix ufs rw 2 2
/dev/ad0s1d /tmp ufs rw 2 2
/dev/ad0s1h /usr ufs rw 2 2
/dev/ad0s1b /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
# NULLFS - for ports
/usr/ports /jails/eliron/usr/ports nullfs rw 0 0
#/usr/ports /jails/gptel/usr/ports nullfs rw 0 0
#/usr/ports /jails/grand-prix/usr/ports nullfs rw 0 0
В такой (это просто пример, что должно меняться, а что не должно, хотя и взят он с реальной машины)
/usr/home/lissyara/>df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/mirror/gm0s1a 372M 60M 282M 18% /
devfs 1 .0K 1 .0K 0B 100% /dev
/dev/mirror/gm0s1e 1 .9G 363M 1 .4G 20% /jails/eliron
/dev/mirror/gm0s1f 1 .9G 4 .0K 1 .8G 0% /jails/gptel
/dev/mirror/gm0s1g 1 .9G 4 .0K 1 .8G 0% /jails/grand-prix
/dev/mirror/gm0s1d 1 .9G 14K 1 .8G 0% /tmp
/dev/mirror/gm0s1h 271G 6 .0G 243G 2% /usr
/dev/mirror/gm0s1b 9 .3G 34M 8 .5G 0% /var
/usr/ports 271G 6 .0G 243G 2% /jails/eliron/usr/ports
devfs 1 .0K 1 .0K 0B 100% /var/named/dev
devfs 1 .0K 1 .0K 0B 100% /jails/eliron/dev
procfs 4 .0K 4 .0K 0B 100% /jails/eliron/proc
/usr/home/lissyara/>
После чего перезагружаемся. Если всё нормально, и ошибок нет, то надо втыкать второй хард в зеркало. Если ошибки, и не грузится, то монтируем корневую ФС руками, и исправляем ошибки в /etc/fstab . Итак, втыкаем второй хард в зеркало:
/usr/home/lissyara/>gmirror insert gm0 /dev/ad1
/usr/home/lissyara/>
Смотрим логи:
/usr/home/lissyara/>tail -2 /var/log/messages
Nov 2 11 :04 :00 router kernel : GEOM_MIRROR: Device gm0: provider ad1 detected.
Nov 2 11 :04 :00 router kernel : GEOM_MIRROR: Device gm0: rebuilding provider ad1.
/usr/home/lissyara/>
И статус массива:
/usr/home/lissyara/>gmirror status
Name Status Components
mirror/gm0 DEGRADED ad0
ad1 (1%)
/usr/home/lissyara/>
Полные данные можно получить такой командой:
/usr/home/lissyara/>gmirror list
Geom name : gm0
State: DEGRADED
Components: 2
Balance: round-robin
Slice: 4096
Flags : NONE
GenID: 0
SyncID: 1
ID : 875211574
Providers:
1 . Name : mirror/gm0
Mediasize: 320072932864 (298G)
Sectorsize: 512
Mode: r9w8e10
Consumers:
1 . Name : ad0
Mediasize: 320072933376 (298G)
Sectorsize: 512
Mode: r1w1e1
State: ACTIVE
Priority: 0
Flags : DIRTY
GenID: 0
SyncID: 1
ID : 4187229399
2 . Name : ad1
Mediasize: 320072933376 (298G)
Sectorsize: 512
Mode: r1w1e1
State: SYNCHRONIZING
Priority: 0
Flags : DIRTY, SYNCHRONIZING
GenID: 0
SyncID: 1
Synchronized: 1%
ID : 2887372520
/usr/home/lissyara/>
А в логах ядра такое:
/usr/home/lissyara/>dmesg | grep GEOM_MIRROR
GEOM_MIRROR: Device gm0 created (id =875211574 ).
GEOM_MIRROR: Device gm0: provider ad0 detected.
GEOM_MIRROR: Device gm0: provider ad0 activated.
GEOM_MIRROR: Device gm0: provider mirror/gm0 launched.
GEOM_MIRROR: Device gm0: provider ad1 detected.
GEOM_MIRROR: Device gm0: rebuilding provider ad1.
/usr/home/lissyara/>
После сборки будет так:
/usr/home/lissyara/>gmirror status
Name Status Components
mirror/gm0 COMPLETE ad0
ad1
/usr/home/lissyara/>
Это описание не претендует на полноту, или ещё что-то, делалось оно по горячим следам, в процессе работы. Может кому и пригодится.
Источник: http://www.lissyara.su/?id=1272
Категория: Работа с железом | Добавил: oleg (09.01.2009) | Автор: lissyara
Просмотров: 1102 | Рейтинг: 0.0 /0 |
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация |
Вход ]
Форма входа
Друзья сайта
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
links