DRBD: Porovnání verzí
Bez shrnutí editace |
|||
(Není zobrazeno 17 mezilehlých verzí od stejného uživatele.) | |||
Řádek 2: | Řádek 2: | ||
=Vytvoření externího úložiště pro metadata= | =Vytvoření externího úložiště pro metadata= | ||
Při tvorbě DRBD zařízení budete nejčastěji chtít vytvořit jej nad LV, ve kterém už jsou nějaká data. | |||
DRBD ale potřebuje o každém svém zařízení udržovat metadata - např. bitovou mapu změn kvůli rychlejší synchronizaci. | |||
Metadata může uložit buď interně - přímo do LV, které chcete replikovat, nebo externě (do jiného LV). | |||
Interně se metadata ukládají na konec LV, tzn. pokud v něm máte nějaká data, musíte LV nejdříve zvětšit o patřičnou velikost. | |||
Externí úložiště je samozřejmě pohodlnější, a pokud bude i na jiném fyzickém disku, bude i rychlejší. | |||
Vytvoříte jej např. takto: | |||
lvcreate -L 256M -n drbd-meta-disk vg_main | lvcreate -L 256M -n drbd-meta-disk vg_main | ||
Velikost 256MB stačí pro kapacitu 256MB * 32768, viz návod [http://www.drbd.org/users-guide/ch-internals.html#s-meta-data-size Estimating meta data size]. | Velikost 256MB stačí pro kapacitu 256MB * 32768 = 8 TB, viz návod [http://www.drbd.org/users-guide/ch-internals.html#s-meta-data-size Estimating meta data size], ale každý DRBD resource musí mít min. 128MB metadat - viz [http://lists.linbit.com/pipermail/drbd-user/2010-July/014376.html tento report]. | ||
Proto jako velikost metadat dejte 128MB * počet DRBD zařízení. | |||
=drbd.conf= | =drbd.conf= | ||
Příklad: | |||
resource vyuka-system { | |||
protocol C; | |||
startup { | |||
wfc-timeout 0; ## Infinite! | |||
degr-wfc-timeout 120; ## 2 minutes. | |||
become-primary-on xeric; | |||
} | |||
disk { | |||
on-io-error detach; | |||
} | |||
net { | |||
# allow-two-primaries; | |||
} | |||
syncer { | |||
} | |||
on xeric { | |||
device /dev/drbd0; | |||
disk /dev/vg_main/vyuka-system; | |||
address x.y.z.w:7789; | |||
meta-disk /dev/vg_main/drbd-meta-disk[0]; | |||
} | |||
on other-server { | |||
device /dev/drbd0; | |||
disk /dev/vg_main/vyuka-root; | |||
address x.y.z.v:7889; | |||
meta-disk /dev/vlam-server/drbd-meta-disk[0]; | |||
} | |||
} | |||
Pozn.: | |||
*od DRBD 8.3.2 (Debian Squeeze, Ubuntu 10.04..) lze prý místo drbd[0..9]+ psát drbd_{custom device name}. Zkoušel jsem to, ale nefunguje. | |||
*od DRBD 8.4 (Debian Sid?) bude možné tvořit multi volume DRBD resource, tzn. všechny LV půjde synchronizovat přes jediné připojení. | |||
=Spuštění synchronizace= | =Spuštění synchronizace= | ||
Řádek 12: | Řádek 57: | ||
Vytvoření DRBD zařízení: | Vytvoření DRBD zařízení: | ||
drbdadm create-md {DRBD_target_z_konfiguraku} | root@xeric:#drbdadm create-md {DRBD_target_z_konfiguraku} | ||
Připojení storage k DRBD zařízení | a to samé na druhém serveru: | ||
root@other-server:#drbdadm create-md {DRBD_target_z_konfiguraku} | |||
Podobně na obou serverech spustit: | |||
Připojení storage k DRBD zařízení | |||
drbdadm attach {DRBD_target_z_konfiguraku} | drbdadm attach {DRBD_target_z_konfiguraku} | ||
Připojení DRBD zařízení k protějšku na síti: | Připojení DRBD zařízení k protějšku na síti: | ||
drbdadm connect {DRBD_target_z_konfiguraku} | drbdadm connect {DRBD_target_z_konfiguraku} | ||
Nebo předchozí 2 příkazy najednou: | |||
drbdadm up {DRBD_target_z_konfiguraku} | |||
Na prvním uzlu je potřeba nastavit příznak primary | |||
drbdsetup /dev/drbd2 primary --do-what-I-say | |||
Resp. v Debian Lenny | |||
drbdsetup /dev/drbd2 primary -o | |||
=Změna v konfiguraci= | |||
==Změna protějšího uzlu nebo jeho IP adresy== | |||
Na primary uzlu spusťte: | |||
odpojení od (staré) protistrany: | |||
drbdadm disconnect nejaky_resource | |||
Reload configurace drbd za provozu: | |||
drbdadm adjust nejaky_resource | |||
Připojení protistrany: | |||
drbdadm connect nejaky_resource | |||
==Změna underlying device== | |||
Pokud na jednom uzlu změníte underlying blokové zařízení, ale ponecháte původní (externí) metadata, pak DRBD neudělá resync automaticky - musíte ho udělat ručně tak, že na secondary uzlu provedete | |||
drbdadm invalidate nejaky_resource | |||
nebo můžete vytvořit na změněném uzlu metadata znovu: | |||
drbdadm create-md nejaky resource | |||
=Změna obsahu underlying device bez vědomí DRBD= | |||
Pokud změníte obsah underlying blokového zařízení bez vědomí DRBD, | |||
pak DRBD neudělá resync automaticky - musíte ho udělat ručně tak, že na změněném uzlu, který máte samozřejmě secondary, provedete | |||
drbdadm invalidate nejaky_resource | |||
=Problém "Secondary/Secondary" po rebootu nebo restartu drbd= | =Problém "Secondary/Secondary" po rebootu nebo restartu drbd= | ||
Defaultní konfigurace počítá s tím, že o nastavení "Primary" strany se postará HeartBeat. | Defaultní konfigurace počítá s tím, že o nastavení "Primary" strany se postará HeartBeat. | ||
Pokud HeartBeat nemáte, pak vyberte jedno ze zařízení, které po rebootu zkusí být primární, a na oba stroje přidejte do konfiguráku následující řádek: | Pokud HeartBeat nemáte, pak vyberte jedno ze zařízení, které po rebootu zkusí být primární, a na oba stroje přidejte do konfiguráku následující řádek: | ||
=Resize DRBD resource= | |||
Resize drbd resource' resize může být spuštěno poté, co jsou LV na obou nodech resizovaná: | |||
lvresize -L +2G /dev/vg00/example-disk | |||
Zmena velikosti musi byt provadena na primarni node(druhy node musi byt v rezimu secondary) | |||
drbdadm resize resource |
Aktuální verze z 6. 10. 2011, 06:48
Pro online replikaci dat používáme DRBD.
Vytvoření externího úložiště pro metadata
Při tvorbě DRBD zařízení budete nejčastěji chtít vytvořit jej nad LV, ve kterém už jsou nějaká data. DRBD ale potřebuje o každém svém zařízení udržovat metadata - např. bitovou mapu změn kvůli rychlejší synchronizaci. Metadata může uložit buď interně - přímo do LV, které chcete replikovat, nebo externě (do jiného LV). Interně se metadata ukládají na konec LV, tzn. pokud v něm máte nějaká data, musíte LV nejdříve zvětšit o patřičnou velikost. Externí úložiště je samozřejmě pohodlnější, a pokud bude i na jiném fyzickém disku, bude i rychlejší.
Vytvoříte jej např. takto:
lvcreate -L 256M -n drbd-meta-disk vg_main
Velikost 256MB stačí pro kapacitu 256MB * 32768 = 8 TB, viz návod Estimating meta data size, ale každý DRBD resource musí mít min. 128MB metadat - viz tento report.
Proto jako velikost metadat dejte 128MB * počet DRBD zařízení.
drbd.conf
Příklad:
resource vyuka-system { protocol C; startup { wfc-timeout 0; ## Infinite! degr-wfc-timeout 120; ## 2 minutes. become-primary-on xeric; } disk { on-io-error detach; } net { # allow-two-primaries; } syncer { } on xeric { device /dev/drbd0; disk /dev/vg_main/vyuka-system; address x.y.z.w:7789; meta-disk /dev/vg_main/drbd-meta-disk[0]; } on other-server { device /dev/drbd0; disk /dev/vg_main/vyuka-root; address x.y.z.v:7889; meta-disk /dev/vlam-server/drbd-meta-disk[0]; } }
Pozn.:
- od DRBD 8.3.2 (Debian Squeeze, Ubuntu 10.04..) lze prý místo drbd[0..9]+ psát drbd_{custom device name}. Zkoušel jsem to, ale nefunguje.
- od DRBD 8.4 (Debian Sid?) bude možné tvořit multi volume DRBD resource, tzn. všechny LV půjde synchronizovat přes jediné připojení.
Spuštění synchronizace
Rozchození je jednoduché - nejdřív vytvořte v /etc/drbd.conf popis vašich DRBD zařízení (DRBD target-ů) a pak spusťte tyto 3 příkazy:
Vytvoření DRBD zařízení:
root@xeric:#drbdadm create-md {DRBD_target_z_konfiguraku}
a to samé na druhém serveru:
root@other-server:#drbdadm create-md {DRBD_target_z_konfiguraku}
Podobně na obou serverech spustit:
Připojení storage k DRBD zařízení
drbdadm attach {DRBD_target_z_konfiguraku}
Připojení DRBD zařízení k protějšku na síti:
drbdadm connect {DRBD_target_z_konfiguraku}
Nebo předchozí 2 příkazy najednou:
drbdadm up {DRBD_target_z_konfiguraku}
Na prvním uzlu je potřeba nastavit příznak primary
drbdsetup /dev/drbd2 primary --do-what-I-say
Resp. v Debian Lenny
drbdsetup /dev/drbd2 primary -o
Změna v konfiguraci
Změna protějšího uzlu nebo jeho IP adresy
Na primary uzlu spusťte: odpojení od (staré) protistrany:
drbdadm disconnect nejaky_resource
Reload configurace drbd za provozu:
drbdadm adjust nejaky_resource
Připojení protistrany:
drbdadm connect nejaky_resource
Změna underlying device
Pokud na jednom uzlu změníte underlying blokové zařízení, ale ponecháte původní (externí) metadata, pak DRBD neudělá resync automaticky - musíte ho udělat ručně tak, že na secondary uzlu provedete
drbdadm invalidate nejaky_resource
nebo můžete vytvořit na změněném uzlu metadata znovu:
drbdadm create-md nejaky resource
Změna obsahu underlying device bez vědomí DRBD
Pokud změníte obsah underlying blokového zařízení bez vědomí DRBD, pak DRBD neudělá resync automaticky - musíte ho udělat ručně tak, že na změněném uzlu, který máte samozřejmě secondary, provedete
drbdadm invalidate nejaky_resource
Problém "Secondary/Secondary" po rebootu nebo restartu drbd
Defaultní konfigurace počítá s tím, že o nastavení "Primary" strany se postará HeartBeat. Pokud HeartBeat nemáte, pak vyberte jedno ze zařízení, které po rebootu zkusí být primární, a na oba stroje přidejte do konfiguráku následující řádek:
Resize DRBD resource
Resize drbd resource' resize může být spuštěno poté, co jsou LV na obou nodech resizovaná:
lvresize -L +2G /dev/vg00/example-disk
Zmena velikosti musi byt provadena na primarni node(druhy node musi byt v rezimu secondary)
drbdadm resize resource