Portál AbcLinuxu, 7. května 2025 08:57

Použití NBD - Network Block Devices při virtualizaci

19.1.2012 12:35 | Přečteno: 1563× | Za vším hledej Linux | Výběrový blog | poslední úprava: 19.1.2012 12:50

Chcete-li používat bloková zařízení po síti, máte několik možností. Můžete použít buď NBD nebo iSCSI. O NBD se tady zatím nikdo moc nerozmazával a tak by se někomu mohlo subjektivně zdát, že je iSCSI lepší. Záleží však na úhlu pohledu a podmínkách použití. iSCSI má tu výhodu, že již existuje v jádře podpora i pro target (server), a vypublikované zařízení lze použít i pro MS Windows. Na druhou stranu, podle toho co jsem vyšťáral na netu by mělo mít NBD menší režii a snad i o chlup lepší výkon. Každopádně však NBD není mrkev.

Více se o NBD rozmazávám v naší wiki. Nechci se opakovat, tudíž bych zde pouze upozornil na několik zajímavých vlastností, které má soubor utilit xNBD.

Použití NBD zařízení u linuxového SW RAID zařízení

Zkoušel jsem u QEMU různé způsoby zprostředkování blokových zařízení virtuálním strojům skrz síť (viz kupř. můj starší zápis na téma sheepdog ), a nakonec se ukázalo jako nejefektivnější použití NBD. Bohužel však mělo jednu vadu. Možná jde pouze o mou neznalost, ale když virtuálnímu stroji "upadlo" blokové zařízení, tak ho nebyl schopen připojit znovu. Domnívám se, že tohle by mohlo uspokojivě řešit právě iSCSI, jenže v době kdy jsem to zkoušel jsem neměl podporu pro iSCSI target v jádře zakompilovanou.

Po konzultaci s Pavlem Píšou mě napadlo zkusit využít SW RAID, sestavený ze dvou NBD zařízení. V případě výpadku jednoho z nich se uvnitř virtuálu problém neprojeví a zařízení lze pak znovu do raidu přidat, aniž by bylo nutné virtuální stroj vypnout. Výsledek se choval uspokojivě. A tak, jelikož virtuály provozuji v clustrovém prostředí, jsem použil SW RAID6, sestavený ze čtyř NBD zařízení, přičemž páté funguje jako SPARE.

Díky tomu mohu postupně aktualizovat všechny virtuální stroje v clusteru, aniž by bylo nezbytně nutné odstavit spuštěné virtuály.

Pro lepší názornost přidávám i odkazy na dva schématické obrázky - jsou použité v neveřejné části naší wiki, tudíž byste se k nim zatím asi neproklikali. Na prvním schematu je normální stav a na druhém stav při výpadku dvou nodů. Pochopitelně, že když upadne nod na kterém virtuál zrovna běží, tak lehne. Nicméně lze obratem tentýž raid sestavit a stroj znovu spustit na přeživších nodech.

Proč xNBD a ne NBD?

Výše uvedené řešení funguje výborně, ale má přeci jenom jeden háček. Jak ošetřit situaci kdy NBD zařízení upadne? Raid totiž zjistí, že je ve stavu FAIL až ve chvíli, kdy se na ně pokusí něco zapsat. A v tomto okamžiku se velice hodí parametr --recovery-command, kterým disponuje xnbd-client. Ten totiž umožňuje v případě kdy upadne NBD server spustit skript, který provede příslušnou sanaci zařízení v raidu, a případně spustí akci, která zajistí jeho přidání v okamžiku, kdy je server znovu připojen.

No jo, ale co si počít, když je NBD zařízení připojeno přes jiného klienta, který tuto volbu nemá, případně v situaci, kdy v době připojení zařízení nebylo ještě známo co se má v případě jeho odpojení řešit? I pro takový případ nabízí xNBD pomocnou ruku - jeho součástí totiž není jenom NBD server a klient, ale také další nástroje. Mezi jinými utilita xnbd-watchdog, která je-li spuštěna může udělat stejnou službu.

xNBD server v režimu proxy

xNBD server nabízí ještě jednu pěknou vlastnost. Lze jej pustit v režimu proxy, čehož lze využít k bezbolestnému přestěhování, či zkopírování virtuálních strojů za běhu i po relativně pomalé síti, aniž by to vyžadovalo delší odstávku virtuálního stroje.

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

19.1.2012 13:32 D-Evil | skóre: 25 | Praha
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Odpovědět | Sbalit | Link | Blokovat | Admin
Nápad hezkej, ale bohužel jen pro jednoho hostitele virtuálních strojů :(
19.1.2012 13:44 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Proč myslíš? Těch hostitelů může být klidně i víc. Já tedy osobně používám tři.
19.1.2012 13:47 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Pochopitelně je ale třeba mít vytvořen odpovídající počet nbd zařízení. Já jich mám momentálně nastaveno 32, obvykle jich je jen 16.
19.1.2012 13:55 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Právě že díky použití NBD nejsem vázaný na jednoho hostitele, ale mohu virtuál spustit na libovolném nodu. Ovšem to je pochopitelně krajní případ. V reálu spouštím produkční stroje pouze na dvou nodech, protože ty virtuály využívají společnou datovou oblast sdílenou přes DRBD. Na tom třetím si můžu spouštět ty, které s tím sdíleným datovým prostorem nepracují. Zbývající dva nody jsou postarší IBM stroje. Bohužel upgrade paměti by se u nich nevyplatil a jejich řadič taky stojí víceméně za houby, protože neumí hotplug. Ovšem jako záložní stroje pro ty raidy jsou ideální.
19.1.2012 19:18 D-Evil | skóre: 25 | Praha
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Myslel jsem to tak, že to jednotlivý zařízení (v tomhle případě RAID svazek) neni dostupný z více hostitelů naráz. Pokud to chápu správně, každej hostitel si obhospodařuje svůj vlastní RAID svazek. Nebo mi něco uniká?
19.1.2012 19:19 D-Evil | skóre: 25 | Praha
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Oprava: více hostitelům naráz
19.1.2012 20:04 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Jo takhle..

No tak to by v podstatě šlo, akorát že v mém případě by to dávalo smysl pouze když bych chtěl ten virtuál kamsi kopírovat.

Pokud bych chtěl ten virtuál spouštět ve více instancích, tak bych použil nad tím sestaveným md zařízením xNBD server v režimu cow-target, případně proxy - podle toho jestli bych změny chtěl udržovat nebo ne a do virtuálu bych ho připojil rovnou jako nbd zařízení, tak jak jsem to dělal předtím. Jelikož by datové přenosy běžely lokálně, tak by výpadek z důvodu přerušení síťového spojení nehrozil.
19.1.2012 14:21 Ondrej Zajicek
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Odpovědět | Sbalit | Link | Blokovat | Admin
A co AoE (ATA over Ethernet), mate s nim nekdo nejake zkusenosti? To je obcas vydavano za sane alternativu k iSCSI.
19.1.2012 19:28 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Mám s ním zkušenosti - několik let bezproblémového provozu. Jen je třeba počítat s využitím pouze v interní bezpečné síti, protože se AoE nedá routovat (=> je vhodná i vyhrazená síť jen pro AoE, ale může sdílet i stávající infrastrukturu, akorát to není moc bezpečné). Chce to také síť s podporou jumbo paketů aby to bylo rozumě rychlé (při standardním mtu 1500 to dělalo jen něco kolem 10MiB/s). Na straně serveru jsem používal vblade, dá se bez problémů nacpat i do HA clusteru (heartbeat/pacemaker).
-- Nezdar není hanbou, hanbou je strach z pokusu.
19.1.2012 20:07 kyytaM | skóre: 35 | blog: kyytaM | Bratislava
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
fy Coraid sa myslim na AoE specializuje. Ale nemam s tym osobne skusenosti, ale niektori ludia si to pochvaluju. Problem je myslim aj s implementaciu v linuxe, kde je viac moznosti (jedna nejaka defaultna ktora byvala ukrutne pomala a potom nejaka ovela vykonejsia - musel by som zalovit niekde v Xen mailing listoch). Kazdopadne tam bolo viacero ludi spokojnych aj ked je tam problem s bezpecnostou dat pri stratach v sieti, na co ini upozornovali.
19.1.2012 20:15 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Chce to také síť s podporou jumbo paketů aby to bylo rozumě rychlé (při standardním mtu 1500 to dělalo jen něco kolem 10MiB/s).
Tak mi to při ukládání přes NBD na disk bez raid6 dělalo něco kolem 18MiB/s a teď to dělá zhruba 28MiB/s, alespoň podle toho co při kopírování hlásí mc. Při čtení je rychlejší to dělá 42MiB/s.
19.1.2012 20:42 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
S AoE jsem narážel na limit gigabitu a to jak při čtení tak i při zápisu, takže s výkonem AoE problémy nebyly :-)
-- Nezdar není hanbou, hanbou je strach z pokusu.
19.1.2012 21:48 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Hm. Skleróza je mocná čarodějka - rychlosti které jsem naměřil u nbd v single režimu jsou uvedeny v rámci odkazovaného blogpostu o sheepdogu.
19.1.2012 23:57 kyytaM | skóre: 35 | blog: kyytaM | Bratislava
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Neskusal niekto porovnat vblade a ggaoed? :)
19.1.2012 21:15 loki
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Odpovědět | Sbalit | Link | Blokovat | Admin
Nebylo by prosim nejake srovnani rychlosti tohoto reseni a iSCSI? Toto je pro mne uplne nove a vypada to imho zajimave.
19.1.2012 21:44 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Zatím nebylo. Protože ono to testování rychlostí je v takovém prostředí dost ošidné.

Průměrné hodnoty které mi vykazuje mc jsem zmínil výše. Také doporučuji okouknout můj blogpost o sheepdogu,tehdy jsem rovněž dělal menší testíky.
19.1.2012 21:55 loki
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Proctu a okouknu. Dekuji.
20.1.2012 12:45 cita
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Odpovědět | Sbalit | Link | Blokovat | Admin
Jaky ma smysl resit RAID nekde jinde nez v SAN/NAS? nebrete to jako provokaci, zajima me proc resit sw raid na hypervizorech a ne o vrstvu niz/driv.
frEon avatar 21.1.2012 14:35 frEon | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
taky bych daval raid uz na ulozisti uz jenom pro to, abych zapisovana data neposilal po siti 2x (raid 1)
Talking about music is like dancing to architecture.
22.1.2012 14:48 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Když ti odejde úložiště, nebo konektivita k úložišti, jsi v háji. Ten cluster sám je defakto úložiště poskládané z relativně levných komponent. Jeho výhoda je v tom, že jej lze jako celek průběžně a s minimálními náklady upgradovat.
frEon avatar 26.1.2012 17:10 frEon | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
jo, takhle to ma vlastne smysl ;-)
Talking about music is like dancing to architecture.
24.1.2012 00:13 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Odpovědět | Sbalit | Link | Blokovat | Admin
Domnívám se, že tohle by mohlo uspokojivě řešit právě iSCSI, jenže v době kdy jsem to zkoušel jsem neměl podporu pro iSCSI target v jádře zakompilovanou.
Jedné testovací instanci RHEVu jsem jednou omylem vypl tgtd. Prvním příznakem byly pauznuté VM, po pohledu na storage jsem si uvědomil, odkud vítr vane. Po znovunahození tgtd se všechno znovu rozjelo... Takže přesně toto iSCSI řeší.

BTW když zmiňuju RHEV, blíží se vydání oVirtu 1.0.
oVirt | SPICE
24.1.2012 00:57 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Takže přesně toto iSCSI řeší.
No. Je otázkou, jestli to řeší iSCSI, nebo infrastruktura RHEVu.

Je-li totiž virtuál zapauzován dříve, než jeho kernel zaregistruje chyby na blokovém zařízení, je to v pohodě - to jsem zkoušel.

Jenže pokud zapauzován není, tak se objeví chyby při práci s blokovým zařízením a je konec. On sice dál jede, ale fakticky je kaput a žádný reconnect už nepomůže.

Navíc já nepotřebuji aby se stroje zapauzovaly, ale aby jely při odstavení libovolného stroje a to mi právě zajišťuje ten raid.

24.1.2012 01:14 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Původně jsem uvažoval, že by mi iSCSI mohlo ušetřit minimálně jednu operaci, jenže když se blokové zařízení jednou dostane do stavu failed, tak se stejně musí vyhodit z raidu a znovu přidat. Takže jsem se rozhodnul to nakonec pořešit agentem pro pacemaker. Ale zatím je to ve fázi: chystám se na to..
24.1.2012 23:23 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Teď jsem si znovu přečetl #20 a spíš mě napadá - proč nepoužívat už hotové clusterovací/distribuované úložiště?
25.1.2012 01:12 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Použití NBD - Network Block Devices při virtualizaci
Nedá mi to, a musím se otázat co si vlastně pod pojmem "hotové clusterovací/distribuované úložiště" představujete. A také by mě zajímalo, jakou máte představu o objemu našich finančních prostředků pro nákup hardware.

Pokud jde o zvolené technologie, vždy je třeba kloubit více hledisek. I když se to možná tak nezdá, řešení které používám je jednoduché a spolehlivé - i když cesta k němu jednoduchá nebyla. Ojetý hardware z druhé ruky sebou vždy nese pravděpodobnost záludné chyby, která se těžko hledá a hledat chybu tam kde problematice nerozumím je tak snadné.

Náš cluster vznikl evolucí. Nejdřív byl jeden virtualizační stroj, pak druhý jako záložní a třetí se koupil protože vybyly nějaké prachy. Kromě toho, že se v jeho prostředí virtualizuje několik linuxových strojů, které poskytují nejrůznější služby, tak ho využívám zároveň i jako kompilační farmu pro kernel - přeci jenom je rozdíl mezi 5 minutami v clusteru a hodinou na notebooku.

Ale ať jen tak neplácám, tak popíšu jeden z virtuálů. Stroj support má systémový disk složený z toho nbd raidu. Patří k těm větším - jako jediný virtuál na něm má i databáze. Jiné stroje, jako např. aa4cc používají externí databázový stroj. Virtualizace jede přes KVM a QEMU. Kromě lokálně uložených starších webů u kterých už k žádnému nárůstu dat nedojde, publikuje na web osobní adresáře z novellu, jako jsou např. roboti. Všechny adresáře, které průběžně bobtnají jsou ve skutečnosti součástí jednoho, do virtuálu namountovaného přes p9, adresáře ze sdíleného úložiště. Celý tento stroj podle potřeby mění hostitele, aniž by bylo nutno cokoliv kopírovat.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.