Automatizar la configuración con FC de una FlashArray //X en HyperV

Pues como el propio título indica, cuando hemos de hacer una configuración de una FlashArray //X en un entorno Hyper-V y mediante conexiones Fiber Channel, he creado un script en Powershell que automatiza el proceso de instalación y configuración, siguiendo las best practices que podéis encontrar en este enlace del centro de ayuda de Purestorage.

La verdad es que se podria hacer todo en entorno gráfico, pero mediante scripting es muchisimo más rápido y desatentido que no abriendo y cerrando ventanas de Windows. En todo caso, vamos a explicar los pasos de la configuración y el porqué de todo ello para, al final del post tener el script entero.

Instalación del MPIO (Multipath-I/O)

Esta característica de Windows se debe instalar para poder dotar al servidor o nodo Hyper-V distintas rutas (paths) hacia el almacenaje que presenta la FlashArray. Si uno de estas rutas (iSCSI o HBA) cae, la característica MPIO redirigirá las peticiones por otra ruta, sin que el acceso a los datos se vea afectado.

Configurar el MPIO

Una vez instalada la caracterísitca, se debe añadir el VendorId y el ProductID en un formato de 8 y 16 carácters para posteriormente, modificar los timers del MPIO para obtener el rendimiento óptimo en nuestra FlashArray. Los valores que se deben modificar son:

  • NewPathRecoveryInterval: es el tiempo que el servidor tarda en recuperar la ruta perdida. El valor por defecto es 40 y con FlahArray lo debemos cambiar a 20 segundos
  • CustomPathRecovery: es una variable booleana (1 o 0) que activa (1) o desactiva (0) la recuperación de la ruta personalizada, es decir, el primer parámetro que vamos a modificar. Con FlashArray el valor debe ser 1
  • PDORemovePeriod: un PDO es un objeto de dispositivos físicos (Physical Device Object). Este valor es el tiempo que espera el servidor a eliminar todas las rutas que han fallado hacia un PDO. El valor por defecto es 20 y con FlashArray lo debemos aumentar a 30
  • NewDiskTimeout: es el valor en segundos del tiempo de espera del disco. Este valor es el tiempo que esperará el servidor antes de marcar la solicitud E/S como fallida. En este caso se mantiene en 60 segundos, aunque la documentación de Microsoft lo establezca en 120
  • PathVerificationState: este valor nos indica si debemos verificar que el path está activo o no. Por defecto viene en Disabled y lo deberemos poner en Enabled

Configurar la política del MPIO

En este caso, y resumiendo, se refiere a como el servidor Hyper-V o host, distribuye las IOs entre las distintas rutas hacia el almacenaje. En este caso nos encontramos con que hay distintos tipos de politicas:

  • FOO: Fail Over Only
  • RR: Round Robin
  • LQD: Last Queue Depth
  • LB: Least Blocks
  • None: la que venga por defecto

En el caso de Pure Storage, la política de acceso debe ser Round Robin (RR)

Configurar la SAN Policy

Bàsciamente esto se refiere a como Windows Server determina si los discos deben montarse de forma automática cuando se detectan como nuevos en el host. En este caso si el host no forma parte de un Windows Server Failover Clustering, se debe cambiar la política de OfflineShared a OnlineAll para poner en linia los volúmenes existentes cuando se reinicie el host

Explicado todas las modificaciones que debemos hacer en un host Hyper-V, vamos a a ver como automatizarlo todo en un script. En primer lugar, los cmdlets que vamos a necesitar son los siguientes:

  • Instalación del MPIO (Multipath-I/O)

Get-WindowsFeature -Name 'Multipath-IO'

Add-WindowsFeature -Name 'Multipath-IO'

  • Configurar el MPIO

Remove-MSDSMSupportedHw -VendorId 'Vendor' -ProductId 'Product'

New-MSDSMSupportedHw -VendorId PURE -ProductId FlashArray

Set-MPIOSetting -NewPathRecoveryInterval 20 -CustomPathRecovery Enabled -NewPDORemovePeriod 30 -NewDiskTimeout 60 -NewPathVerificationState Enabled

  • Configurar la política del MPIO

Set-MSDSMGlobalDefaultLoadBalancePolicy -Policy RR

  • Configurar la SAN Policy

Set-StorageSetting -NewDiskPolicy OnlineAll

Una vez tengamos claros los cmdlets con las opciones que Pure Storage nos recomienda para los entorns HyperV vamos a construir el script. Como punto de partida, debemos pensar que hay dos reinicios del host, y por lo tanto si quieremos que sea una configuración automática y desatendida, deberemos re-arrancar el script una vez arranque el servidor y nos logueemos de nuevo. Este script seguro que no es la mejor forma de hacerlo, pero es la que suelo usar yo en instalaciones desatendidas o semi-desatendias, siendo muy fácil su gestión.

El truco radica en crear un contador ($bootcount) que irá ejecuntando las opciones del menú switch {}, generando en un directorio %\temp un fichero *ps1 con las opciones y un fichero *bat que ejecutará el script. No soy programador profesional así que si encontráis fallos, estaré encantado de recibir vuestras (constructivas) críticas.

Script:

# Create a 'temp' Folder
if (!(Get-Item C:\temp -ea ignore)) { mkdir C:\temp }

$dropperscript = 'C:\temp\FlashArrayHV_Conf.ps1'

$dropper = @'

$countfile = 'C:\temp\bootcount.txt'
$bootbatch = 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\dropper.bat'
$dropperscript = 'C:\temp\dropper.ps1'

# Bootstrap Batch
if (!(Get-Item $bootbatch -ea ignore)) {
    "powershell -c $dropperscript`npause" | Out-File $bootbatch -Encoding 'OEM'
}

# Boot Count
if (Get-Item $countfile -ea ignore) {
    [int]$bootcount = Get-Content $countfile
    if ($bootcount -match "^\d{1,2}$") { ([int]$bootcount) ++ }
    else { $bootcount = 1 }
}
else { $bootcount = 1 }
$bootcount | Out-File $countfile

switch ($bootcount) {
    
    1 {
            Get-WindowsFeature -Name 'Multipath-IO'

            Add-WindowsFeature -Name 'Multipath-IO'
       
            Restart-Computer
                
    }
    
    2 {
            Remove-MSDSMSupportedHw -VendorId 'Vendor*' -ProductId 'Product*'
        
    New-MSDSMSupportedHw -VendorId PURE -ProductId FlashArray
            Get-MSDSMSupportedHw

            Restart-Computer
                
    }
    
    3 {
    
        Set-MPIOSetting -NewPathRecoveryInterval 20 -CustomPathRecovery Enabled -NewPDORemovePeriod 30 -NewDiskTimeout 60 -NewPathVerificationState Enabled
        Get-MPIOSetting
        Set-MSDSMGlobalDefaultLoadBalancePolicy -Policy RR
        Get-MSDSMGlobalDefaultLoadBalancePolicy

        Set-StorageSetting -NewDiskPolicy OnlineAll
        Get-StorageSetting | Select-Object NewDiskPolicy
        Restart-Computer
     }
    
    default {
        # Dropper is complete; clean up
        rm $countfile
        rm $bootbatch
        rm $dropperscript
    }
}
'@

# Drop and run Dropper

$dropper | Out-File $dropperscript -Encoding 'OEM'

Invoke-Expression $dropperscript

Nuevas cabinas de almacenaje Purestorage FlashArray //XR3 y //C

Purestorage, líder indiscutible en almacenamiento All-Flash ha presentado este 2020 su nueva versión R3 en las cabinas FlashArray //X y su cabina de almacenamiento masivo FlashArray //C.

image

Puede que el post vaya un poco atrasado, pero he decidido re-arrancar el blog (demasiado tiempo parado…) con este pedazo de producto. Para los que no conozcáis a Purestorage, se trata de un fabricante de almacenamiento flash que tiene 4 grandes productos y en donde en todos ellos garantizan un 99,999999% (¡seis nueves!) de disponibilidad, lo que significa que las cargas de trabajo siempre están dispoibles, siempre funcionan y siempre estánn protegidas, sin pérdida de rendimiento.

La familia de productos FlashArray //X para almacenamiento estructurado

FlashArray//X: Arreglo basado íntegramente en tecnología flash empresarial  integramente NVMe para la nube | Pure Storage

La familia de productos FlashBlade para almacenamiento desestructurado o como grandes contenedores de datos (Data HUB)

FlashBlade Data Sheet for File and Object Storage | Pure Storage

La familia de productos FlashArray //C para gran almacenamiento estructurado como copias de seguridad o tiers de datos

FlashArray//C Data Sheet for Hybrid Storage | Pure Storage

Cloud Block Store o almacenamiento flash en AWS (de momento…Azure está en el roadmap)

Pure Storage Cloud Block Store Goes GA - Architecting IT

A diferencia de otros fabricantes, Purestorage ha apostado des de sus inicios por tener pocos productos, pero muy muy buenos y con el tiempo, ir avanzándose a las necesidades de almacenamiento del mercado. Ah! Y sobre todo: all-flash y ahora ya NVMe-Of.

Purestorage, apuesta por el concepto Modern Data Experience:

  1. “Fast Matters”: la rapidez SI importa. El acceso al dato debe ser rápido, independientemente del tipo de dato.
  2. “Cloud Everywhere”: la facilidad de tener entornos híbridos, de poder trabajar on-cloud como si estuviéramos en on-prem o la facilidad de tener un DR en el cloud,.
  3. “Simple is smart”: Purestorage se caracteriza por se muy simple en su despliegue, configuración y posterior mantenimiento con RPO y RTO zero. Z E R O.
  4. “Subscription to Innovation”: un método nuevo y disruptivo de actualización de hardware y software que ningún fabricante hasta la fecha es capaz de ofrecer, como el concepto Evergreen.

Y todo esto se presenta en formato de cabina de almacenaje de 20 discos y 3U de espacio en el rack, o de 15 blades y 4U de espacio en el rack.

Pure Storage announces QLC-based FlashArray //C secondary storage platform  – TECHunplugged

Además, la tecnología que ofrece Purestorage está ha años luz de los que otros fabricantes pueden ofrecer

  • NVMe-Of nativo
  • Bloques de datos de 512bytes
  • Velocidades inferiores al ms
  • Capacidades de almacenaje de datos brutales
  • Herramientas cloud de monitoreo y de análisi de capacidades
  • Migraciones NDU garantizadas
  • Una sola arquitectura, miles de opciones
  • Snapshots immutables de volúmenes
  • Un 99,999999% de disponibilidad

Poco a poco iré colgando más noticias sobre este fabricante, por ejemplo, como es capaz de deduplicar tanto y tan rápido, que es el QLC que usa la FlashArray //C y porqué permite estas capacidades de almacenaje con 4ms de latencia, el monstruo FlashBlade para grandes silos de datos en un solo appliance, la replicaciones Active – Active, el sistema de snapshot… Si me vais siguiendo, os iré informando de este maravilloso producto de almacenaje.