You dont have javascript enabled! Please enable it!

How To Update Windows Server 2012 R2 Storage Spaces to Windows Server 2016? #StorageSpaces #HyperV

3 Min. Read

In this article, we will show you the end-to-end procedure on how to upgrade existing Windows Server 2012 R2 Storage Spaces to Windows Server 2016.


Recently I was upgrading some Windows Server 2012 R2 Hyper-V hosts to Windows Server 2016.

I have Storage Tiered Spaces with mirroring resiliency deployed on those Hyper-V 2012 R2 hosts.

For info about Storage Spaces in Windows Server 2012 R2, see – Storage Spaces overview.

For info about Storage Spaces Direct in Windows Server 2016, see – Storage Spaces Direct overview.

Upgrade your Nodes

First things first make sure you have a backup for all your existing virtual machines.

Next, Install Windows Server 2016 including the latest cumulative updates, drivers, and firmware. In this example, I used Server Core as a clean install instead of an in-place upgrade. This is my preferred way, your mileage may vary.

Install Hyper-V and reboot the system.

Upgrade Windows Server Storage Spaces

We will start first by querying our system and checking the storage pool status.


As you can see, the Storage Pool named “TieredPool01” is not operational. This is expected after you install a new OS!

Let’s get more details about the Pool by running the following command:

Get-StoragePool -FriendlyName "Tiered*" | Select OperationalStatus, HealthStatus, ProvisioningTypeDefault, Version, ResiliencySettingNameDefault, @{ Expression = { $_.Size/1TB }; Label = "Size (TB)" }, FaultDomainAwarenessDefault, LogicalSectorSize, PhysicalSectorSize


As you can see, the Operational Status is set to “Read-only”, the Health Status is “Unknown”, the Version is “Windows Server 2012 R2”, the Resiliency Setting is “Mirror”, and the total capacity for the pool in our example is “10TB”.

Let’s check the health status of the physical disks:


This system has 4 X 2TB HDDs and 4 X 960GB SSDs. All disks are healthy, so far so good!

Before we go ahead and upgrade the pool, we need to bring the storage pool to a healthy state. To do so, you need to run the following command:

Get-StoragePool -FriendlyName "Tiered*" | Set-StoragePool -IsReadOnly $False –Verbose


The Operational Status is “Ok”, and the Health Status is “Healthy” as well.

We can proceed now and upgrade the pool by running the Update-StoragePool cmdlet as shown in the following screenshot.


Now behind the scene, Windows Server 2016 will update the metadata of the existing Windows Server 2012 R2 storage pool and bring it to 2016. This is a one-time operation and irreversible!

The storage pool is upgraded now to Version: “Windows Server 2016”.

Let’s check the virtual disk status by running the Get-VirtualDisk cmdlet.


The Virtual Disk is “Detached” from the Storage Pool.

To attach the virtual disk, I used Set-VirtualDisk to change “IsManualAttach” to false. This will make sure that when the system reboots, the virtual disk will be mounted automatically.


We have now the Storage Pool “Healthy” and the Virtual Disk “Healthy”.

Let’s check the status of the Volume.


As you can see, the disk named “MirroredTieredSpace01” is healthy but it is in “Offline” state.

To bring it online and make it accessible, you need to use Set-Disk to change “IsOffline” state to false and “IsReadOnly” to false as well.


You can check the health state for the volume by running the Get-Volume cmdlet.


We have now the Storage Pool “Healthy”, the Virtual Disk “Heathy”, and the Volume “Healthy”. We can go ahead and optimize the Storage pool by running Optimize-StoragePool cmdlet.  This will rebalance the Space allocations in a pool to disks with available capacity.


This is very useful If you are adding new disks, this operation helps move existing Spaces allocations to them, and optimization improves their performance. Please note that rebalancing is an I/O intensive operation and it is recommended to run it during your scheduled maintenance window.

The final step is to import all virtual machines and upgrade their configuration version. Again this is a one-time operation and not reversible! so If you still have Windows Server 2012 R2 hosts in your environment, and you plan to move virtual machines around, then keep the configuration version at level 5.0 (for WS 2012 R2 support).


Hope that helps.

Happy upgrading!


Photo of author
About the Author
Charbel Nemnom
Charbel Nemnom is a Senior Cloud Architect, Swiss Certified ICT Security Expert, Certified Cloud Security Professional (CCSP), Certified Information Security Manager (CISM), Microsoft Most Valuable Professional (MVP), and Microsoft Certified Trainer (MCT). He has over 20 years of broad IT experience serving on and guiding technical teams to optimize the performance of mission-critical enterprise systems with extensive practical knowledge of complex systems build, network design, business continuity, and cloud security.

Related Posts


Configuring Constrained Delegation with Kerberos in Windows Server Hyper-V with PowerShell #HyperV

Don’t miss MVP Led UK TechDays Online! #MVP #MVPBuzz #UKTechdays


Let me know what you think, or ask a question...

error: Alert: The content of this website is copyrighted from being plagiarized! You can copy from the 'Code Blocks' in 'Black' by selecting the Code. Thank You!