NBD

Z DCEwiki
Verze z 26. 5. 2011, 15:39, kterou vytvořil Keny (diskuse | příspěvky) (Založena nová stránka: '''''N'''etwork '''B'''lock '''D'''evice'' je linuxová záležitost, založená na konceptu klient/server. Jádro po načtení modulu <code>nbd</code> vytvoří několik l…)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání

Network Block Device je linuxová záležitost, založená na konceptu klient/server. Jádro po načtení modulu nbd vytvoří několik lokálních blokových zařízení /dev/nbd0, /dev/nbd1, .... Na každé z nich pak lze připojit prostřednictvím klientské aplikace (nbd-client, xnbd-client, etc.) přes TCP protokol serverovou aplikací z jiného stroje nabízené jedno blokové zařízení. Tím může být jak skutečné fyzické blokové zařízení, tak soubor např. iso CD nebo image virtuálního stroje.

Server
který na vzdáleném stroji vyčkává a nabízí na vybraném rozhraní a portu blokové zařízení (nebo soubor), nevyžaduje žádný speciální ovladač, a teoreticky by mohl běžet na libovolné platformě podporující síťování přes TCP/IP protokol.
Klient
Klientská aplikace, která zajišťuje připojení vzdáleného stroje k lokálnímu blokovému zařízení je závislá na linuxovém jádře a vyžaduje zavedený modul nbd.

NBD začal programovat Pavel Machek v dubnu 1997. Jeho vývoj stále probíhá a postupně jsou do něj implementovány vlastnosti různých samostatných odnoží tohoto konceptu. Některé z nich již díky tomu postupem času již odešly ze scény (např. ENBD, které vyžadovalo jaderný modul, který není součástí vanilla jádra), nebo jsou svou úzkou specializací omezeny (GNBD od Red Hatu je optimalizované pro použití s GFS2)

Prozatím poslední rozšířenou implementací NBD je xNBD, které původní koncept rozšířilo tak, aby na straně serveru umožňoval živou migraci blokových zařízení virtuálních strojů mezi fyzickými stroji a zároveň zlepšil výkon klientské aplikace při paralelním přístupu většího počtu klientů.


Jak NBD funguje?

Opravdu vyčerpávající popis NBD naleznete na webu http://www.linuxjournal.com/article/3778

xNBD

https://bitbucket.org/hirofuchi/xnbd/wiki/Home

Poslední implementací, která rozšiřuje možnosti NBD je xNBD. Jeho klient využívá standardní jaderný modul nbd, ale původní koncept serveru byl rozšířen tak, aby umožnil živou migraci blokových zařízení virtuálních strojů a zároveň zlepšil výkon při paralelním přístupu většího počtu klientů.

  • Mělo by dosahovat lepšího výkonu při IO operacích protože využívá přímý přístup do paměti přes mmap()
  • Umožňuje konkureční přístup z více klientů současně
  • Podporuje koncept Copy-on-Write
  • Má základní podporu pro snapshotování
  • Umožňuje live migraci datového prostoru
  • Podporuje IPv6


Klient

Syntaxe xNBD klienta se od "obyčejného" NBD poněkud liší. Podporuje sice i syntaxi původního klienta, ale jeho vlastní syntaxe umožňuje předat k připojení několik vzdálených strojů současně. Klient se pokusí připojit první z nich, ale pokud je z nějakého důvodu nedostupný a připojení se do určité doby nepodaří, vyzkouší automaticky další stroj v pořadí.

Původní klient umožňuje předat pouze jedno připojení.

xNBD klient od verze 0.1.0-pre umožňuje také použít pro připojení local-linkovou IPv6 adresu (kterou lze zjistit dotazem přes multicast na příslušném rozhraní)

Parametry

--blocksize (výchozí 1024) min. 512 max. 4096

--timeout
Časový interval po kterém má klient zabalit pokusy o připojení a přejít k dalšímu stroji v seznamu.
--retry
umožňuje nastavit kolikrát se má klient o připojení pokusit, než přejde k dalšímu kontaktu
--recovery-command
umožňuje předat k vykonání nějaký příkaz v případě že došlo k neočekávanému ukončení spojení
--recovery-command-reboot
je drsnější variantou předchozího parametru, která v případě selhání spojení klientský stroj zrestartuje.

(Při testu ovšem došlo ke zpanikaření)

--exportname
V případě že

WatchDog

xnbd-watchdog hlídá zda je připojení v pořádku

server

xnbd-bgctl

Je-li server spuštěn v režimu proxy.

proxy