Prerequisites to Using the Quick Start Guide
Before you begin, ensure that the following requirements are met:
Everpure FlashArray
-
A deployed and configured Everpure FlashArray.
-
Fibre Channel (FC) must be enabled and configured on the array, with active zoning and connectivity established between the FlashArray and all Azure Local nodes.
-
Minimum Recommended Purity Version: 6.5.3Note: Currently FC is the only supported protocol for external block storage on Azure Local.
Before connecting FlashArray storage, the Azure Local cluster must be deployed and registered with Azure.
-
Refer to the Microsoft Azure Local Deployment Documentation for hardware validation, networking and cloud deployment steps.
-
A minimum of 1 Azure Local node is required
-
Minimum Azure Local Version: 2604
-
Ensure that the Azure Local Cluster Name Object (CNO) is created and that the cluster and its nodes are healthy and visible. This can be verified in several ways:
-
Azure Portal: Azure Local Connection Status
-
In the Azure portal, navigate to the Azure Local cluster resource and review the Overview page. The cluster should show a healthy and connected status with no errors. This indicates that the cluster identity, including the CNO, is functioning correctly with Azure.
-
-
Azure Portal: Cluster Nodes (Resources)
-
Within the same Azure Local resource, review the list of machines under Resources. All cluster nodes should be present, online, and reporting a healthy state. This confirms that the nodes are properly joined to the cluster and recognized by Azure.
-
-
At a high-level, the Azure Local integration with FlashArray includes the following steps once the prerequisites are completed:
-
Configure the Azure Local nodes
-
Everpure FlashArray Setup
-
Azure Local Cluster Storage Configuration
While graphical interfaces such as Windows Admin Center or Failover Cluster Manager are available for setup and administration, PowerShell is the recommended method for the initial setup of Azure Local deployments. PowerShell provides a higher degree of precision, consistency across nodes, and scriptability for configurations. This guide focuses on PowerShell-based execution, supplemented by GUI screenshots to illustrate key validation points.
IMPORTANT: The following script block is a collection of reference commands for configuring Nutanix/Azure Local environments with Everpure FlashArray.
-
Everpure PowerShell SDK: Commands are run from a management workstation to configure the FlashArray.
-
Remote PowerShell/Windows: Commands are run within an Azure Local node session to configure MPIO, disk initalization and Cluster Shared Volumes.
#PreReq
if (!(Get-Module -ListAvailable -Name PureStoragePowerShellSDK2)) { Install-Module -Name PureStoragePowerShellSDK2 -Force -AllowClobber -Scope CurrentUser }; Import-Module -Name PureStoragePowerShellSDK2
#Connect to Array Endpoint
$Conn = Connect-PFA2Array -Endpoint "<FlashArray_Management_VIP>" -Credential (Get-Credential) -IgnoreCertificateError
#Create Host Object(s)
New-Pfa2Host -Array $Conn -Name "<Node_Name>" -
Update-Pfa2Host -Array $Conn -Name "<Node_Name>" -Wwns "<WWN_1>", "<WWN_2>"
New-Pfa2HostGroup -Array $Conn -Name "<Host_Group_Name>"
New-Pfa2HostGroupHost -Array $Conn -GroupName "<Host_Group_Name>" -MemberName "<Node_1_Name>", "<Node_2_Name>"
#Create Volume
New-Pfa2Volume -Array $Conn -Name "<Volume_Name>" -Provisioned <Size_in_TB>TB
#Add Volume to HostGroup
New-Pfa2Connection -Array $Conn -HostGroupName "<Host_Group_Name>" -VolumeName "<Volume_Name>"
#Enter Azure Local Node for Remote Powershell
Enter-PSSession -ComputerName <Node_Name> -Credential (Get-Credential)
#Install MPIO
Install-WindowsFeature -Name Multipath-IO
#Claim Pure FlashArray as an MPIO Target
New-MSDSMSupportedHw -VendorId "PURE" -ProductId "FlashArray"
#Set Default Load Balance Policy
Set-MSDSMGlobalDefaultLoadBalancePolicy -Policy RR #Less Than 10 Paths
Set-MSDSMGlobalDefaultLoadBalancePolicy -Policy LQD #More than 10 Paths
#Configure MPIO Settings
Set-MPIOSetting -NewPathRecoveryInterval 20 -NewPathVerificationPeriod 30 -NewPDORemovePeriod 30
#Rescan Storage
Update-HostStorageCache
#Identify Disk
Get-Disk
$DiskNumber = Disk_Number
#Online Disk
Set-Disk -Number $DiskNumber -IsOffline $false
#Initialize Disk
Initialize-Disk -Number $DiskNumber -PartitionStyle GPT
#Partition Disk
$Partition = New-Partition -DiskNumber $DiskNumber -UseMaximumSize
#Format Disk
Get-Partition -DiskNumber $DiskNumber -PartitionNumber $Partition.PartitionNumber | Format-Volume -FileSystem NTFS -AllocationUnitSize 65536 -NewFileSystemLabel "<Volume_Label>" -Confirm:$false
#Add Disk as Clustered Disk
$ClusterDisk = Get-Disk -Number $DiskNumber | Add-ClusterDisk
#Add Cluster Shared Volume
Add-ClusterSharedVolume -Name $ClusterDisk.Name
#Rename Cluster Shared Volume
(Get-ClusterSharedVolume -Name $ClusterDisk.Name).Name = "<New_CSV_Name>"