This post is also available in: Inglese

Reading Time: 8 minutes

Fusion-IO è un’azienda che non necessita di presentazioni visto che è sicuramente il punto di riferimento per le soluzioni flash di tipo host-side: con le loro schede è possibile accelerare database, ambienti di virtualizzazione, ambienti di cloud computing, big data e altre applicazioni, senza cambiare lo storage esistente.

I loro prodotti della famiglia In-Server Acceleration sono decisamente impressionanti come caratteristiche (e in alcuni casi anche come prezzo) dato che possono fornire fino a 10.24TB di flash su una scheda (e volendo, e potendo, se ne possono usare anche più di una per host), includendo persino soluzioni specifiche per il mondo dei blade server (ioDrive2® Mezzanine).

Grazie a Fusion-IO Italy ho avuto modo di provare e testare per un mese tre schede Fusion-io 410GB ioScale, che rappresentano il modello base di questa famiglia (i prodotti ioScale usano la tecnologia MLC e sono disponibili in diverse capacità: 410GB, 825GB, 1650GB, 3.2TB), ma sufficiente per eseguire test nel mio laboratorio e comunque schede molto recenti dato che rappresentano la seconda generazione dei device ioScale.

Notare che i prodotti non si limitano alle sole schede, ma vi sono anche vari tipi di software, come ioTurbine Virtual, ioCache, ioVDI, …  per fornire funzionalità di più alto livello. Ovviamente si possono usare anche software di terze parti per implementare diverse funzioni, quali ad esempio la flash cache.

Dopo aver installato le schede nei server (seguendo il relativo manuale, e prestando molta attenzione, sulle schede di grande capacità, ai discorsi di temperatura, gestione della potenza, alimentazione, …) utilizzando gli slot PCI-e con banda adeguata (è importante usare server non troppo vecchi per non pregiudicare le prestazioni) si possono installare i driver e i software necessari. Questi si possono ottenere direttamente dal sito del supporto di Fusion-IO (bisogna registrarsi e registrare anche il prodotto prima di riuscire ad accedere ai download):

Fusion-Download

Per VMware ESXi 5.5 l’ultima versione disponibile (su questo modello di scheda) è la 3.2.6, ma dal sito è possibile scaricare anche driver per altri hypervisor o persino per singoli sistemi operativi (nel caso tipico di server fisici).

Per verificiare se la scheda Fusion-IO è installata correttamente (almeno a livello fisico) è possibile scansionare il bus PCI dell’host:

# lspci | grep Fusio
0000:41:00.0 Mass storage controller: Fusion-io ioDrive2 [fioiom0]

Ma per iniziare ad usarla è necessario installare driver e librerie relative. Su VMware ESXi il modo più semplice (non necessariamente il più rapido) è utilizzare VMware Update Manager (VUM), importando i due file richiesti nel repository ed associando gli stessi ad una baseline di tipo extension.

Importante però applicare la remediation in sequenza: in un primo passo deve essere installata la parte relativa al driver.

Fusion-FirstRemediation

Successivamente quella relativa alla libreria.

A questo punto la scheda apparirà nei dispositivi di storage con il corrispondente disco a blocchi di tipo SSD:

FusionIO-StorageAdapter

Da qui si può già iniziarla ad usare come disco locale, formattandolo con VMFS e trattandolo come datastore full flash, ma con i limiti di uno storage locale (ridondanza e disponibilità). L’alternativa è usare VMDirectPath I/O e “passare” la scheda ad una VM come se fosse una macchina fisica con la sua flash cache. In questo caso non c’è bisogno neppure di installare i driver su ESXi, visto che dovranno essere installati nel guest OS. Ma ovviamente la VM diventa limitata in diversi aspetti (100% memory reservation, no snapshot, no vMotion, …).

Personalmente trovo più interessanti gli utilizzi abbinati ad altri software o per implementare soluzioni di host cache o per implementare certi tipi di Virtual Storage Appliance (VSA) o Software Defined Storage (SDS). Nei post successivi descriverò due utilizzi distinti, uno con PernixData e uno con VMware VSAN.

Lato host, una volta installati driver e librerie, vi saranno anche alcuni nuovi comandi nella CLI (disponibili in /opt/fio/bin).

Il primo comando da considerare è quello relativo alla ri-formattazione dei blocchi fisici della flash, dato che non tutti i sistemi operativi supportano la nuova formattazione a 4k (notare che le schede ioFX sono pre-formattate con blocchi a 4kB, tutte le altre schede ioMemory sono formattate di fabbrica con settori da 512B). Blocchi più grossi possono migliorare le prestazioni (se supportati), ma in accordo alla documentazione di Fusion-IO, per ESXi il blocco raccomandato deve essere di 512B.

/opt/fio/bin # fio-format -h
Fusion-io format utility (v3.2.6.1219 pinnacles@23215236e91a)
usage: fio-format [options] <device>
[B,K,M,G,T,P,%] are <u>nits: Bytes, KBytes, MBytes, GBytes, TBytes, PBytes and percent.
Options:
-b, --block-size <size>[B,K] Set the block (sector) size, in Bytes or KiBytes (base 2).
-s, --device-size <size>[<u>] Size to format device where max size is default capacity.
-o, --overformat <size>[<u>] Overformat device size where max size is maximum physical capacity.
-P, --enable-persistent-trim Make persistent trim feature available on the device.
-R, --slow-rescan Disable fast rescan on unclean shutdown to reclaim some capacity.
-f, --force Force formatting outside standard limits.
-q, --quiet Quiet mode - do not print progress.
-y, --yes Auto answer 'yes' to all confirmation requests.
-v, --version Print version information.
-h, --help Print the help menu.

Esistono poi comandi più specifici per ottenre informazioni del sistema o delle schede. Ad esempio la vecolità del bus PCI-e si può verificare con:

/opt/fio/bin # fio-pci-check -v
Root Bridge PCIe 2000 MB/sec needed max
ioDrive 00:41.0 (2001) Firmware 0
Current control settings: 0x283e
Correctable Error Reporting: disabled
Non-Fatal Error Reporting: enabled
Fatal Error Reporting: enabled
Unsupported Request Reporting: enabled
Payload size: 256
Max read size: 512
Current status: 0x0000
Correctable Error(s): None
Non-Fatal Error(s): None
Fatal Error(s): None
Unsupported Request(s): None
link_capabilities: 0x0000f442
Maximum link speed: 5.0 Gb/s per lane
Maximum link width: 4 lanes
Slot Power limit: 25.0W (25000mw)
Current link_status: 0x00000042
Link speed: 5.0 Gb/s per lane
Link width is 4 lanes
Current link_control: 0x00000000
Not modifying link enabled state
Not forcing retrain of link

In realtà la maggior parte delle informazioni si possono ottenere con il comando fio-status che dispone di numerose opzioni (ad esempio -e per limitare l’output ai soli errori):

/opt/fio/bin # fio-status -a
Found 1 ioMemory device in this system
Driver version: 3.2.6 build 1219
Adapter: ioMono
Fusion-io 410GB ioScale2, Product Number:F11-003-410G-CS-0001, SN:1345G0233, FIO SN:1345G0233
ioDrive2 Adapter Controller, PN:PA005004005
External Power: NOT connected
PCIe Bus voltage: avg 11.93V
PCIe Bus current: avg 0.69A
PCIe Bus power: avg 8.28W
PCIe Power limit threshold: 24.75W
PCIe slot available power: unavailable
Connected ioMemory modules:
fct0: Product Number:F11-003-410G-CS-0001, SN:1345G0233
fct0 Attached
ioDrive2 Adapter Controller, Product Number:F11-003-410G-CS-0001, SN:1345G0233
ioDrive2 Adapter Controller, PN:PA005004005
SMP(AVR) Versions: App Version: 1.0.13.0, Boot Version: 1.0.4.1
Powerloss protection: protected
PCI:41:00.0, Slot Number:1
Vendor:1aed, Device:2001, Sub vendor:1aed, Sub device:2001
Firmware v7.1.15, rev 110356 Public
410.00 GBytes device size
Format: v500, 800781250 sectors of 512 bytes
PCIe slot available power: 25.00W
PCIe negotiated link: 4 lanes at 5.0 Gt/sec each, 2000.00 MBytes/sec total
Internal temperature: 52.66 degC, max 59.55 degC
Internal voltage: avg 1.01V, max 1.02V
Aux voltage: avg 2.48V, max 2.49V
Reserve space status: Healthy; Reserves: 100.00%, warn at 10.00%
Active media: 100.00%
Rated PBW: 2.00 PB, 100.00% remaining
Lifetime data volumes:
Physical bytes written: 45,701,644,712
Physical bytes read : 22,004,442,720
RAM usage:
Current: 153,816,384 bytes
Peak : 3,351,972,480 bytes
Contained VSUs:
fioiom0: ID:0, UUID:c29b73cc-088a-48b0-b47a-a5a435be88ed
fioiom0 State: Online, Type: block device
ID:0, UUID:c29b73cc-088a-48b0-b47a-a5a435be88ed
410.00 GBytes device size
Format: 800781250 sectors of 512 bytes

La dimensione del blocco (ultima riga), la velocità del bus, l’uso dello storage e tanto altro è disponibile da questi report. Notare la temperatura interna relativamente alta dovuta soprattutto al form factor del server (questa scheda era su un R620 da 1U, mentre su R710 da 2U adiacente al precedente, la temperatura segnalata era 42.33 degC, max 47.74 degC).

Altro comando potenzialmente utile è fio-update-iodrive che permette di gestire l’ugrade del firmware delle schede.

Per maggiori informazioni è possibile vedere anche il case study descritto nella scorsa VMUG.IT User Conference: VMUGIT User Conference 2013 – Telecom Italia con VMware e Fusion-IO.

Come pure vedere il video disponibile sul sito di Fusion-IO con una introduzione della tecnologia NAND Flash: A Brief History of NAND Flash Storage.

History-Flash

Share

Virtualization, Cloud and Storage Architect. Tech Field delegate. VMUG IT Co-Founder and board member. VMware VMTN Moderator and vExpert 2010-24. Dell TechCenter Rockstar 2014-15. Microsoft MVP 2014-16. Veeam Vanguard 2015-23. Nutanix NTC 2014-20. Several certifications including: VCDX-DCV, VCP-DCV/DT/Cloud, VCAP-DCA/DCD/CIA/CID/DTA/DTD, MCSA, MCSE, MCITP, CCA, NPP.