Loading...
 
[Zobrazit/Skrýt nabídky vlevo]
[Zobrazit/Skrýt nabídky vpravo]

Stacked drbd in p-p environment

Konfigurace stacked drbd v prostredi beziciho drbd s daty.

Uvod

Pro zacatek je potreba osvetlit nektere detaily drbd. DRBD pouziva metadata, kde je mmj. uschovano jakesi UID svazku a dale je tam uschovana bitmapa, kde jsou vyznaceny out of sync data. Tyto metadata jsou, a to je dulezite, vzdy na konci disku/svazku. Diky tomu ze udrzuji bitmapu OOS dat (nikoliv bitmapu synced dat), prepsanim metadat se data na disku nesmazou.

Pokud mame stavajici bezici primary-primary drbd, pravdepodobne je plne obsazene nejakou volume grupou na 100% kapacity drbd. Zde budeme predpokladat, ze VG ma nejake volne misto a ze LVMka nezasahuji az na konec VG. Potreba je zhruba 32MiB metadat pro 1TB kapacity drbd, pro jistotu budeme pocitat s 50MB na 1TB dat. Cili my potrebne misto (dle kapacity drbd) musime odzadu uvolnit. Po uvolneni mista (bude-li potreba misto uvolnit) shrinkneme PV o vyse vypocitanou velikost potrebnou pro metadata.

Po zmenseni PV nasleduje shozeni drbd v synchronnim stavu a rekonfigurace drbd na reseni umoznujici nase zalohy. Stacked drbd nemuze byt nad dvojici primary-primary drbd zarizeni, proto je potreba schema otocit. Na jednom poli (dale AR03) bude stacked drbd, na druhem (dale AR04) bude bezne drbd.

Schema bude takoveto: Stavajici drbd prekonfigurujeme na zalohovaci drbd, ktere bude syncovat na backup protokolem A a nad timto drbd bude teprve primary-primary drbd (cili stacked), ktere bude poskytovat data lokalne.

Postup migrace:

1) Rozpojime drbd mezi AR03 a AR04. AR04 nechame nyni celou dobu lezet jak je, jak pripadnou zalohu pri problemu.
2) Overime ze mame dost mista na konci VG a zmensime PV:

[root@array03.sit.cldn.eu ~]# pvdisplay
   --- Physical volume ---
  PV Name               /dev/drbd1
  VG Name               R10_HD10k_0
  PV Size               1.82 TiB / not usable 1.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              476796
  Free PE               451196
  Allocated PE          25600
  PV UUID               ieyb2f-Ggdh-IxtP-ZBEg-tcJU-FMRp-EUqPNL

[root@array03.sit.cldn.eu ~]# pvdisplay --maps
   --- Physical volume ---
  PV Name               /dev/drbd1
  VG Name               R10_HD10k_0
  PV Size               1.82 TiB / not usable 1.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              476796
  Free PE               451196
  Allocated PE          25600
  PV UUID               ieyb2f-Ggdh-IxtP-ZBEg-tcJU-FMRp-EUqPNL
   
  --- Physical Segments ---
  Physical extent 0 to 25599:
    Logical volume      /dev/R10_HD10k_0/testfs
    Logical extents     0 to 25599
  Physical extent 25600 to 476795:
    FREE


Podle vypisu pvdisplay vidime, kolik extentu ma PV a podle vypisu --maps vidime, kde jsou volne extenty. Protoze LVMka se alokuji defaultne linearne, pravdepodobne na konci vzdy misto bude, pokud neni cela VG spotrebovana. Pokud cela VG bude spotrebovana, pak musi nasledovat presunuti nekterych dat pryc, pokud nebude misto na konci, ale uprostred, pomoci pvmove se daji extenty presunout na vhodne misto. To neni soucasti tohoto manualu.

My tedy volne misto na konci mame a to dostatek (2TB drbd => ~100MB metadat)

Potrebujeme zjistit, na kolik zmensit PV. Zjistime aktualni velikost:

[root@array03.sit.cldn.eu ~]# pvdisplay --units=m
  --- Physical volume ---
  PV Name               /dev/drbd1
  VG Name               R10_HD10k_0
  PV Size               1907185.00 MiB / not usable 1.00 MiB


A nastavime velikost PV na aktualni minus potrebnou, takze 1907185.00 MiB - 100MiB:

pvresize --setphysicalvolumesize=1907085m /dev/drbd1


Tim mame na konci drbd1 (zatim nezmeneneho) uvolneno 100MiB. Pokracujeme dale shozenim drbd a prekonfigurovanim resourcu. Dle nejake existujici konfigurace nakonfigurujeme resource sitel113 (pojmenovani v tomto aktualnim pripade). To je "obycejny" resource. Dale nastavime resource "r1" (prip. jiny nazev dle aktualniho stavu), ktery bude stacked-on-top-of "sitel113". Druha strana drbd sitel113 bude obycejne drbd, taktez druha strana r1 bude obycejna.

Cili resource sitel113 bude na AR03 ukazovat na fyzicky disk, kdezto resource r1 bude ukazovat na resource sitel113. Zkopirujeme konfiguraci na druhou stranu (vsechny soubory) a jdeme nahazovat drbd.

3) modprobe drbd
4) vypneme cluster locking (cluster_locking=0) a nastavime filtr v /etc/lvm/lvm.conf na filter=[ "a/.*/" ]. DRBD musi videt vsechna PV, aby se mohlo rozhodnout, jestli je na disku dost volneho mista.
5) drbdadm create-md sitel113 -> tim vytvorime nove drbd uid, ale data zustanou.
6) drbdadm up sitel113 -> nahodime resource
7) drbdadm primary --force sitel113 -> udelame z nej primary, ackoliv neni jeste pripojen ke sve druhe strane
8) drbdadm create-md --stacked r1 -> vytvorime metadata na stacked zarizeni (takze fyzicky budou metadata na disku 2x, drbd se nastavenim stacked postara o jejich spravu)
9) drbdadm up --stacked r1 -> nahodime stacked drbd resource
10) drbdadm primary stacked force r1 -> udelame z nej primary - ted mame bezici stacked drbd s nasimy daty
11) zapneme cluster locking a puvodni filtr v /etc/lvm/lvm.conf
12) upravime /etc/lvm.conf, tak, aby ignoroval sitel113, ale pracoval pouze se stacked drbd, jinak si zadelavame na problemy, budeme zapisovat na disk, ale nebude se to prenaset na druhy nod clusteru. Filtr by mel vypadat zhruba takto:

filter = ["r/dev/drbd11.*/" ,  "a|/dev/drbd[0-9]*$|" , "r/.*/" ]

13) overime spravnost filtru spustenim vgscan -vvv, kde by melo byt neco jako:

/dev/drbd113: Skipping (regex)

a naopak by tam melo byt:

lvmcache: /dev/drbd1: now in VG R10_HD10k_0 with 1 mdas


Nyni mame primary resource s funkcnim LVM nad nim. Udelame idealne nejakou zapisovou operaci nad timto drbd (mount fs, cokoliv), aby bylo jasne, ze metadata jsou aktualni tyto. To ostatne resi i primary stav.

Nyni nahodime druhou stranu clusteru:

14) opet vypneme cluster locking a odstranime nastaveni filtru v /etc/lvm/lvm.conf
15) modprobe drbd
16) drbdadm create-md r1
17) drbdadm up r1
18) uvedeme soubor lvm.conf do puvodniho stavu

Tim by mel zapocit sync resourcu R1.

Pro jistotu zkontrolujeme velikosti drbd1 resourcu, zda-li jsou stejne:

[root@array03.sit.cldn.eu lvm]# blockdev --getsz /dev/drbd1
3906001944
[root@array04.sit.cldn.eu ~]# blockdev --getsz /dev/drbd1
3906001944


Drbd na Ar04 se prizpusobi velikosti drbd na Ar03 (ktera je mensi o metadata). Cili nyni mame na AR04 na konci fyzickeho disku pod drbd trochu volneho mista, ktere jsme na AR03 vyuzili na druha metadata.


Created by darek. Last Modification: Pondělí 02 of listopad, 2015 10:41:15 CET by dfabian.