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

4 min read


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.

In this blog, I am going to focus on the end to end procedure for upgrading existing Windows Server 2012 R2 Storage Spaces to Windows Server 2016.

Upgrade Your Nodes

First things first make sure you have 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 clean install instead of 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 check 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 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 “Heathy”.

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 Spaces 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 schedule maintenance window.

The final step is to import all virtual machines and upgrade their configuration version. Again this is 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!

[email protected]

About Charbel Nemnom 578 Articles
Charbel Nemnom is a Cloud Architect, Swiss Certified ICT Security Expert, Microsoft Most Valuable Professional (MVP), and Microsoft Certified Trainer (MCT), totally fan of the latest's IT platform solutions, accomplished hands-on technical professional with over 17 years of broad IT Infrastructure experience serving on and guiding technical teams to optimize the performance of mission-critical enterprise systems. Excellent communicator is adept at identifying business needs and bridging the gap between functional groups and technology to foster targeted and innovative IT project development. Well respected by peers through demonstrating passion for technology and performance improvement. Extensive practical knowledge of complex systems builds, network design, business continuity, and cloud security.

Be the first to comment

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.