Nous allons dans ce blog créer un cluster SOFS en utilisant Storage Spaces Direct (S2D).
Les nœuds du cluster seront des Windows Server 2016 Nano.
Ce blog n’a pas pour vocation de configurer le cluster dans des best practices ( RDMA, réseau CSV, …), mais seulement de présenter l’intégration de S2D dans le cluster.
Pour rappel, Storage Spaces Direct permet de créer un stockage hautement disponible avec le stockage local du serveur. C’est une grande avancée dans le modèle Software Define Storage (SDS) qui va simplifier la gestion des serveurs Hyperconvergés et permettre l’utilisation de certains types de disques comme les disques SATA, les disques NVME, qu’il n’était pas possible d’utiliser précédemment dans les Storage Space Cluster sous Windows 2012.

Notre Cluster sera constitué de 4 nœuds : Nano1, Nano2, Nano3 et Nano4 avec chacun deux disques disponible.
Ajouts des serveurs Nano dans le domaine
Depuis un contrôleur de domaine, on provisionne nos 4 serveurs via la commande djoin /provision.
Exemple :
djoin.exe /provision /domain labo.local /machine NanoX /savefile C:\odjblobNanoX

Copier les fichiers respectifs générés sur les serveurs Nanos (via les partages administratifs par exemple).
Ensuite, on se connecte sur les 4 serveurs Nano depuis l’hyperviseur via PowerShell Direct (nécessite Windows 10 ou Windows Server 2016 pour cette méthode) afin de les intégrer dans le domaine via la commande djoin /requestodj.
Exemple :
djoin /requestodj /loadfile C:\odjblobNanoX /windowspath c:\windows /localos
Et on reboote les serveurs.




Désormais, les 4 serveurs Nanos sont dans le domaine.
Exemple pour Nano1

Maintenant, depuis une machine disposant des outils RSAT FailoverClusters 2K16 dans le domaine, on créé le cluster Cluster-Nano avec les nœuds Nano1, Nano2, Nano3 et Nano4.
New-Cluster -Name "Cluster-Nano" -Node Nano1, Nano2, Nano3, Nano4 –NoStorage

Depuis la MMC Failover Cluster, on peut désormais voir notre Cluster-Nano.

Activation du Storage Space Direct sur le cluster
Il faut activer au niveau du cluster la fonctionnalité Storage Space Direct via la commande suivante :
Get-cluster Cluster-Nano | Enable-ClusterStorageSpacesDirect

Les DAS de vos nœuds sont visibles dans Enclosures.

Création du Storage Pool et du Virtual Disk
Nous allons maintenant générer un Storage Pool depuis nos disques locaux des nœuds du cluster.

Spécifier un nom de Storage Pool

Sélectionner les disques devant participer au Storage Pool (ici sont affichés les 2 disques * 4 nœuds soit 8 disques)



Le Storage Pool est désormais créés.

Nous allons maintenant créer un Virtual Disk sur ce Storage Pool.
Clic droit sur le Pool et New Virtual Disk


Sélectionner votre Storage Pool précédemment créé.

Donner un nom à votre virtual Disk


Dans notre exemple, nous allons créer un miroir avec une taille de 12 GB



Cocher la case Create a volume when this wizard closes

Créer maintenant le volume. Cliquer sur Next

Sélectionner le disque disponible présent au sein du cluster

Allouer toute la capacité disponible au volume.

N’affecter pas de lettre de montage (inutile car il s’agira d’un volume CSV)

Donner un label et formater en ReFS



La ressource disque est maintenant disponible.

Ajouter ce disque en tant que CSV.


Désactiver l’intégrité sur le CSV
Set-FileIntegrity C:\ClusterStorage\Volume1 –Enable $false

Ajout du role SOFS dans le cluster
Si désormais vous souhaitez ajouter le rôle SOFS au cluster, vous aurez un message d’erreur.

Vous devez pour cela activer sur les nœuds du cluster la feature File-Services car actuellement celle-ci est désactivée.

Ajout de la feature sur les nœuds :
invoke-command -computer nano1 -scriptblock {Get-WindowsOptionalFeature -online -featureName File-Services | Enable-WindowsOptionalFeature -online}
invoke-command -computer nano2 -scriptblock {Get-WindowsOptionalFeature -online -featureName File-Services | Enable-WindowsOptionalFeature -online}
invoke-command -computer nano3 -scriptblock {Get-WindowsOptionalFeature -online -featureName File-Services | Enable-WindowsOptionalFeature -online}
invoke-command -computer nano4 -scriptblock {Get-WindowsOptionalFeature -online -featureName File-Services | Enable-WindowsOptionalFeature -online}

Désormais, vous pouvez ajouter votre rôle SOFS.





Il ne vous reste plus qu’à ajouter des partages de fichiers de type SMB Share –Applications sur le CSV reposant sur du Storage Space Direct et vous pourrez héberger vos VMs.

(Après avoir bien entendu relié le tout via du SMB 3 en exploitant le MultiChannel et le RDMA.
)