Microsoft Storage Spaces DIRECT (S2D)

En commençant avec Windows Server 2012 et Windows 8, Microsoft a introduit la fonctionnalité appelée Storage Spaces. Cette technologie permet de virtualiser le stockage.

Auteur Thomas Taglicht
Date 22.11.2016
Temps de lecture 6 Minutes

En commençant avec Windows Server 2012 et Windows 8, Microsoft a introduit la fonctionnalité appelée Storage Spaces.

Cette technologie permet de virtualiser le stockage :

  • en regroupant des disques standards du marché dans des pools de stockage puis
  • en créant des disques virtuels appelés espaces de stockage à partir de la capacité disponible dans les pools de stockage selon le schéma ci-dessous

Disques physiques -> Pool de stockage -> Disques virtuels -> Volumes

L’organisation des volumes se fait selon le nombre de disques physiques subjacents et en écrivant par bandes (stripes) sur un ensemble de disques appelés colonnes (columns). Storage Spaces peut décider du nombre de colonnes et de la taille des unités de bandes (interleave). Ou alors, l’opérateur peut utiliser Powershell pour le définir à sa guise en utilisant les comandlets New-VirtualDisk avec les paramètres NumerOfColumns et Interleave. Ce tableau devrait donner une bonne idée de la question :

Resiliency type Minimum number of columns Column-to-disk correlation Minimum number of disks Maximum column count
Simple (no resiliency) 1 1:1 1 N/A
Two-way mirror 1 1:2 2 N/A
Three-way mirror 1 1:3 5 N/A
Single Parity 3 1:1 3 8
Dual Parity 7 1:1 7 17

Storage Spaces Direct introduit dans Windows Server 2016 utilise des serveurs ordinaires avec des disques connectés localement pour créer un stockage hautement évolutif et de haute disponibilité à travers tous les serveurs participants. Défini par logiciel (software-defined storage) ceci revient à une fraction du coût des réseaux SAN ou NAS traditionnels. Les dernières innovations matérielles tels que les réseaux RDMA (remote direct memory access) et NVMe (Non-Volatile Memory Express) offrent une efficacité et des performances inégalées. Idéal pour des clusters à basculement, le stockage est embarqué avec le cluster et un SAN devient superflu.

Les avantages se trouvent dans l’implémentation très simple, la performance, la tolérance de pannes, l’exploitation efficiente et intelligente des ressources serveur, la gestion et la surveillance passive et active ainsi que de l’évolutivité jusqu’à 16 serveurs et 400 unités de stockage.
Voici un diagramme conceptuel de Storage Spaces Direct :
converged-full-stack

Essayez-le !

Voici un lab utilisant 4 serveurs Windows Server 2016 RTM avec la fonctionnalité de cluster à basculement :

Pour commencer, préparer l’environnement de lab. Dès que vous avez 4 serveurs virtuels fonctionnels (je les appelle : lab-ws2016-1,lab-ws2016-2,lab-ws2016-3,lab-ws2016-4) vous pouvez accélérer l’ajout des disques en suivant la PHASE 1 du script Powershell suivant :

###########################################################################
# Demo Storage Spaces Direct (SSD) on a Faliover Cluster. #
# by Thomas Taglicht #
# #
# All Lab VMs are out of the box Windows Server 2016 RTMs #
# You may get yours here free: #
# https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2016 #
###########################################################################

# PHASE 1. prepare VM hard drives for S2D. Do this on the Hyper-V Host.

# Get all Lab VMs who’s name start with LAB-WS2016- into a variable

$LabVMs = get-vm | where {$_.vmname -like “LAB-WS2016-?”}

# Make a loop through all Lab VMs

foreach ($VM in $LabVMs) {

# Create 3 (or more) virtual disks and add them to each Lab VM
# Note: “D:\TT-VMs\” is the drive and folder where my 4 VM’s folders reside. Replace this by yours.

for ($i=1; $i -le 3; $i++) {
$VMDiskPath = “D:\MyVmFolder\” + $VM.VmName + “\Disk” + $i + “.vhdx”
NEW-VHD -Dynamic $VMDiskPath -SizeBytes 20GB
ADD-VMHardDiskDrive -vmname $VM.VmName -path $VMDiskPath -ControllerType SCSI
}
}

# PHASE 2. install the Failover Cluster functionality. Do this on the the first VM.

Invoke-Command -ComputerName lab-ws2016-1,lab-ws2016-2,lab-ws2016-3,lab-ws2016-4 -ScriptBlock {Install-WindowsFeature -Name file-services, failover-clustering -IncludeManagementTools}

# Use the Failover Cluster Manager to create a 2 node cluster

# Enable cluster storage spaces direct

Enable-clusterstoragespacesdirect

# Check results in the Failover Cluster Manager Storage Node

# Add more Failover Cluster nodes and watch the results in the Failover Cluster Manager Storage Node.

###########################################################################
# #
# END SCRIPT #
# #
###########################################################################

La PHASE 2 du script permet d’accélérer l’installation de la fonctionnalité de cluster à basculement sur les 4 serveurs et d’activer la fonction « Cluster Storage Spaces DIRECT », après avoir créé un cluster de deux nœuds par l’outil d’administration graphique du cluster.
L’exercice consiste à commencer avec 2 nœuds puis de rajouter d’autres nœuds pour voir l’évolution automatique sinon on peut ajouter les 4 nœuds dès le départ.

Voici le cluster à basculement après que les 4 nœuds aient été ajoutés.
Cluster UP

Ce cluster fonctionne selon le modèle sans témoin et S2D est activé.
Cluster Nodes

Observer la liste de 4 nœuds x 3 disques physiques. Remarquez également la colonne « Current Vote » indiquant que le cluster a automatiquement ajusté le nombre de votants à un chiffre impair.
Voici dans la section « Pools » le pool automatiquement créé avec son résumé :
Cluster Pool summary

Suivi de la vue des disques physiques :
Cluster Pool physical disks

Puis les disques virtuels créés à partir du pool :
Cluster Pool virtual disks

Voici enfin la vue des baies de disques (enclosures). Dans mon cas, ces disques sont des disques virtuels mais sur des serveurs physiques. Cela peut être des disques physiques attachés à l’intérieur du serveur d’une manière standard ou des baies de disques reliées par un bus de haute performance :
Cluster disk enclosures

Finalement, ces disques virtuels peuvent être utilisés pour des ressources de cluster ou comme « cluster shared storage » pour des machines virtuelles hautement disponibles ou des serveurs de fichiers évolutifs (actif/actif) (scale-out).
Cluster shared volume


A propos de l'auteur

Thomas Taglicht