Una panoramica sul mondo della Sicurezza Informatica, del Networking, della Virtualizzazione e non solo. Blog particolarmente indicato per i reparti IT che comunque alterna articoli scritti per specialisti con articoli formulati con linguaggio semplice e comprensibile a tutti.

Ogni articolo di questo blog è stato integralmente scritto dall'autore. Il contenuto è completamente originale e la riproduzione, anche parziale, è vietata salvo autorizzazione.

giovedì 7 aprile 2016

Cosa succede quando si risparmia troppo sullo storage in un ambiente virtuale?

In ambiente virtuale, il datastore è sicuramente uno degli aspetti più importanti e più sottovalutati in assoluto. Non è inusuale vedere errori grossolani di dimensionamento ed osservare un sovrautilizzo dei dischi SATA (lenti per definizione) e di RAID hardware con performance poco più di "fake raid".

Questo è vero sia quando il datastore è locale e direttamente collegato al singolo server, sia (e peggio) quando il datastore è condiviso da un pool di server.



Tipologie di SAN


Qui abbiamo approfondito come creare una SAN iSCSI con dischi in RAID su una LUN LVM Linux affinchè sia collegata con un pool di server VMWare. Questo procedimento non è differente da cosa accade nei NAS economici, anch'essi con una loro distribuzione linux che si occupa di gestire i dischi ed i collegamenti. Questa architettura, tuttavia, ha dei profondi limiti.

Possiamo dire, riassumendo banalmente, che gli storage si dividono (non me ne volete, è una mia personale classificazione) in:
  • Software Storage (molto economici), ovvero tutti i marchi che utilizzano a bordo un OS Linux e la suite md a gestione dei raid (o anche un Windows Storage Edition, se preferite)
  • Hardware Storage (molto costosi), ovvero tutti i marchi che implementano principalmente a livello hardware la gestione dei dischi
Nel primo caso vedremo ovviamente delle latenze e, per quanto performante potrà essere il sistema, non potrà mai avere un paragone che non sia schiacciante verso la più performante soluzione hardware. Ma si può fare qualcosa? Abbiamo margini di movimento? Lo vedremo nel proseguo dell'articolo.




I costi


In verità non ci sono grandi vie di mezzo sull'aspetto economico. C'è una linea di demarcazione che suddivide nettamente il prodotto "Software" più costoso dal prodotto "Hardware" più economico. Questo mette in difficoltà chi, come me, sviluppa anche progetti e preventivi. Da un punto di vista è facile risultare costoso e perdere di competitività, da un altro è facile quotare un prodotto economico ma non in grado di essere all'altezza delle aspettative (e questo in ambienti virtuali è un disastro).
Allora ho deciso di dedicarmi all'ottimizzazione di un prodotto economico, impiegando (purtroppo) mesi nell'osservazione e nell'affinamento di tutto il possibile per spingere al massimo lo storage software, basato su linux, che avevo tra le mani.



Ottimizzazione di un prodotto commerciale basato su Linux


Il prodotto su cui ho lavorato, un top di gamma di un noto produttore dal nome breve, aveva 8 dischi da 4Tb SATA WD RE, per un totale nominale di 32Tb. Processore Xeon, 32Gb di RAM ECC e 8 NIC, di cui 4 a 10Gbit. In aggiunta, due dischi M2 SSD da 128GB in RAID1 a fare da cache sia in lettura sia in scrittura.

A leggere i datasheet ed i performance test, era una Ferrari. Poteva essere usato anche al CERN di Ginevra. La verità è stata decisamente più mesta ed impietosa.

I primi due mesi, abbiamo avuto latenze così gravi e performance così basse da avere macchine corrotte, datastore persi dagli host, storage vmotion falliti. La media delle latenze si aggirava intorno ai 600ms (e per chi non lo sapesse, oltre i 40ms uno storage è già palesemente e gravemente in crisi).

Non ci siamo persi d'animo, per i successivi 6 mesi è stato un continuo di ticket aperti con il supporto oltre continente, ma senza alcun esito. 6 mesi del tutto inconcludenti. Senza contare gli innumerevoli bug scovati che ci hanno indotto a pensare a processi qualitativi di revisione del software decisamente carenti.

Questo ne è un esempio: cache SSD abilitata, a detta del produttore una features in grado di velocizzare esponenzialmente lo storage. Peccato che, a dischi SSD pieni, le operazioni di riciclo della cache diventavano una cozzaglia di colli di bottiglia così gravi da mandare durante qualche storage vmotion persino in timeout il datastore su vmware (14 secondi, QUATTORDICI SECONDI DI LATENZA, avete letto bene) con una frequenza di una volta ogni 4-5 giorni.


Data Rate

 Latenze (forse il parametro più importante)






Gli ultimi due mesi abbiamo deciso di invalidare la garanzia e mettere mani direttamente al sistema linux. Abbiamo fatto decine di cambiamenti e soprattutto centinaia di test in ogni condizione e con ogni variazione possibile ed immaginabile, sia lato vmware sia lato SAN. Abbiamo prodotto più fogli excel e grafici di quanto avrei voluto, ma lavorando molto sull'utilizzo corretto della RAM dello storage intesa come cache, coinvolgendo il supporto al controllo SIOC di vmware, utilizzando la vFlash (features comunque così costosa da non avere un senso ed una applicabilità reale con apparati SAN così economici) e apportando una marea di variazioni, siamo riusciti ad avere il massimo matematico che potevamo ricavare da quell'hardware. Sufficiente? Dipende ovviamente da cosa ci deve girare e dalla mole di lavoro che hanno le VM.





Credeteci, abbiamo fatto innumerevoli test. Questo articolo tuttavia non vuole fare una statistica degli storage più o meno performanti, quindi marchi e modelli sono stati oscurati. Lo scopo è solo capire se uno storage "software" top di gamma può arrivare a performance similari ad uno "hardware" entry level.



Dopo quasi un anno di lavoro e di test, queste sono le mie personalissime conclusioni


Storage economici possono essere utilizzati solo per sistemi di backup, tipicamente con scritture relativamente sequenziali, impegnative come throughput ma meno sensibili a latenze elevate. 

In ambienti di produzioni, onestamente, dopo aver subìto macchine corrotte e dopo il tempo e gli sforzi che sono serviti ad avere un prodotto stabile e al limite dell'accettabile, non consiglierei questa soluzione nemmeno al mio peggior nemico. Vada per gli ambienti di test, vada anche per un paio di Domain Controller, ma per metterci database o fileserver ci vuole tanto coraggio. E nei miei test non ho usato proprio una macchinetta, ho preso il massimo, equipaggiato con il massimo delle opzioni ed i dischi più enterprise che il mercato SATA offriva.

Sostanzialmente, per quanto abbia tentato con tutte le mie forze e sperato di avvicinare uno storage "software" ad uno con hardware dedicato e specifico per questo scopo, le differenze sono e rimangono abissali ed i costi rispecchiano, in conclusione, esattamente i risultati ottenuti.

Senza considerare che le soluzioni hardware consentono solitamente anche la ridondanza a caldo dei controller ed hanno mediamente un bacino di clientela enterprise, con un livello di supporto decisamente migliore.