Hlavní navigace

ATA over Ethernet: sdílení disků po síti

20. 3. 2009
Doba čtení: 6 minut

Sdílet

Když vytváříme bezdiskové stanice nebo z nějakého disku potřebujeme jen nasdílet data do lokální sítě, neměli bychom přehlédnout jeden z nejjednodušších a nejrychlejších způsobů, který nám na síti zpřístupní disk tak, jako bychom ho měli na lokálním stroji. Řeč je o jednoduchém protokolu ATA over Ethernet.

Sdílení dat po síti

Jak jsem v úvodu naznačil, ATA over Ethernet (AoE) je technologie pro zpřístupnění disku přes síť. Tohle ovšem není jediná možnost, jak disky sdílet. Existují i další, méně či více pohodlné a také méně či více rychlé. Z toho, co máme na výběr, se nabízí:

  • NFS
  • Samba
  • FTP
  • Webdav
  • … další

Díky FUSE můžeme prakticky se vším pracovat jako s normálním adresářem na disku.

Každá ze zmíněných čtyř technologií se hodí na něco jiného. NFS je velmi rychlé a dokáže fungovat i na rozlehlých sítích. Podporuje autentizaci a dobře spolupracuje s Kerberos. To ho dělá velmi použitelné i při přenosu dat přes nezabezpečené kanály (např. Internet).

Samba je multifunkční protokol. Moje zkušenosti jsou s ní všelijaké, ale věřím, že v mnoha sítích funguje dobře. Je o něco pomalejší, ale má mnohem více funkcí. Jedná se spíš o kompletní řešení jak po domácnosti, tak pro firmy. NFS je proti ní jednoúčelový nástroj.

FTP je asi nejčastější použití při kopírování dat na nějaký vzdálený server. Je to jednoduchý protokol, který je i přes své stáří hojně používán. Někdy se můžeme setkat i s označením FTPS. Jedná se o normální FTP rozšířený o zabezpečovací funkce. Další protokol s podobnými vlastnostmi se nazývá SFTP, jehož implementaci najdeme třeba v OpenSSH.

Webdav je rozšíření HTTP protokolu o další funkce umožňující obousměrný přenos dat. Setkáme se s ním například v kombinaci s přístupem k některým repozitářům (GIT/SVN/…) různých projektů. Svoje místo si také najde.

Ještě zmíním jeden protokol, který by se nám mohl hodit právě ve spojení s AoE. Jde o TFTP. Po rozepsání akronymu dostaneme Trivial File Transfer Protocol. Název přesně vystihuje podstatu protokolu. Jedná se o velmi jednoduchou možnost získání souboru ze sítě. V kombinaci s AoE se nám hodí, protože většina dnešních BIOSů je přes něj schopna za asistence DHCP daemona dostat jádro s několika málo informacemi. Jádro si pak najde nasdílený AoE disk a z něj může začít bootovat. Jedná se o téma na samostatný článek, takže dnes si rozebereme AoE.

ATA over Ethernet

Na rozdíl od zmíněných protokolů AoE funguje na mnohem nižší vrstvě. Z toho plynou jistá omezení, která mohou být chápána i jako bezpečnostní řešení. Hlavička AoE paketů se nalepuje hned za hlavičku ethernetového rámce. Co to znamená? V rámci lokálního segmentu sítě, můžete si představit tři počítače propojené přes switch, budou nasdílené disky k dipozici. Pokud ale do topologie zahrneme router, stroje připojené za ním již přístup mít nebudou.

V praxi se pak setkáme třeba s řešením, kdy existují dva stroje, kde každý má dvě síťové karty. Pomocí jedné karty v každém stroji je navzájem propojíme a další síťové karty využijeme pro přístup třeba do Internetu. Na každém stroji je jeden disk rozdělený na poloviny. Jedna půlka patří tomu stroji, na kterém se disk nachází, a druhá půlka se využije na stroji druhém. Stroje mají k druhým půlkám přístup přes AoE a třeba přes softwarový raid jsou schopné zrcadlit obsah. Pokud se stane, že v jednom stroji vyhoří třeba zdroj, data jsou pravděpodobně v bezpečí na stroji dalším.

AoE totiž disk sdílí tak, jak ho vidí i systém, na kterém se disk fyzicky nachází, tedy jako blokové zařízení. Proto není problém na něm vytvořit RAID nebo LVM a využívat ho na vzdáleném stroji. To se hodí, pokud máte na svém desktopu nebo notebooku s LVM málo místa a jeden z oddílů potřebujete zvětšit. Disk je plný a na stroji o pokoj vedle je místa spousta. Nahodíte si AoE a během pár vteřin se můžete pustit do rozšiřování LVM oddílu.

Pokud jde o zabezpečení, tak kromě toho, že za router se disk nedostane, žádné neexistuje. Data proudí nešifrovaně a neexistuje ani způsob autentizace. Tam, kde je to opravdu důležité, tam se použijí oddělené síťové karty. V domácím prostředí to tolik nevadí.

Protokol obsahuje i cestu, jak mezi sebou mohou stroje komunikovat. Tím se zabrání nebezpečnému přístupu více strojů k jednomu disku. Některé souborové systémy jako GFS nebo OCFS2 jsou navržené tak, aby k nim mohlo přistupovat více systémů najednou, ale běžné souborové systémy, jako jsou Ext3, Reiserfs a další, tuto schopnost nemají. Stroje se mohou dohodnout na přístupu k disku podle možností.

AoE jako takový je velmi jednoduchý protokol, který je popsán na dvanácti stránkách dokumentace. I přes svoji jednoduchost otevírá administrátorovi velké možnosti při návrhu nějakého systému.

Kromě Linuxu podporují AoE i jiné systémy, ale mimo OpenBSD na to potřebuje většina z nich nějakou utilitku třetí strany. Nativní podporu najdeme tedy v Linuxu a OpenBSD. Za to např. Windows, Mac OS X, Solaris potřebují zmíněnou utilitku.

Jak na to

Nahodit AoE na Linuxu je jednoduší než třeba FTP server. Pro serverovou část, které se říká AoE target, budeme potřebovat program vblade. Najdeme ho ve stejnojmenném balíčku. Pomocí něj zpřístupníme náš disk následujícím způsobem.

misha ~ # vblade 0 0 br0 /dev/mishadisk/test 

V příkladu vidíme čtyři parametry. AoE rozlišuje zpřístupněné disky pomocí tzv. shaftů a slotů, které jsou zastoupeny prvními dvěma parametry. Shaft znamená v překladu něco jako šachta. Ve výsledku je jedno jakou kombinaci čísel si zvolíme. Najdeme ji pak na cílovém stroji jako /dev/etherd/e[SHAF­T].[SLOT]. Třetím parametrem říkáme jádru, kde má naslouchat ostatním a poslední je cesta ke zpřístupněnému blokovému zařízení. Tímto končí ta složitější část.

Přejdeme ke konfiguraci klienta. Jemu se říká AoE initiator a jeho nástroje najdeme v balíčku aoetools. Podpora AoE bude v jádrech většiny distribucí, pravděpodobně jako modul aoe. Po jeho zavedení se nám v adresáři /dev/etherd objeví disky, které jsou přístupné na síti.

delorean ~ # ls /dev/etherd/
discover  err  e0.0  flush  interfaces  revalidatea 

V tomto případě e0.0. Pokud tomu tak není, zavoláme:

delorean ~ # aoe-discover 

Když je disk k dispozici, můžeme si ho rozdělit jako kdyby byl lokální pomocí fdisku nebo podobným nástrojem.

delorean ~ # fdisk /dev/etherd/e0.0 

Já ho rozdělil na dvě oblasti a ty se mi objeví jako e0.0p1 a e0.0p2.

delorean ~ # ls /dev/etherd/
discover  err  e0.0  e0.0p1  e0.0p2  flush  interfaces  revalidate 

Na jedné z nich pak vytvoříme souborový systém.

delorean ~ # mkfs.reiserfs /dev/etherd/e0.0p1 

Připojíme ho.

delorean ~ # mount /dev/etherd/e0.0p1 /mnt/p1/ 

Zkusíme si na něm vytvořit soubor.

delorean ~ # touch /mnt/p1/soubor 

Na který se záhy podíváme.

delorean ~ # ls /mnt/p1
soubor 

Kolik máme na disku místa zjistíme třeba utilitkou df.

delorean ~ # df -h
Souborový systém  Velikost Užito Volno Uži% Připojeno do
[...]
/dev/etherd/e0.0p1    3,1G   33M  3,0G   2% /mnt/p1 

Jestli je oddíl přimountovaný, zjistíme pomocí mount.

CS24_early

delorean ~ # mount
[...]
/dev/etherd/e0.0p1 on /mnt/p1 type reiserfs (rw) 

A nakonec se můžeme podívat, které disky jsou na síti k dispozici.

delorean ~ # aoe-stat
      e0.0        10.737GB    br0 up 

Závěr

AoE si svoje místo najde. Jednoduše se s ním dají dělat spolehlivá úložiště dat a stejně tak lze za pomocí sdílených souborových systémů vytvořit rychlé centrální úložiště dat. V kombinaci se softwarovým raidem nebo LVM jeho možnosti ještě více rostou. Odstraní se i problém, kdy je na jednom stroji místa dost a na druhém málo. Samozřejmě se musí počítat s menším výkonem. To v některých případech řeší dvě oddělené síťové karty, jak již bylo v článku naznačeno.

Byl pro vás článek přínosný?

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.