Storage Pools

Entre las novedades de Clustered Data ONTAP 8.3, ha sido una gran noticia la inclusión de la funcionalidad “Advanced Drive Partitioning” (ADP).

Gracias a esta nueva funcionalidad podemos particionar nuestros discos y usar estas particiones en lugar de discos completos optimizando de esta manera su uso.

 

Con ADP tenemos la posibilidad de particionar discos en los siguientes casos:

- Particionado de discos HDD para uso en el Agregado Root de controladoras Entry Level (FAS25XX)

- Particionado de discos SSD para uso en el Agregado Root de controladoras FAS All-Flash

- Particionado de discos SSD para uso como FlashPools en controladoras híbridas (SSD + HDD)

 

El objetivo de este particionamiento, en cualquiera de los 3 casos, es la optimización de la capacidad de los discos.

 

¿Qué es un Storage Pool?

Un Storage Pool es una agrupación de discos SSD particionados.

Cada disco SSD que incluimos en un Storage Pool, se particiona en 4 trozos iguales. 

Cada partición de cada disco se usa para crear un RAID Group, que tendrá particiones de datos y particiones de paridad. Cada uno de estos Raid Groups, recibe el nombre de Allocation Unit (AU).

allocation_unit.png

Cada uno de estos 4 Allocation Units se puede usar para convertir un agregado en un agregado acelerado con FlashPools.

La particularidad de los Storage Pools es que sus Allocation Units pueden usarse indistintamente en cualquiera de los dos nodos que forman la pareja de controladoras conectadas físicamente a las bandejas de discos.

Esto lleva consigo una nueva ventaja: si un disco del Storage Pool falla, basta con que tengamos configurados los Hot-Spare correspondientes en una sola controladora, para que Data ONTAP sustituya el disco fallado, ahorrándonos la necesidad de tener Hot-Spares configurados en ambas controladoras.

 

FlashPools usando Storage Pools de discos SSD

Antes de crear un agregado con FlashPool usando discos SSD particionados,tenemos que tener disponible:

- Un agregado creado con discos tradicionales para convertirlo en un agregado con FlashPool

- Un Storage Pool creado con discos SSD

- Haber determinado la cantidad de caché que queremos añadir al agregado

Además tenemos que tener cuidado con lo siguiente:

- Que todos los volúmenes del agregado sean candidatos válidos para ser acelerados

- Que no superamos el límite de caché soportado para el modelo de nuestra controladora

 

Vamos a crear nuestro Storage Pool usando la linea de comandos, pero esto también se puede hacer usando el nuevo y flamante System Manager 8.3 integrado en las controladoras.

Miramos primero los discos SSD disponibles en nuestro cluster:

ClusterMadrid::> disk show -type SSD
                     Usable           Disk    Container   Container
Disk                   Size Shelf Bay Type    Type        Name      Owner
---------------- ---------- ----- --- ------- ----------- --------- --------
2.1.0               92.92GB     1   0 SSD     aggregate   aggrSSD_n3 node3
2.1.1               92.92GB     1   1 SSD     aggregate   aggrSSD_n3 node3
2.1.2               92.92GB     1   2 SSD     aggregate   aggrSSD_n3 node3
2.1.3               92.92GB     1   3 SSD     aggregate   aggrSSD_n3 node3
2.1.4               92.92GB     1   4 SSD     aggregate   aggrSSD_n3 node3
2.1.5               92.92GB     1   5 SSD     aggregate   aggrSSD_n3 node3
2.1.6               92.92GB     1   6 SSD     spare       Pool0     node3
2.1.7               92.92GB     1   7 SSD     spare       Pool0     node3
2.1.8               92.92GB     1   8 SSD     spare       Pool0     node3
2.1.9               92.92GB     1   9 SSD     spare       Pool0     node3
2.1.10              92.92GB     1  10 SSD     spare       Pool0     node3
2.1.11              92.92GB     1  11 SSD     spare       Pool0     node3

Vemos que tenemos 6 discos SSD que no están siendo utilizados en ningún otro Agregado o Storage Pool. El propietario de estos discos es el Nodo 3, por lo que nuestro Storage Pool estará compartido entre los nodos 3 y 4.

ClusterMadrid::> storage pool create -storage-pool flashpool_sp_01 -disk-list 2.1.6,2.1.7,2.1.8,2.1.9,2.1.10
[Job 16526] Job succeeded: storage pool create job for "flashpool_sp_01" completed successfully
ClusterMadrid::> storage pool show
                     Storage
Storage Pool         Type    #Disks Nodes             Total Size
-------------------  ------- ------ ----------------  ----------
flashpool_sp_01       SSD          5 node4, node3         464.3GB

ClusterMadrid::> storage pool show-available-capacity
                           Storage SyncMirror Allocation Unit  Total
Node       Storage Pool    Type    Pool       Unit size  Count Usable Size
---------- --------------- ------- ---------- ---------- ----- -----------
node3      flashpool_sp_01  SSD     Pool0         116.1GB     2     232.2GB
node4      flashpool_sp_01  SSD     Pool0         116.1GB     2     232.2GB
2 entries were displayed.

Hemos usado 5 de estos discos para crear un nuevo Storage Pool y dejaremos el disco restante como Hot-Spare.

Este disco Hot-Spare servirá para sustituir automáticamente a cualquier disco SSD que falle, ya sea del agregado aggrSSD_n3 como del Storage Pool que acabamos de crear.

Se puede observar que por defecto Data ONTAP nos asigna 2 Allocation Units a cada una de las dos controladoras que tienen acceso al Storage Pool.

Esto se puede modificar con el comando “storage pool reassign” de forma que tenemos total flexibilidad para asignar cualquiera de las unidades disponibles a cualquier agregado de la pareja de controladoras.

Una vez creado el Storage Pool, ya está disponible para su uso.

Veamos nuestros agregados:

ClusterMadrid::> aggr show
Aggregate     Size Available Used% State   #Vols  Nodes            RAID Status
--------- -------- --------- ----- ------- ------ ---------------- ------------
aggr0_n1   707.7GB   32.28GB   95% online       1 node1            raid_dp,normal
aggr0_n2   467.6GB   21.33GB   95% online       1 node2            raid_dp,normal
aggr0_n3   367.4GB   116.0GB   68% online       1 node3            raid_dp,normal
aggr0_n4   349.0GB   15.92GB   95% online       1 node4            raid_dp,normal
aggrFlashPool_n3 13.10TB 13.10TB 0% online      0 node3            raid_dp,normal
aggrSAS_n2  2.88TB    1.05TB   64% online       7 node2            raid_dp,normal
aggrSATA_n1 11.64TB   8.56TB   26% online      39 node1            raid_dp,normal
aggrSSD_n3 334.4GB   133.2GB   60% online       1 node3            raid_dp,normal
aggrVseries_n4 1.52TB 1.52TB    0% online       1 node4            raid0,normal
9 entries were displayed.

En este caso vamos a utilizar dos Allocation Units para convertir el agregado aggrFlashPool_n3 en un agreagado con FlashPools:

ClusterMadrid::> aggr modify -aggregate aggrFlashPool_n3 -hybrid-enabled true
ClusterMadrid::> aggr add -aggregate aggrFlashPool_n3 -allocation-units 2 -storage-pool flashpool_sp_01
[Job 16534] Job is queued: Aggr Add for aggrFlashPool_n3.

Addition of capacity to aggregate "aggrFlashPool_n3" has been initiated. Some capacity needs to be zeroed before it can be added to the aggregate. Once zeroing completes, all capacity will be added at
once. Note that if the system reboots before the zeroing is complete, the capacity will not be added.

Tras un rato de espera con un Spiced Chai Latte y un poco de música ya tenemos nuestro agregado con FlashPools. Vamos a usar el nuevo comando de 8.3 “aggr show-status”:

ClusterMadrid::> aggr show-status -aggregate aggrFlashPool_n3

Owner Node: node3
 Aggregate: aggrFlashPool_n3 (online, raid_dp, hybrid) (block checksums)
  Plex: /aggrFlashPool_n3/plex0 (online, normal, active, pool0)
   RAID Group /aggrFlashPool_n3/plex0/rg0 (normal, block checksums)
                                                              Usable Physical
     Position Disk                        Pool Type     RPM     Size     Size Status
     -------- --------------------------- ---- ----- ------ -------- -------- ----------
     dparity  2.1.12                       0   BSAS    7200   1.62TB   1.62TB (normal)
     parity   2.1.13                       0   BSAS    7200   1.62TB   1.62TB (normal)
     data     2.1.14                       0   BSAS    7200   1.62TB   1.62TB (normal)
     data     2.1.15                       0   BSAS    7200   1.62TB   1.62TB (normal)
     data     2.1.16                       0   BSAS    7200   1.62TB   1.62TB (normal)
     data     2.1.17                       0   BSAS    7200   1.62TB   1.62TB (normal)
     data     2.1.18                       0   BSAS    7200   1.62TB   1.62TB (normal)
     data     2.1.19                       0   BSAS    7200   1.62TB   1.62TB (normal)
     data     2.1.20                       0   BSAS    7200   1.62TB   1.62TB (normal)
     data     2.1.21                       0   BSAS    7200   1.62TB   1.62TB (normal)
     data     2.1.22                       0   BSAS    7200   1.62TB   1.62TB (normal)

   RAID Groups /aggrFlashPool_n3/plex0/rg1 (normal, block checksums) (Storage Pool: flashpool_sp_01)
               /aggrFlashPool_n3/plex0/rg2 (normal, block checksums) (Storage Pool: flashpool_sp_01)
                                                              Usable Physical
     Position Disk                        Pool Type     RPM     Size     Size Status
     -------- --------------------------- ---- ----- ------ -------- -------- ----------
     shared   2.1.9                        0   SSD        -  46.43GB  93.16GB (normal)
     shared   2.1.6                        0   SSD        -  46.43GB  93.16GB (normal)
     shared   2.1.7                        0   SSD        -  46.43GB  93.16GB (normal)
     shared   2.1.8                        0   SSD        -  46.43GB  93.16GB (normal)
     shared   2.1.10                       0   SSD        -  46.43GB  93.16GB (normal)
16 entries were displayed.

Como veis la salida de este nuevo comando es muy similar a la de los antiguos comandos de 7-Mode “sysconfig -r” y “aggr status -r” (¡gracias Ingenieria!).

Aún así el antiguo comando ejecutado en la Nodeshell nos da un poquito más de información sobre las particiones:

ClusterMadrid::> node run node3 aggr status -r aggrFlashPool_n3
Aggregate aggrFlashPool_n3 (online, raid_dp, hybrid) (block checksums)
  Plex /aggrFlashPool_n3/plex0 (online, normal, active, pool0)
    RAID group /aggrFlashPool_n3/plex0/rg0 (normal, block checksums)

      RAID Disk	Device  	HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)
      ---------	------  	------------- ---- ---- ---- ----- --------------    --------------
      dparity 	0a.01.12	0a    1   12  SA:A   0  BSAS  7200 1695466/3472315904 1695759/3472914816
      parity  	0b.01.13	0b    1   13  SA:B   0  BSAS  7200 1695466/3472315904 1695759/3472914816
      data    	0a.01.14	0a    1   14  SA:A   0  BSAS  7200 1695466/3472315904 1695759/3472914816
      data    	0b.01.15	0b    1   15  SA:B   0  BSAS  7200 1695466/3472315904 1695759/3472914816
      data    	0a.01.16	0a    1   16  SA:A   0  BSAS  7200 1695466/3472315904 1695759/3472914816
      data    	0b.01.17	0b    1   17  SA:B   0  BSAS  7200 1695466/3472315904 1695759/3472914816
      data    	0a.01.18	0a    1   18  SA:A   0  BSAS  7200 1695466/3472315904 1695759/3472914816
      data    	0b.01.19	0b    1   19  SA:B   0  BSAS  7200 1695466/3472315904 1695759/3472914816
      data    	0a.01.20	0a    1   20  SA:A   0  BSAS  7200 1695466/3472315904 1695759/3472914816
      data    	0b.01.21	0b    1   21  SA:B   0  BSAS  7200 1695466/3472315904 1695759/3472914816
      data    	0a.01.22	0a    1   22  SA:A   0  BSAS  7200 1695466/3472315904 1695759/3472914816

    RAID group /aggrFlashPool_n3/plex0/rg1 (normal, block checksums)

      RAID Disk	Device  	HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)
      ---------	------  	------------- ---- ---- ---- ----- --------------    --------------
      dparity 	0b.01.9P1	0b    1   9   SA:B   0   SSD   N/A 23773/48687616    23781/48704000
      parity  	0a.01.6P1	0a    1   6   SA:A   0   SSD   N/A 23773/48687616    23781/48704000
      data    	0b.01.7P1	0b    1   7   SA:B   0   SSD   N/A 23773/48687616    23781/48704000
      data    	0a.01.8P1	0a    1   8   SA:A   0   SSD   N/A 23773/48687616    23781/48704000
      data    	0a.01.10P1	0a    1   10  SA:A   0   SSD   N/A 23773/48687616    23781/48704000

    RAID group /aggrFlashPool_n3/plex0/rg2 (normal, block checksums)

      RAID Disk	Device  	HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)
      ---------	------  	------------- ---- ---- ---- ----- --------------    --------------
      dparity 	0b.01.9P2	0b    1   9   SA:B   0   SSD   N/A 23773/48687616    23781/48704000
      parity  	0a.01.6P2	0a    1   6   SA:A   0   SSD   N/A 23773/48687616    23781/48704000
      data    	0b.01.7P2	0b    1   7   SA:B   0   SSD   N/A 23773/48687616    23781/48704000
      data    	0a.01.8P2	0a    1   8   SA:A   0   SSD   N/A 23773/48687616    23781/48704000
      data    	0a.01.10P2	0a    1   10  SA:A   0   SSD   N/A 23773/48687616    23781/48704000

 Veamos como ha quedado nuestro Storage Pool:

ClusterMadrid::> storage pool show-available-capacity
                           Storage SyncMirror Allocation Unit  Total
Node       Storage Pool    Type    Pool       Unit size  Count Usable Size
---------- --------------- ------- ---------- ---------- ----- -----------
node3      flashpool_sp_01 SSD     Pool0         116.1GB     0          0B
node4      flashpool_sp_01 SSD     Pool0         116.1GB     2     232.2GB

Se puede observar que hemos “gastado” dos Allocation Units y que aún nos quedan otros dos y que actualmente están asignados al nodo 4.

 

Ventajas de los Storage Pools

Los Storage Pools nos traen la posibilidad de mejorar la eficiencia de nuestros Flash Pool reduciendo la penalización que supone tener discos dedicados para paridad y hot-spare, aumentando de esa manera el uso de nuestros discos e incrementando el rendimiento.

provisioning.png

Pero además nos da una gran flexibilidad en la asignación de la capacidad de nuestros caros discos SSD, permitiendo compartirlos entre 4 agregados distintos que además pueden pertenecer a controladoras diferentes.

 

Más información en:

http://mysupport.netapp.com/documentation/docweb/index.html?productID=61998

 

¡Espero que os haya resultado interesante!

¡Hasta la próxima!

 

Jaime

 

Me llamo Jaime Balañá, trabajo para NetApp desde 2010 y actualmente soy Technical Account Manager. 

Twitter: @jbalana