apr 042011
 

Quando abbiamo la necessità di collegare uno storage a blocchi ad una batteria di server, ci viene spontaneo soffermarci sul protocollo iSCSI.
Questo protocollo permette di incapsulare le istruzioni SCSI su una connessione IP e promette di raggiungere prestazioni simili a SAN in Fibre Channel ad un costo nettamente inferiore. Il protocollo è largamente diffuso sia sul mondo Linux, sia sul mondo proprietario (VMWare, Windows, ecc).
iSCSI, però, manifesta i sui limiti in caso di intenso traffico in quanto carica la CPU del server durante le operazioni di incapsulamento e decapsulamento dei pacchett SCSI nel/dal pacchetto IP. Quando il traffico aumenta, quindi, per mantenere prestazioni adeguate si rende necessario acquistare costose schede ethernet dedicate in grado di compiere direttamente questa operazione, senza caricare la CPU dello storage.

Se la nostra SAN dovrà servire esclusivamente sistemi Linux, però, c’è una valida alternativa ad iSCSI: AoE.
AoE è l’acronimo di ATA over Ethernet ed è un protocollo concettualmente simile all’iSCSI, però molto più “light”: basti solo pensare che l’intera specifica del protocollo risiede in sole 9 pagine!
AoE è in grado di inviare direttamente i comadi ATA su Ethernet, senza però incapsularli all’interno di un pacchetto IP, pertanto l’overhead del protocollo iSCSI con l’annesso maggior carico della CPU viene scongiurato: le comunicazioni avvengono sfruttando direttamente il MAC Address, pertanto hanno il limite (che non ha iSCSI) di non essere routabili.
In caso di più device all’interno della stessa rete, il protocollo AoE permette di identificarli assegnando due valori: shelf e slot che sono assegnabili liberamente alla creazione del device, ma che concettualmente sono simili all’idea dell’identificativo del disco (shelf) e della partizione (slot).

Qualsiasi distribuzione linux è adatta ad utilizzare questo protocollo: l’introduzione a livello kernel è arrivata già con la release 2.6.11 e due pacchetti (vblade e aoetools) permettono di gestire il protocollo.

Configurazione di uno storage AoE
Sul server che fungerà da storage (in gergo chiamato “target”) è necessario installare il pacchetto vblade che permette di trattare i device AoE analogamente al Coraid Etherdrive. Una volta installato il pacchetto, è necessario esportare il drive; ad esempio:

./vbladed 0 0 eth0 /dev/sda4

Così facendo, esporteremo il disco /dev/sda4 attraverso l’interfaccia di rete eth0 assegnando lo shelf 0 e lo slot 0. Il comando restituirà in output una striga simile alla seguente:

pid 12905: e0.0, 436614507 sectors

Questa indica il PID del processo (12905), il valore di shelf e slot (e0.0) e il numero di settori del disco esportato.

 

Configurazione di un client AoE
Per collegarsi ad un disco esportato attraverso un client linux, innanzi tutto è necessario caricare il modulo del kernel con:

modprobe aoe

Quindi, per montare il disco nello userspace, bisogna installare il paccheto aoetools. Con il seguente comando è possibile eseguire una scansione della rete per identificare i drive AoE e creare automaticamente il device:

aoe-discover;aoe-stat

Seguendo il nostro esempio, troverete un nuovo device in /dev/etherd/e0.0

A questo punto potete formattare il disco e montarlo proprio come se si trattasse di un disco locale:

mkfs.ext3 /dev/etherd/e0.0;mount /dev/etherd/e0.0 /mnt

Per semplicità ho usato ext3, nulla vieta ovviamente di utilizzare un filesystem cluster come ocfs2 o gfs e montare il disco su più client.

Articoli simili

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>