SQL Server 2016 supporte Windows Server 2016 Storage Spaces Direct

La nouvelle a été publiée il y a quelques jours sur le blog SQL Server. Il est à présent possible d’installer un cluster de basculement SQL Server (FCI) sur une infrastructure hyper-convergée, donc sans faire appel à un stockage partagé de type SAN (ou bien à des mécanismes de recopie de blocs enter volumes locaux comme SIOS Datakeeper et consorts).

Storage Spaces Direct with SQL Server

Il y a un peu plus d’un an, j’ai publié un article sur le sujet. Avec un gros Warning sur le fait que la configuration n’était pas supportée. Et bien, avec les versions RTM de Windows 2016 et SQL Server 2016, il est a présent supporté d’installer un FCI sur un stockage de type Storage Spaces Direct (S2D pour les intimes).

J’en ai profité pour remonter rapidement une plateforme de tests. Les scripts fournis à l’époque fonctionnent globalement, même si de légères différences sont apparues. Voici une version à jour permettant la construction du S2D. Un cluster 4 nœuds, et 2 instances en cluster.

1- Installation de Windows 2016 édition datacenter, ajout des serveurs dans le domaine

2-Paramétrage Windows

# "High performance", "Balanced", "Power saver"
function SetPowerPlan([string]$PreferredPlan) 
{ 
    Write-Host "Setting Powerplan to $PreferredPlan" 
    $guid = (Get-WmiObject -Class win32_powerplan -Namespace root\cimv2\power -Filter "ElementName='$PreferredPlan'").InstanceID.tostring() 
    $regex = [regex]"{(.*?)}$" 
    $newpowerVal = $regex.Match($guid).groups[1].value 

    # setting power setting to high performance 
    powercfg -S  $newpowerVal 
}

	
# Set power option
SetPowerPlan "High performance"


Install-WindowsFeature -Name Net-Framework-Core -Source D:\sources\sxs
Install-WindowsFeature -Name Failover-Clustering  
Install-WindowsFeature -Name File-Services
Install-WindowsFeature -Name RSAT-Clustering      
Install-WindowsFeature -name RSAT-Clustering-Mgmt 

# disable open server manager at logon
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\ServerManager' -Name DoNotOpenServerManagerAtLogon -Value 1
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\ServerManager' -Name CheckedUnattendLaunchSetting  -Value 0
 
# enable RDP
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections -Value 0
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1
    
# disable FW / testing purpose
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False

3- Ajout de disques de données sur les 4 serveurs (attention, ne pas initialiser ni formater ces disques)

4 – Formation du cluster

Test-Cluster -Node Win16S2D1,Win16S2D2,Win16S2D3,Win16S2D4 -Include "Storage Spaces Direct",Inventory,Network,"System Configuration"  

New-Cluster -Name ClustS2D -Node Win16S2D1,Win16S2D2,Win16S2D3,Win16S2D4 -NoStorage

5- Nettoyage des disques et activation du S2D.

icm (Get-Cluster -Name ClustS2D | Get-ClusterNode) {  
    Update-StorageProviderCache  
    Get-StoragePool |? IsPrimordial -eq $false | Set-StoragePool -IsReadOnly:$false -ErrorAction SilentlyContinue  
    Get-StoragePool |? IsPrimordial -eq $false | Get-VirtualDisk | Remove-VirtualDisk -Confirm:$false -ErrorAction SilentlyContinue  
    Get-StoragePool |? IsPrimordial -eq $false | Remove-StoragePool -Confirm:$false -ErrorAction SilentlyContinue  
    Get-PhysicalDisk | Reset-PhysicalDisk -ErrorAction SilentlyContinue  
    Get-Disk |? Number -ne $null |? IsBoot -ne $true |? IsSystem -ne $true |? PartitionStyle -ne RAW |% {  
        $_ | Set-Disk -isoffline:$false  
        $_ | Set-Disk -isreadonly:$false  
        $_ | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false  
        $_ | Set-Disk -isreadonly:$true  
        $_ | Set-Disk -isoffline:$true  
    }  

Get-Disk |? Number -ne $null |? IsBoot -ne $true |? IsSystem -ne $true |? PartitionStyle -eq RAW | Group -NoElement -Property FriendlyName  

} | Sort -Property PsComputerName,Count


Enable-ClusterStorageSpacesDirect

Un disque CSV est automatiquement créé par la commande Enable-ClusterStorageSpacesDirect et porte le nom de ‘S2D on ClustS2D’

6 – Création du volume

New-Volume -StoragePoolFriendlyName 'S2D on ClustS2D' `
           -FriendlyName VDSQL01 `
           -PhysicalDiskRedundancy 2 `
           -FileSystem CSVFS_REFS `
           -Size 20GB

Il ne reste ensuite qu’à installer plusieurs instances SQL Server en FCI en utilisant le disque CSV (marche à suivre ici ou ).

And that’s all !

 

imageimageimage

J’aurais aimé ne plus voir le GUID du pool lors du choix du volume dans l’installation de l’instance SQL, mais cela n’a pas évolué. Dommage.

Je reste persuadé que ce type d’infrastructure est ce vers quoi nous devons tendre dans l’avenir. Non pas que je n’aime pas les SAN et tous les avantages qu’ils offrent, mais avec les disques flash attachés localement (sans stack AHCI) ou dans un emplacement DIMM, la performance est clairement à l’avantage des disques locaux.

Donc, d’un point de vue performance, ce type d’architecture est tout a fait viable. D’autant que la volumétrie peut tout a fait être au rendez vous en utilisant les ressources de chacun des nœuds qui peuvent mixer des disques ultra rapides (NVMe, NVDIMM), des disques SSD Sata ou SAS, voire des disques rotatifs.

D’un point de vue architecture, les principaux acteurs, dont Microsoft, poussent énormément vers le “Cloud”. Et monter un FCI avec un SAN dans un cloud public, on oublie. Alors qu’une infrastructure hyper-convergée peut tout à fait se satisfaire des contraintes d’un cloud public Et être mise en œuvre sur vos serveur dans vos datacenters. On retrouve de la résilience et de la disponibilité, tout en ajoutant de manière extrêmement simple la répartition géographique des nœuds si nécessaire.

Si vous souhaitez mettre en œuvre un cluster de basculement ou bien des groupes de disponibilités, n’hésitez pas à me contacter afin de vous conseiller sur le choix de la solution la plus appropriée à vos besoins.

Enjoy

A propos Christophe

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

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