Azure Stack on NVMe

I’m reposting information that has since been taken down as Microsoft doesn’t currently support this method – meaning use at your own risk.

A. Enable NVMe and other bus type support
———————–

In order to support NVMe, the first thing you need to do is modify the Pre-check and allow the bus type “NVMe”

1. Mount MicrosoftAzureStackPOC.vhdx in the downloaded package.

2. Open X:\AzureStackInstaller\PoCDeployment\Invoke-AzureStackDeploymentPrecheck.ps1 with PowerShell ISE.

3. In line 62, add the highlighted part.

$physicalDisks = Get-PhysicalDisk | Where-Object { $_.CanPool -eq $true -and ($_.BusType -eq ‘RAID’ -or $_.BusType -eq ‘SAS’ -or $_.BusType -eq ‘SATA’ -or $_.BusType -eq ‘NVMe’) }

By default Azure Stack Technical Preview 1 only supports HDD or SSD+HDD configuration. It doesn’t support All-Flash (All SSD)* or NVMe+SSD. The reason is when we enabled the storage space direct (“Enable-ClusterS2D”), we didn’t specify any parameter. Storage Space Direct will use those NVMe drives and SSDs as cache devices instead of persistent storage. In order to support the following storage configuration, we need to modify the deployment scripts and append different parameters. For more information, please refer to Claus Joergensen’s blog.
http://blogs.technet.com/b/clausjor/archive/2015/11/19/storage-spaces-direct-under-the-hood-with-the-software-storage-bus.aspx

  • B: NVMe+HDD
  • C: NVMe+SSD
  • D: All NVMe

*Notes: There is one exception here. If you’re using non pass thru bus type (e.g., RAID, iSCSI or File Backed Virtual), Storage Space Direct could not recognize the media type. It will mark all the disks as “Unspecified” instead of HDD or SSD. In that case, Storage Space Direct will not use those drives as cache device even if you didn’t disable the S2DCacheMode.

B. Enable the Tiered Storage with different bus type
————————

In NVMe+HDD configuration, we don’t need specify any parameter. However since NVMe drives’ bus type is NVMe and normally HDD’s bus type is SAS or SATA. By default deployment script will only deploy Azure Stack on the drives with same bus type. So besides to enable NVMe support in Pre-Check, you also need to modify the script “X:\AzureStackInstaller\PoCFabricInstaller\CreateStoragePool.ps1” and remove the highlighted part.

Line 23:

$pdisks = $pdisks | ? { $_.CanPool -eq $true -and $_.BusType -eq $DiskType }
LogDisks “Disks have been picked up” $pdisks

for ($i=0; $i -lt 3 -and $pdisks -eq $null; $i++) {
  sleep 5
  $pdisks = $clussubsystem | Get-PhysicalDisk | ? { $_.CanPool -eq $true -and $_.BusType -eq $DiskType }
}

Now you may deploy Azure Stack TP1 w/ NVMe+HDD configuration.

C. Deploy on Tiered Storage with NVMe and SSD drives
————————

In order to support NVMe+SSD configuration, besides follow the steps in the section A and B, you also need to modify the script X:\AzureStackInstaller\PoCFabricInstaller\CreateFailoverCluster.ps1 and add the highlighted part.

Line 123:

Enable-ClusterS2D -S2DCacheDevice NVMe

D. Deploy on All-NVMe Storage
————————

In order to support All NVMe configuration, you need to follow the steps in Section A besides follow the steps in section A first, then modify the script X:\AzureStackInstaller\PoCFabricInstaller\CreateFailoverCluster.ps1 and add the highlighted part.

Line 123:

Enable-ClusterS2D -S2DCacheMode Disable

Now you may dismount the DataImage VHD (MicrosoftAzureStackPOC.vhdx) and kick off the deployment.

Leave a Reply

Your email address will not be published. Required fields are marked *