Tutti i produttori di storage negli ultimi anni hanno ovviamente dovuto introdurre i "dischi" (le virgolette sono d'obbligo perché non c'è più correlazione fra il nome e la struttura fisica...) a stato solido.

Ovviamente l'implementazione più estrema e semplice è quella di usare gli SSD al posto dei dischi rotanti. Ma visto il costo di questi i produttori cercano di andare verso soluzioni miste in cui pochi dischi SSD aiutino quelli tradizionali, che siano SAS o SATA.

 

NetApp ha da qualche tempo in listino la soluzione FlashPool: in breve si usano pochi dischi SSD per creare degli aggregati ibridi. Da qualche settimana ci è arrivato il primo 2240-2 che ha 24 dischi SAS 900GB 10k (i 15 k non esistono più) dentro la macchina più 4 SSD da 200 ciascuno dentro uno shelf esterno.

Questa soluzione era una novità totale per me e anche abbastanza nuova per la persona -molto esperta- che è venuta a fare la "messa in moto": dopo aver creato l'aggregato ibrido su una delle due teste abbiamo creato un volume con il wizard "provision Storage for VMware" e l'abbiamo montato (per NetApp io uso solo NFS) sugli host del cluster. Dopo aver caricato le VM su questo datastore notavo che le prestazioni, soprattutto la latenza, non era "bella" come mi aspettavo.

Con l'OnCommand System Manager c'è una pagina in cui viene mostrato in tempo reale quante sono le read e write hits rispetto alle requests: mi diceva in modo evidente che le read hits erano costantemente a 0 e le write hits rarissime.

 

Non ci sono grandi possibilità di configurare le policy con cui la macchina utilizza la FlashPool. Purtroppo googlando con parole chiave come "neatpp flashpool vmware best practices" non si trovano molti aiuti.

Però andando alla fonte e consultando il paper TR-4070 di NetApp ("Flash Pool Design and Implementation Guide") si apprende che le policy in lettura sono

  1. read-cache=meta la cache è usata per i metadati
  2. read-cache=random-read che è quella di default
  3. read-cache=random-read-write
  4. read-cache=none


non mi dilungo in spiegazioni dettagliate che si trovano nel documento: in sintesi bisogna impostare la policy random-read-write per ogni volume su cui avete un datastore. Pochi istanti dopo averlo fatto le read hits hanno iniziato a crescere inesorabilmente verso il 100%.

Per quel che riguarda la policy di write quella di default (random-write) è quella che mi da i risultati migliori.

 

Ecco un esempio visivo di come lavora dopo questa facile ottimizzazione:

 

fp.jpg

 

I comandi da dare sono

 

FAS3240-ONTAP-FP> priv set advanced

Warning: These advanced commands are potentially dangerous; use

them only when directed to do so by NetApp

personnel.

FAS3240-ONTAP-FP*> priority hybrid-cache set vol1 read-cache=random-read-write

FAS3240-ONTAP-FP*> Sun May 6 14:00:25 EST [FAS3240-ONTAP-FP:wafl.hya.rcache.policy:info]: Read caching policy on volume 'vol1' has been modified to 'random-read-write'.

FAS3240-ONTAP-FP> priv set admin

 

N.B.: questo l'ho testato su un datastore NFS: in caso di iSCSI o FCP potrebbe essere migliore una policy differente.