Storage Spaces Direct–Windows 2016

Lors d’un précédent billet nous avions exploré les possibilités offertes par Windows Server 2016 liées au disaster recovery, le storage replica.

Dans ce billet, je spécifiais clairement qu’il s’agissait d’une solution de disaster recovery, et non pas de haute disponibilité. Alors, quid de la HA ?

La nouvelle mouture de Windows Server nous offre la fonctionnalité de Storage Spaces Direct. Afin de concurrencer Nutanix pour les environnement hyper-convergés, ou tout simplement pour offrir une fonctionnalité équivalente à VMware Virtual SAN, Microsoft propose ainsi de répartir le stockage sur les différents nœuds d’un cluster. Ainsi les disques locaux de chaque machine peuvent être agrégés afin d’offrir un espace de stockage vu comme une seule entité depuis le cluster.

Il est possible de passer par une connexion SAS pour des disques JBOD

Storage Spaces Direct with JBOD

Mais bien plus intéressant, il est aussi possible de faire fonctionner le Storage Spaces Direct avec des disques SATA.

Storage Spaces Direct with internal disks

L’intérêt, me direz-vous ? Il set double : soit on part sur une logique de réduction des couts, argument choc pour les DSI et Directeurs Financiers, soit on mise sur la performance avec des disques NVMe (par exemple une carte Intel Solid-State Drive 750 Series, 400GB, 400$    parfait pour des petits tests à 430 000 Read IOPS en 4K  Sourire ) ou bien des disques SSD (jusqu’à 4TB actuellement, 8TB prévus pour 2016, avec des durées de vie tout a fait correctes). Ajoutez à cela un peu de réseau à faible latence (type Mellanox) entre les serveurs, et oui, croyez moi, cela peut être franchement très performant.

Dans la CTP actuelle, la mise en place de Storage Spaces Direct requiert un minimum de 4 nœuds. Autant partir sur 4 machines virtuelles pour la démonstration, donc pas forcément de respect des best practices pour les réseau, les contrôleurs SCSI, etc …

for ($i=1; $i -le 4; $i++) 
{
    $VmName      = "Conseil IT - Win2016-$i"
    $VmMemory    = 4GB				               
    $VhdPath     = "E:\VHD"			       

    $NetworkSwitch = "External Network"	
    $WindowsISO    = "C:\Sources\en_windows_server_technical_preview_2_x64_dvd_6651466.iso"	

    
    New-VM -Name $VmName  `
                -MemoryStartupBytes $VmMemory `
                -NewVHDPath $VhdPath\$VmName.vhdx `
                -NewVHDSizeBytes 60000000000 `
                -SwitchName $NetworkSwitch `
                -Generation 2

    Set-VMProcessor -VMName $VmName  -Count 4
    Add-VMDvdDrive  -VMName $VmName  -Path $WindowsISO

    Enable-VMIntegrationService -VMName $VmName  `
                                -Name "Guest Service Interface"
}

Une fois les VM crées et configurées (changement de nom, intégration dans un domaine, paramétrage Windows, …), on ajoute les fonctionnalités nécessaires :

Add-WindowsFeature -Name File-Services, Failover-Clustering -IncludeManagementTools

Sur l’hyperviseur, on ajoute ensuite les disques “locaux”, des fichiers VHDX dans notre exemple. Pour chaque VM, 4 disques vont être ajoutés simulant ainsi plusieurs disques locaux.

for ($i=1; $i -le 4; $i++) 
{
     $VmName      = "Conseil IT - Win2016-$i"
     $VhdPath     = "E:\VHD"		

 
    for ($j=1; $j -le 4; $j++) 
    {

        New-VHD -Dynamic `
                -Path $VhdPath"\StoragePool$i-$j.vhdx" `
                -SizeBytes 10GB

        Add-VMHardDiskDrive  -VMName $VmName  `
                             -Path $VhdPath"\StoragePool$i-$j.vhdx" `
                             -ControllerType SCSI -ControllerNumber 0
    }
}

Je n’ai pas besoin de beaucoup d’espace pour les test, c’est pour cela que j’ai choisi de créer des fichiers de 10GB seulement.

Attention toutefois à ce point, car en production, il faudra tenir compte de la tolérance de panne qui va recopier les blocs sur 3 disques au minimum, donc un espace “réellement” disponible très inférieur à la somme des tailles des disques.

image

Une fois cette étape franchie, repartons dans une des VMs, connecté avec un compte du domaine afin de former le cluster.

New-Cluster -Name Win2016-ha -Node "Win2016-1", "Win2016-2", "Win2016-3", "Win2016-4" -NoStorage

Reste maintenant la petite subtilité qui permet au cluster de “profiter” du stockage local (ou DAS : Direct Attached Storage) : activation du Storage Space Direct.

(Get-Cluster).DASModeEnabled=1

 

Quelques secondes de patience et il est ensuite possible de lister les disques pouvant être “poolés” »

Get-StorageSubSystem  -Name Win2016-ha.conseilit.local | Get-PhysicalDisk

image

Tout comme le rapport du Test-Cluster dans lequel le test est inclus

Test-Cluster -Node "Win2016-1", "Win2016-2", "Win2016-3", "Win2016-4" `
             -Include “Storage Spaces Direct”,Inventory,Network,”System Configuration”

 

image

image

Reste à créer le pool en utilisant tous les disques présents :

New-StoragePool  -StorageSubSystemName Win2016-ha.conseilit.local `
                    -FriendlyName SP01 -WriteCacheSizeDefault 0 `
                    -FaultDomainAwarenessDefault StorageScaleUnit `
                    -ProvisioningTypeDefault Fixed `
                    -ResiliencySettingNameDefault Mirror `
                    -PhysicalDisk  (Get-StorageSubSystem  -Name Win2016-ha.conseilit.local | Get-PhysicalDisk)

 

Dans le console de gestion du cluster, on peut alors voir les enclosures et le pool

image

image

A ce moment de la partie, le pool est créé. reste juste à l’utiliser en créant un (ou plusieurs) storage space (que l’on pourrait aussi nommer disque virtuel si le nom storage space ne vous évoque rien). Le schéma suivant résume bien la situation : des disques locaux, agrégés dans un storage pool, sur lequel on va créer un ou plusieurs storage spaces.

Storage Spaces Direct storage stack

Lorsque le storage space est créé, reste ensuite à créer un volume qui sera exploitable par le cluster : un disque CSV.

New-Volume -StoragePoolFriendlyName SP01 `
           -FriendlyName VDSQL01 `
           -PhysicalDiskRedundancy 2 `
           -FileSystem CSVFS_REFS `
           -Size 20GB

 

image

Mission accomplie … Le disque CSV est créé et utilisable ! Ce volume est réparti sur l’ensemble des 4 nœuds du cluster, ce qui procure de la haute disponibilité. Pour du disaster recovery, ce n’est pas suffisant, car il faut un minimum de 3 nœuds actifs pour que la ressource soit UP, il faudrait donc 6 nœuds dans le cluster, 3 dans caque Datacenter par exemple.

Quel cas d’usage ? Pour l’instant Microsoft ne communique qu’autour d’Hyper-V. Logique, la cible, c’est clairement Nutanix.

image

Mais les lecteurs attentifs auront noté le nom (FriendlyName) que j’ai donné à mon volume … Sourire

Happy Storage Spaces Direct and Stay tuned !

A propos Christophe

Consultant SQL Server Formateur certifié Microsoft MVP SQL Server MCM SQL Server 2008
Cet article, publié dans Hyper-V, Windows, est tagué , , , . Ajoutez ce permalien à vos favoris.

7 commentaires pour Storage Spaces Direct–Windows 2016

  1. Ping : SQL Server 2016-Instance en cluster-Storage Spaces Direct | Christophe LAPORTE – Consultant SQL Server

  2. ced666 dit :

    Bonjour Christophe,

    j’ai voulu utiliser la fonctionnalité Storage Spaces Direct à partir de Windows 2016 Standard Technical preview 5 sur 4 nœuds en Cluster. IL était impossible pour moi d’activer Get-Cluster).DASModeEnabled=1, maessage d’erreur pour me dire que l’objet DASModeEnabled n’existe pas. Et même j,’ai un fait un test cluster avec prise en compte Direct Spaces Storage, et dans le rapport, j’ai plusieurs messages en critical en m’indiquant « système d’exploitation non pris en charges »‘. Est-ce que la version Datacenter de Windows 2016 doit être utilisée pour pouvoir profiter de cette fonctionnalité ? C’est un peu étonnant, car pour le service de fichier en cluster, on est quand même pas obligé de passer une version Datacenter pour utiliser le stockage en local sur les nœuds. j’ai l’impression que cette fonctionnalité est surtout intéressante pour HYPER-V. J’ai n’ai trouvé aucune information à ce sujet.
    Pouvez-vous m’indiquer si le problème que je rencontre est vraiment lié à la version Standard de Windows 2016 ?

    Je souhaiterai vraiment utiliser cette fonctionnalité, car même sans baie de stockage, on sera capable de faire de la haute disponibilité avec du stockage local.

    Je vous remercie par avance pour votre aide.

    Cédric TURPIN

    • Christophe dit :

      Bonjour

      Tant que la version RTM n’est pas publiée, la syntaxe et les cmdlets sont susceptibles de changer. Il semble que ce soit le cas pour le S2D.
      Essayez :
      Enable-ClusterStorageSpacesDirect -Cluster « Win2016-ha »
      ou
      Get-Cluster -Cluster « Win2016-ha » | Enable-ClusterStorageSpacesDirect

      Concernant les SKU, je n’ai pas d’information sur les fonctionnalités présentes dans une éditons ou l’autre. Jusqu’à présent, la déférence se faisait au niveau des licences des VMs entre Standard et Datacenter. Il serait dommage que pour Windows 2016 Microsoft ait fait un petit retour en arrière et conditionne des fonctionnalités à l’édition.

      Hyper-V est clairement la cible pour le S2D, afin de concurrencer Nutanix, Simplivity, VMware, Cisco et autres acteurs de l’hyperconvergeance qui devrait semble constituer la norme en virtualisation pour les quelques années à venir.

      Christophe

      • ced666 dit :

        Bonjour,

        merci beaucoup pour votre réponse, je vais tenter les deux commandes ce soir et je vous ferai un retour.

        Cédric

  3. ced666 dit :

    Bonjour,
    les commandes ne fonctionnent pas et j’ai réalisé une validation du cluster. Sur 4 noeuds, j’ai mis uniquement le premier noeud en version DataCenter pour analyser les erreurs.
    et j’ai les trois messages d’erreurs sur les 3 noeuds qui ont la version standard:

    Une édition du système d’exploitation qui ne qui prend pas en charge Storage Spaces direct est installée sur noeud2, noeud3 et noeud 4.
    Et en valeur sur le noeud 1, jai Système d’exploitation prenant en charge Storage Spaces Direct: TRUE.
    CA montre bien que pour utiliser ce composant, il faut utiliser une édition DAtacenter. JE trouve ça assez dommage car le coût sera non négligeable car en prérequis, il faut 4 noeuds au minimum pour utiliser cette fonctionnalité. Donc licence datacenter * 4 et au nombre de coeur logique.
    Je me dis aussi que peut-être ils ont oublié d’apporter cette fonctionnalité dans l’édition Standard mais j’ai un un doute.

    Merci pour votre aide.

    Cédric

  4. ced666 dit :

    Bonjour Christophe,

    merci pour ce retour. Je vais donc réinstaller mes VM sous Windows 2016 Datacenter et réaliser les tests. Mon objectif, c’est d’utiliser le stockage local de chacun des nœuds et le monter en cluster de fichier sans faire appel à une baie de stockage.

    J’espère sincèrement que le Storage Spaces Direct sera aussi disponible avec l’édition Standard.

    Cédric

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s