( Zs | 2014. 05. 08., cs – 10:25 )

Magas rendelkezésre állás shared storage nélkül meglehetőst érdekes elképzelés. Hogyan is venné át a kieső node szolgáltatását a működő node, ha a kieső node-on futó guest adatai nem shared storage-n vannak meg? A már emlegetett drbd erre alkalmas eszköz lehet, pláne hogy tud master-master módban is gurulni - viszont a vmware saját kernelt használ. Nem mondom, hogy lehetetlen hackelni hozzá drbd modult, de annyira azért nem is lesz egyszerű.
Ami működő megoldást én erre láttam, az egy két gépes ProxMox cluster volt: egy viszonylag kis saját kötet, majd drbd-n a "nagy" lvm. Itt ha egy guest létre jött, akkor az akár live migration módon is gyorsan áttehető volt a két gép között, mert csak a konfig + memória adatoknak kellett átkerülnie egyik node-ról a másikra és máris futott tovább a guest, szinte csuklás nélkül.
Ahol ez a felállás macera tud lenni, az az, amikor emergency poweroff van mindkét node-on. Ilyenkor a drbd-n lévő adatok egyik fele az egyik node-on érvényes, a másik fele meg a másikon, mert ugye amelyik guest az egyik node-on fut, ott az az érvényes adat, ami esetleg nem ért át a másik node-ra, viszont a másik node-on futó guest adata a másik node-on érvényes és esetleg nem ért át az egyik node-ra. Ilyenkor van szívás, mert mindkét helyen fel kell hozni standalone-ban a drbd-t, majd ahol kevesebb a mentendő adat, ott lementeni az érvényesnek tekintett adatokat. Ezek után jöhet az összeszinkronizálás úgy, hogy ahonnan mentettünk, az a kiesett node, oda kell mindent visszahozni a másikról - majd ha ez megvan, akkor a mentett területet vissza kell állítani, hogy mégis az itt érvényes jusson vissza még a másik gépre is. Ez ellen úgy lehet védekezni, hogy nem egy, hanem két drbd kötet készül: az egyiken az egyik node guest-jei vannak, a másikon a másik node guestjei. Ilyen esetben nem kell mentegetni, mert az elso drbd kötetet úgy kell szinkronba hozni, hogy a node1 az érvényes és a node2 a kiesett tag, a második kötetet meg pont fordítva: a node2 az érvényes, a node1-et kell szinkronizálni. Persze ennek is ára van: az egy közös nagy tárterület szétesik két kisebbre, így ha kell egy nagyobb terület, akkor azt esetleg egy helyről nem tudjuk kiszakítani, ha viszont két helyről kell merítenünk, akkor pont az előbb leírt előnyt veszítettük el, illetve a másik fele, hogy ha később a terhelés elosztás alapján az jön ki, hogy pl. a guest3-at mégis inkább a node1-re kéne tenni, akkor megint probléma lesz abból, hogy a drbd2-n lévő lvm2-n van az adata. Szóval azért ez sem tökéletes megoldás...