This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
решение_gmirror_ggate [2010/02/19 16:33] val |
решение_gmirror_ggate [2013/05/22 13:50] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Решение GMIRROR GGATE ====== | ====== Решение GMIRROR GGATE ====== | ||
| - | |||
| - | [[http://www.freebsd.org/doc/en/books/handbook/geom-mirror.html]] | ||
| [[http://www.freebsd.org/doc/en/books/handbook/geom-ggate.html]] | [[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> | <code> | ||
| - | [gate2:~] # cat /etc/gg.exports | + | [gate1:~] # cat /etc/hosts |
| - | master RW /dev/ad1s1e | + | ... |
| + | 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:~] # newfs /dev/mirror/gm0 | ||
| + | |||
| + | [gate1:~] # fsck -y -t ufs /dev/mirror/gm0 | ||
| + | [gate1:~] # mount /dev/mirror/gm0 /opt | ||
| [gate2:~] # ggated | [gate2:~] # ggated | ||
| [gate1:~] # ggatec create -t 10 -u 0 slave /dev/ad1s1e && echo Success | [gate1:~] # ggatec create -t 10 -u 0 slave /dev/ad1s1e && echo Success | ||
| - | Success | ||
| [gate1:~] # ggatec list | [gate1:~] # ggatec list | ||
| - | ggate0 | ||
| - | [gate1:~] # gmirror insert -p 100 gm0 /dev/ad1s1e | + | [gate1:~] # gmirror insert gm0 ggate0 |
| - | + | ||
| - | [gate1:~] # gmirror label -v -n -b prefer gm0 /dev/ggate0 | + | |
| - | Metadata value stored on /dev/ggate0. | + | |
| - | Done. | + | |
| - | [gate1:~] # gmirror load | + | |
| - | [gate1:~] # gmirror insert -p 100 gm0 /dev/ad1s1e | + | |
| [gate1:~] # gmirror status | [gate1:~] # gmirror status | ||
| - | Name Status Components | + | </code> |
| - | mirror/gm0 DEGRADED ggate0 | + | |
| - | ad1s1e | + | |
| + | ==== В случае сбоя синхронизации ==== | ||
| + | <code> | ||
| [gate1:~] # gmirror status | [gate1:~] # gmirror status | ||
| Name Status Components | Name Status Components | ||
| - | mirror/gm0 DEGRADED ggate0 | + | mirror/gm0 DEGRADED ad1s1e |
| - | ad1s1e | + | </code> |
| - | [gate1:~] # gmirror list gm0 | + | заставляем зеркало "забыть" о недоподключенном диске и вновь подключаем его |
| - | Geom name: gm0 | + | <code> |
| - | State: DEGRADED | + | [gate1:~] # gmirror forget gm0 |
| - | Components: 2 | + | [gate1:~] # gmirror insert gm0 ggate0 |
| - | Balance: prefer | + | |
| - | Slice: 4096 | + | |
| - | Flags: NOAUTOSYNC | + | |
| - | GenID: 0 | + | |
| - | SyncID: 1 | + | |
| - | ID: 3348985214 | + | |
| - | Providers: | + | |
| - | 1. Name: mirror/gm0 | + | |
| - | Mediasize: 1073438720 (1.0G) | + | |
| - | Sectorsize: 512 | + | |
| - | Mode: r0w0e0 | + | |
| - | Consumers: | + | |
| - | 1. Name: ggate0 | + | |
| - | Mediasize: 1073439232 (1.0G) | + | |
| - | Sectorsize: 512 | + | |
| - | Mode: r1w1e1 | + | |
| - | State: ACTIVE | + | |
| - | Priority: 0 | + | |
| - | Flags: NONE | + | |
| - | GenID: 0 | + | |
| - | SyncID: 1 | + | |
| - | ID: 2553232608 | + | |
| - | 2. Name: ad1s1e | + | |
| - | Mediasize: 1073439232 (1.0G) | + | |
| - | Sectorsize: 512 | + | |
| - | Mode: r1w1e1 | + | |
| - | State: STALE | + | |
| - | Priority: 100 | + | |
| - | Flags: SYNCHRONIZING | + | |
| - | GenID: 0 | + | |
| - | SyncID: 1 | + | |
| - | ID: 1755782325 | + | |
| - | [gate1:~] # gmirror rebuild gm0 ad1s1e | + | [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 status | ||
| - | Name Status Components | + | [gate1:~] # gmirror deactivate gm0 ggate0 |
| - | mirror/gm0 DEGRADED ggate0 | + | [gate1:~] # gmirror deactivate gm0 ad1s1e |
| - | ad1s1e (1%) | + | [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 | ||
| + | |||
| + | [gate2:~] # gmirror status | ||
| </code> | </code> | ||
| + | |||
| + | ===== Остановка заркалирования ===== | ||
| + | <code> | ||
| + | [gate2:~] # umount /opt | ||
| + | [gate2:~] # gmirror status | ||
| + | [gate2:~] # gmirror deactivate gm0 ggate0 | ||
| + | [gate2:~] # gmirror deactivate gm0 ad1s1e | ||
| + | [gate2:~] # gmirror unload | ||
| + | </code> | ||
| + | |||