This shows you the differences between two versions of the page.
решение_gmirror_ggate [2010/04/20 10:31] val |
решение_gmirror_ggate [2013/05/22 13:50] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Решение GMIRROR GGATE ====== | ||
- | |||
- | [[http://www.freebsd.org/doc/en/books/handbook/geom-ggate.html]] | ||
- | |||
- | [[http://phaq.phunsites.net/2006/08/11/realtime-file-system-replication-on-freebsd/]] | ||
- | |||
- | ===== Первоначальная конфигурация ===== | ||
- | |||
- | Выполняем процедуру [[Добавление дисков]] до создания файловой системы включительно. | ||
- | |||
- | <code> | ||
- | [gate1:~] # cat /etc/hosts | ||
- | ... | ||
- | 10.0.0.2 slave | ||
- | ... | ||
- | |||
- | [gate2:~] # cat /etc/hosts | ||
- | ... | ||
- | 10.0.0.1 slave | ||
- | ... | ||
- | |||
- | [gateN:~] # cat /etc/gg.exports | ||
- | slave RW /dev/ad1s1e | ||
- | |||
- | [gateN:~] # mkdir /opt | ||
- | |||
- | [gateN:~] # cat /etc/periodic.conf | ||
- | daily_status_gmirror_enable="YES" | ||
- | </code> | ||
- | |||
- | ===== Инициализация ===== | ||
- | <code> | ||
- | [gate1:~] # gmirror load | ||
- | [gate1:~] # gmirror label -v gm0 /dev/ad1s1e | ||
- | [gate1:~] # gmirror status | ||
- | |||
- | [gate1:~] # fsck -y -t ufs /dev/mirror/gm0 | ||
- | [gate1:~] # mount /dev/mirror/gm0 /opt | ||
- | |||
- | |||
- | [gate2:~] # ggated | ||
- | |||
- | [gate1:~] # ggatec create -t 10 -u 0 slave /dev/ad1s1e && echo Success | ||
- | [gate1:~] # ggatec list | ||
- | |||
- | [gate1:~] # gmirror insert gm0 ggate0 | ||
- | |||
- | [gate1:~] # gmirror status | ||
- | </code> | ||
- | |||
- | В случае сбоя синхронизации: | ||
- | <code> | ||
- | [gate1:~] # gmirror status | ||
- | Name Status Components | ||
- | mirror/gm0 DEGRADED ad1s1e | ||
- | </code> | ||
- | заставляем зеркало "забыть" о недоподключенном диске и вновь подключаем его | ||
- | <code> | ||
- | [gate1:~] # gmirror forget gm0 | ||
- | [gate1:~] # gmirror insert gm0 ggate0 | ||
- | |||
- | [gate1:~] # tail -f /var/log/messages | ||
- | </code> | ||
- | Иногда, при постоянных сбоях синхронизации, помогает перезапуск ggated на slave узле | ||
- | <code> | ||
- | [gate2:~] # killall ggated | ||
- | [gate2:~] # ggated | ||
- | </code> | ||
- | |||
- | ===== Смена ролей узлов кластера ===== | ||
- | |||
- | gate1 - бывший мастер, теперь бекап | ||
- | |||
- | gate2 - бывший бекап, теперь мастер | ||
- | |||
- | <code> | ||
- | [gate1:~] # umount /opt | ||
- | [gate1:~] # gmirror status | ||
- | [gate1:~] # gmirror deactivate gm0 ggate0 | ||
- | [gate1:~] # gmirror deactivate gm0 ad1s1e | ||
- | [gate1:~] # gmirror unload | ||
- | [gate1:~] # ggatec list | ||
- | [gate1:~] # ggatec destroy -u 0 | ||
- | [gate1:~] # killall -9 ggatec | ||
- | [gate1:~] # ggated | ||
- | |||
- | [gate2:~] # killall ggated | ||
- | [gate2:~] # gmirror load | ||
- | [gate2:~] # gmirror label -v gm0 /dev/ad1s1e | ||
- | [gate2:~] # gmirror status | ||
- | [gate2:~] # fsck -y -t ufs /dev/mirror/gm0 | ||
- | [gate2:~] # mount /dev/mirror/gm0 /opt | ||
- | [gate2:~] # ggatec create -t 10 -u 0 slave /dev/ad1s1e | ||
- | [gate2:~] # ggatec list | ||
- | [gate2:~] # gmirror insert gm0 ggate0 | ||
- | </code> | ||
- | |||
- | ===== Остановка заркалирования ===== | ||
- | <code> | ||
- | [gate2:~] # umount /opt | ||
- | [gate2:~] # gmirror status | ||
- | [gate2:~] # gmirror deactivate gm0 ggate0 | ||
- | [gate2:~] # gmirror deactivate gm0 ad1s1e | ||
- | [gate2:~] # gmirror unload | ||
- | </code> | ||