Skip to main content
Pure Technical Services

Working with Clustered Shared Volumes on a Windows Server Host

Currently viewing public documentation. Please login to access the full scope of documentation.

KP_Ext_Announcement.png

This article is intended for Windows Server versions 2012, 2012 R2, 2016, and 2019.

The first three workflow tasks should be completed before beginning the other items that this section is focused on configuring. There are two methods that will be shown, (1) Using Graphical User Interfaces (GUI) for the FlashArray and Windows Server Disk Management and (2) Using Windows PowerShell and Pure Storage PowerShell SDKv1.  

This article shows examples using the Resilient File System (ReFS) for Windows Server. Although it is supported for the Pure FlashArray, it is not currently recommended as it does not allow for the use of commands such as TRIM and UNMAP, as well as not being compatible with Offloaded Data Transfer (ODX).

Steps to Create, Connect and Configure

  1. Installing Multipath-IO (click to open linked article)
  2. Configuring Multipath-IO (click to open linked article)
  3. Setting the MPIO Policy (click to open linked article)
  4. Create FlashArray Volume(s)
  5. Connect FlashArray Volume(s) to a Host Group for Shared Storage (CSV)
  6. Manage FlashArray Volume(s) from Windows Server Failover Cluster Manager

 

This section assumes that there is a Pure Storage FlashArray setup and configured with hosts and all SAN/Network fabric connectivity in place.

FlashArray Management GUI

The steps outlined here can be used for new Volumes as well as restored snapshots, which are simply new volumes after restore.

Create FlashArray Volume(s) 

The FlashArray Management interface is very simple to use. Follow the below steps to create a volume. Repeat the same actions to create a volume named ReFS (optional).

1. Create a new volume named NTFS.

create_vol.png

Viewing the created NTFS volume.

create_vol2.png

 

Connect FlashArray Volume(s) to Host (or Host Group)

1. Connect the NTFS volume to SERVER08.

connecthost.png

Viewing the NTFS volume that is now connected to SERVER08.

connecthost2.png

 

Windows Server Disk Management

Manage FlashArray Volume(s) from Windows Server Host

1. Start Disk Management using Start > Run > diskmgmt.msc

diskmgmt_msc.png

2. Perform Rescan Disks.

WS2016_DiskMgmt_Rescan.png

3. Initialize disks by right-clicking on the Disk # and selecting Initialize Disk.

WS2016_DiskMgmt_InitDisk.png

4. The Initialize Disk dialog will open and indicate all of the disks that need to be initialized. For this example, there is Disk 1 (NTFS) and Disk 2 (ReFS) that will be initialized using GPT (GUID Partition Table). GPT is used to support disks larger than 2 TB.

WS2016_DiskMgmt_InitDisk_Completed.png

5. Create a volume by right-clicking on the disk partition and selecting New Simple Volume.

WS2016_DiskMgmt_NewSimpleVol.png

6. The New Simple Volume Wizard will open, click Next >.

WS2016_DiskMgmt_NewSimpleVol_Wiz1.png

7. Specify Volume Size, the default is used for use maximum size.

WS2016_DiskMgmt_NewSimpleVol_Wiz2.png

8. Assign Drive Letter or Path, the default is used of selecting the next available drive letter.

WS2016_DiskMgmt_NewSimpleVol_Wiz3.png

9. Format Partition, choose NTFS as the File system, 64K Allocation unit size (cluster size), and set the Volume label.

WS2016_DiskMgmt_NewSimpleVol_Wiz4.png

(Optional) To create an ReFS volume choose ReFS as the File system.

WS2016_DiskMgmt_NewSimpleVol_Wiz4_ReFS.png

10. Accept the settings from the wizard and click Finish.

WS2016_DiskMgmt_NewSimpleVol_Wiz5.png

The new volume(s) are now ready for use. 

Manage FlashArray Volume(s) from Windows Server Failover Cluster Manager

Regarding how to proceed updating the Pure code in a Clustered shared environment: If using Clustered Shared Volumes (CSVs) in a Cluster, MS Cluster Manager Service manages disk connections. Therefore, when the hosts that did own a volume go offline for a reboot, it will do a heartbeat (host owner of a CSV loses its volume access) and find a new host owner on its own to online the volume, without manual intervention.

Windows PowerShell

Create FlashArray Volume(s)

The volumes that will be used in the examples are based on the NTFS and ReFS file systems. The host that will be used is named SERVER01 and is running Windows Server 2016 with Windows PowerShell 5.0.

Following the Windows PowerShell examples assumes that the Pure Storage PowerShell SDK has been installed. If the PowerShell SDK has not been installed please see the Pure1 Support > Programming Interfaces > Windows PowerShell to get started.

1. Start a new Windows PowerShell session.

2. Create a connection to the FlashArray.

$FlashArray = New-PfaArray -EndPoint 10.1.1.1 -Credentials (Get-Credential) -IgnoreCertificateError

PS C:\> $FlashArray

Disposed   : False
EndPoint   : 10.1.1.1
UserName   : pureuser
ApiVersion : 1.7
Role       : ArrayAdmin
ApiToken   : 58db6abf-1933-553f-1628-0c6e207aba1e

3. Create two new volumes named ReFS and NTFS.

New-PfaVolume -Array $FlashArray -VolumeName 'ReFS' -Unit T -Size 1
New-PfaVolume -Array $FlashArray -VolumeName 'NTFS' -Unit T -Size 1

source  : 
serial  : 45084F3508BF461400011ACB
created : 2017-05-23T21:46:04Z
name    : ReFS
size    : 1099511627776

source  : 
serial  : 45084F3508BF461400011ACC
created : 2017-05-23T21:46:04Z
name    : NTFS
size    : 1099511627776

 

Connect FlashArray Volume to Host (or Host Group)

1. Connect ReFS and NTFS volumes to SERVER01.

PS C:\> New-PfaHostVolumeConnection -Array $FlashArray -VolumeName 'ReFS' -HostName 'SERVER08'
PS C:\>New-PfaHostVolumeConnection -Array $FlashArray -VolumeName 'NTFS' -HostName 'SERVER08'

vol  name     lun
---  ----     ---
ReFS Server08   1
NTFS Server08   2

If the volumes need to be visible to a cluster of Windows Server hosts then they need to be connected to a Host Group. The following steps show how to create a Host Group, add a Host, and then connect the volume to the Host Group.

PS C:\> New-PfaHostGroup -Array $f -Hosts 'SERVER08' -Name 'HOSTGROUP1'
PS C:\> New-PfaHostGroupVolumeConnection -Array $f -VolumeName 'ReFS1' -HostGroupName 'HOSTGROUP1'
PS C:\> New-PfaHostGroupVolumeConnection -Array $f -VolumeName 'NTFS1' -HostGroupName 'HOSTGROUP1'

hosts      name      
-----      ----      
{SERVER08} HOSTGROUP1
           HOSTGROUP1
           HOSTGROUP1
            
PS C:\>Get-PfaHostGroupVolumeConnections -Array $f -HostGroupName 'HOSTGROUP1' | Format-Table -AutoSize

vol   name       lun
---   ----       ---
ReFS1 HOSTGROUP1 254
NTFS1 HOSTGROUP1 253

 

Manage FlashArray Volume(s) from Windows Server Host

1. Rescan/update the Windows Server host, SERVER01 to see the new volumes.

PS C:\> Update-HostStorageCache

2. View the currently connected volumes to the Windows Server host. 

PS C:\> Get-Disk

Number Friendly Name         Serial Number                    HealthStatus         OperationalStatus      Total Size Partition Style
------ -------------         -------------                    ------------         -----------------      ---------- ----------
1      PURE FlashArray       45084F3508BF461400011ACB         Healthy              Online                       1 TB RAW
2      PURE FlashArray       45084F3508BF461400011ACC         Healthy              Online                       1 TB RAW
0      PURE FlashArray       73E940225A2A52BB0003AE86         Healthy              Online                     150 GB MBR

If the SAN Policy of the Windows Server host is kept at the default of OfflineShared when the volumes are connected to the host they will not come online automatically. Performing a Get-Disk will indicate that they have an OperationalStatus of Offline.

PS C:\> Get-Disk

Number Friendly Name     Serial Number                    HealthStatus         OperationalStatus      Total Size Partition Style     
------ -------------     -------------                    ------------         -----------------      ---------- ----------
1      PURE FlashArray   45084F3508BF461400011ACB         Healthy              Offline                      1 TB GPT       
2      PURE FlashArray   45084F3508BF461400011ACC         Healthy              Offline                      1 TB GPT       
0      PURE FlashArray   73E940225A2A52BB0003AE86         Healthy              Online                     150 GB MBR 

PS C:\> Get-Disk | Where-Object { $_.OperationalStatus -eq 'Offline' } | Set-Disk -IsOffline $False
PS C:\> Get-Disk

Number Friendly Name     Serial Number                    HealthStatus         OperationalStatus      Total Size Partition Style     
------ -------------     -------------                    ------------         -----------------      ---------- ----------
1      PURE FlashArray   45084F3508BF461400011ACB         Healthy              Online                       1 TB GPT       
2      PURE FlashArray   45084F3508BF461400011ACC         Healthy              Online                       1 TB GPT       
0      PURE FlashArray   73E940225A2A52BB0003AE86         Healthy              Online                     150 GB MBR  

3. Initialize the new volumes.

Set the -Number parameter from the output of Get-Disk. The Partition Style has been updated from RAW to GPT.

PS C:\> Initialize-Disk -Number 1 -PartitionStyle GPT
PS C:\> Initialize-Disk -Number 2 -PartitionStyle GPT
PS C:\> Get-Disk

Number Friendly Name       Serial Number                    HealthStatus         OperationalStatus      Total Size Partition Style
------ -------------       -------------                    ------------         -----------------      ---------- ----------
1      PURE FlashArray     45084F3508BF461400011ACB         Healthy              Online                       1 TB GPT
2      PURE FlashArray     45084F3508BF461400011ACC         Healthy              Online                       1 TB GPT
0      PURE FlashArray     73E940225A2A52BB0003AE86         Healthy              Online                     150 GB MBR

4. Create a new partition.

PS C:\> New-Partition -DiskNumber 1 -UseMaximumSize -AssignDriveLetter

   DiskPath: \\?\mpio#disk&ven_pure&prod_flasharray&rev_8888#1&7f6ac24&0&3632344139333730343530383446333530384246343631343030303131414342#{53f
56307-b6bf-11d0-94f2-00a0c91efb8b}

PartitionNumber  DriveLetter Offset                                                    Size Type
---------------  ----------- ------                                                    ---- ----
2                D           135266304                                           1023.87 GB Basic

PS C:\> New-Partition -DiskNumber 2 -UseMaximumSize -AssignDriveLetter

   DiskPath: \\?\mpio#disk&ven_pure&prod_flasharray&rev_8888#1&7f6ac24&0&3632344139333730343530383446333530384246343631343030303131414343#{53f
56307-b6bf-11d0-94f2-00a0c91efb8b}

PartitionNumber  DriveLetter Offset                                                    Size Type
---------------  ----------- ------                                                    ---- ----
2                E           135266304                                           1023.87 GB Basic

PS C:\> Get-Volume

DriveLetter FileSystemLabel FileSystem DriveType HealthStatus OperationalStatus SizeRemaining      Size
----------- --------------- ---------- --------- ------------ ----------------- -------------      ----
D                                      Fixed     Healthy      Unknown                     0 B       0 B
            System Reserved NTFS       Fixed     Healthy      OK                       169 MB    500 MB
C                           NTFS       Fixed     Healthy      OK                    117.59 GB 149.51 GB
E                                      Fixed     Healthy      Unknown                     0 B       0 B

5. Format volumes as NTFS and ReFS.

The below examples set the AllocationUnitSize (cluster size) to 64KB.

PS C:\> Format-Volume -DriveLetter D -FileSystem NTFS -NewFileSystemLabel 'NTFS' -AllocationUnitSize 64KB

DriveLetter FileSystemLabel FileSystem DriveType HealthStatus OperationalStatus SizeRemaining       Size
----------- --------------- ---------- --------- ------------ ----------------- -------------       ----
D           NTFS            NTFS       Fixed     Healthy      OK                    1023.7 GB 1023.87 GB

PS C:\> Format-Volume -DriveLetter E -FileSystem ReFS -NewFileSystemLabel 'ReFS' -AllocationUnitSize 64KB

DriveLetter FileSystemLabel FileSystem DriveType HealthStatus OperationalStatus SizeRemaining       Size
----------- --------------- ---------- --------- ------------ ----------------- -------------       ----
E           ReFS            ReFS       Fixed     Healthy      OK                   1018.03 GB 1023.81 GB

PS C:\> Get-Volume

DriveLetter FileSystemLabel FileSystem DriveType HealthStatus OperationalStatus SizeRemaining       Size
----------- --------------- ---------- --------- ------------ ----------------- -------------       ----
D           NTFS            NTFS       Fixed     Healthy      OK                    1023.7 GB 1023.87 GB
            System Reserved NTFS       Fixed     Healthy      OK                       169 MB     500 MB
C                           NTFS       Fixed     Healthy      OK                    117.59 GB  149.51 GB
E           ReFS            ReFS       Fixed     Healthy      OK                   1018.03 GB 1023.81 GB

 

Create Mounts Point(s) (Optional)

This is an optional step and shows how to create Partition Access Paths (mount points) for volumes. 

1. Retrieve the partition details in order to see the PartitionNumber which is required for creating a PartitionAccessPath.

PS C:\> Get-Partition

   DiskPath: \\?\mpio#disk&ven_pure&prod_flasharray&rev_8888#1&7f6ac24&0&3632344139333730343530383446333530384246343631343030303131414342#{53f
56307-b6bf-11d0-94f2-00a0c91efb8b}

PartitionNumber  DriveLetter Offset                                                    Size Type
---------------  ----------- ------                                                    ---- ----
1                            17408                                                   128 MB Reserved
2                D           135266304                                           1023.87 GB Basic

   DiskPath: \\?\mpio#disk&ven_pure&prod_flasharray&rev_8888#1&7f6ac24&0&3632344139333730343530383446333530384246343631343030303131414343#{53f
56307-b6bf-11d0-94f2-00a0c91efb8b}

PartitionNumber  DriveLetter Offset                                                    Size Type
---------------  ----------- ------                                                    ---- ----
1                            17408                                                   128 MB Reserved
2                E           135266304                                           1023.87 GB Basic

   DiskPath: \\?\mpio#disk&ven_pure&prod_flasharray&rev_8888#1&7f6ac24&0&3632344139333730373345393430323235413241353242423030303341453836#{53f
56307-b6bf-11d0-94f2-00a0c91efb8b}

PartitionNumber  DriveLetter Offset                                                    Size Type
---------------  ----------- ------                                                    ---- ----
1                            1048576                                                 500 MB IFS
2                C           525336576                                            149.51 GB IFS

2. Create a directory that will be assigned to the new volume. 

PS C:\> New-Item -Path 'C:\FlashArrayMounts\NTFS' -ItemType Directory

    Directory: C:\FlashArrayMounts
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        5/23/2017   3:50 PM                NTFS

PS C:\> New-Item -Path 'C:\FlashArrayMounts\ReFS' -ItemType Directory

    Directory: C:\FlashArrayMounts
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        5/23/2017   3:50 PM                ReFS

 3. Add the mount points for the individual volumes. Use the PartitionNumber retrieved from Step 1 for the new drives (D and E). 

PS C:\> Add-PartitionAccessPath -DiskNumber 1 -AccessPath 'C:\FlashArrayMounts\NTFS' -PartitionNumber 2
PS C:\> Add-PartitionAccessPath -DiskNumber 2 -AccessPath 'C:\FlashArrayMounts\ReFS' -PartitionNumber 2

4. View the new mount points.  

PS C:\> cd C:\FlashArrayMounts\
PS C:\FlashArrayMounts> ls
    Directory: C:\FlashArrayMounts
    
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d----l        5/23/2017   3:50 PM                NTFS
d----l        5/23/2017   3:50 PM                ReFS

Below is the view of the mount points from Windows Explorer.

MountPoints.png