NBD

Z DCEwiki
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

jak už bylo zmíněno, jde o implementaci, která rozšiřuje možnosti původního NBD. 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í přes WAN.

  • Jak klientská, tak serverová aplikace by měly mít lepší výkon při IO operacích než původní NBD, protože využívají přímý přístup do paměti přes mmap()
  • xNBD umožňuje konkureční přístup k jednomu serveru současně z více klientů
  • Podporuje koncept Copy-on-Write
  • Má základní podporu pro snapshotování
  • Umožňuje live migraci datového prostoru
  • Podporuje IPv6
Poznámka Některé z vlastností zmíněných v těchto bodech již byly do NBD implementovány

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