Resize Storage Spaces Direct Volume

In this blog post I will show you how to resize a Storage Space AKA virtual disk based on Storage Spaces Direct. The first thing is to understand that Multi-Resilient volumes are created differently comparing to a Parity or Mirror volume. A Multi-Resilient volume makes use of two tiers instead of one and therefore when expanding you need to expand multiple tiers.

Storage Spaces Volumes

Resize the volume

In this example I am using a Multi-Resilient disk.
As you can see below I have one virtual disk in the cluster named “Disk1” with a capacity of 1000GB.
Failover Cluster Storage Spaces

Next get the StorageTiers bound to the virtual disk “Disk1” with Powershell and show the size in GBs:

Get-VirtualDisk -Friendlyname "Disk1" | Get-StorageTier | FT Friendlyname, @{Name="Size in GB";Expression={($_.AllocatedSize/1gb)}}

Storage Spaces Tiers

Aha, we can see the two StorageTiers that are bound to the virtual disks called “Disk1”
So I have 900GB in my Capacity tier and 100GB in my Performance tier which sums to 1000GB.

In this case I want to resize my storagetiers +100%, so making the performance tier 200GB and the capacity tier 1800GB. You can resize storagetiers using the Resize-StorageTier cmdlet.

Get-VirtualDisk "Disk1" | Get-StorageTier | ? Friendlyname -eq "Disk1_Capacity" | Resize-StorageTier -Size 1800GB
Get-VirtualDisk "Disk1" | Get-StorageTier | ? Friendlyname -eq "Disk1_Performance" | Resize-StorageTier -Size 200GB

After the commands complete, we run the Get-StorageTier cmdlet again to see the changes in the capacity.
Storage Spaces Tiers

Now that the tiers are resized we have come to the following scenario:

Resize resul tierst

We can also check this with Powershell and confirm this:

Get-VirtualDisk "Disk1"| FT Friendlyname,Size
Get-VirtualDisk "Disk1"| Get-Disk | Get-Partition | Where Type -eq Basic | FT Size
Get-VirtualDisk "Disk1"| Get-Disk | Get-Partition | Where Type -eq Basic | Get-PartitionSupportedSize

Storage Spaces partition

As you can see the virtual disk is already 2000GB, the partition is still 1000GB and the maximum size of the partition can be 2000GB. Once the virtual disk is expanded, you also will have to expand the partition.

Get-VirtualDisk "Disk1"| Get-Disk | Get-Partition | ? Type -eq Basic | Resize-Partition -Size 2147348361216

And the result shows in Failover Cluster Manager:
Resize result

Thank you for reading my blog.
If you have any questions or feedback, leave a comment or drop me an email.

Darryl van der Peijl

Read More

Inconsistent parameters PolicyStore PersistentStore and Dhcp Enabled

This error was driving me crazy!
I was trying to configure a team NIC with a new IP address but it would give the following error:

PS C:\users\Darryl\Desktop> new-NetIPAddress -InterfaceIndex 100 -IPAddress -AddressFamily IPv4 -PrefixLength 24
new-NetIPAddress : Inconsistent parameters PolicyStore PersistentStore and Dhcp Enabled
At line:1 char:1
+ new-NetIPAddress -InterfaceIndex 100 -IPAddress -AddressFamily IPv4 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (MSFT_NetIPAddress:ROOT/StandardCimv2/MSFT_NetIPAddress) [New-NetIPAddress], CimException
    + FullyQualifiedErrorId : Windows System Error 87,New-NetIPAddress

Turns out the NIC cannot be disconnected when configuring the IP address.

Read More

Azure Backup and Site Recovery in Public Preview

Although the many //Build/ announcements where overshadowing the news, Azure Site Recovery and Azure Backup for v2 machines (ARM) are in Public Preview!
There have been some changes, in the “old” portal you’d have to create a vault based on what you wanted to do, ASR or Backup.

Old portal
Recovery Services in old portal

In the new portal ASR and Backup are also grouped as “Recovery Services” but it gives overview over both services.

Recovery Services in new portal
Recovery Services in new portal

Within the Recovery Services pane you can now manage all stuff that is nessary for backup and disaster recovery eg. Backup policies and replication schedules.

Getting started

The new recovery services are in public preview and deployable for everyone with an Azure subscription.
Get started by choosing the Browse and search for “Recovery Services”.

After the recovery services vault is succesfully deployed you can easily start backing up virtual machines using the top menu.


Replication of virtual machines acquires some additional configuration of the on-premises environment.
TIP: Use the “Getting started wizard”.

Getting started wizard

At the time of writing there is no support yet for Windows Server 2016.

More info here and here.
The Microsoft program groups are really listening for feedback using uservoice: Site Recovery Azure Backup, Post and/or Vote for ideas!

Have fun!


Read More

Azure Stack – The Fabric Layer

With more and more details coming available on Microsoft Azure Stack we can see the direction Microsoft is taking and giving us a peek under the hood of Microsoft Azure itself.
Azure Stack will be consistent with Azure and Microsoft is bringing the Azure bits to your datacenter with Azure Stack, we will get the same portal and all the great features (like Azure Resource Manager) it brings us.

The one thing that is not consistent with Microsoft Azure is the fabric layer and in this post I will give some more insight on the infrastructure side.

Read More

Error 803 Virtual Machine Already Exists

I copied a virtual machine and imported it again in Hyper-V using a Unique ID.
When refreshing the host in Virtual Machine Manager I hit the error below:

Error 803

Error (803)
Virtual machine Darryl ASR already exists on the virtual machine host other cluster nodes

Recommended Action
Specify a new name for the virtual machine, and then try the operation again.

The issue that we’re hitting is that when copying the virtual machine, it also copies the “CLUSTER-INVARIANT” with it.
Virtual Machine Manager already has this GUID in the database and gives this error.
When deleting the GUID from Hyper-V manager, Virtual Machine Manager is able again to refresh the VM and everything starts working.

Read More

Hyperconverged with Windows Server 2016

There has been a lot of development the last couple of years on the Hypervisor and Storage landscape.
Where in the past we did big investments in separate infrastructure for Compute and Storage Array Network (SAN), now we see developments that beholds a combined infrastructure for both.

While the big vendors not seemed “All-in” on the Hyperconverged technology there have been very successful starts-ups focusing on this technology like Nutanix and Simplivity. Also VMware is picking up with the announcement of EVO:RAIL at VMworld in October 2014.


Read More

Scale-Out File Server – Symmetric and Asymmetric storage

Scale-Out File Server (SOFS) is a feature that is designed to provide scale-out file shares that are continuously available for file-based server application storage such as Hyper-V. Scale-out file shares provide the ability to share the same folder from multiple nodes of the same cluster.
In this blog we assume you already have played around with SOFS and know the basics.

There are multiple ways to connect storage to your SOFS cluster.
The most common way today is putting your SOFS cluster in front of an iSCSI or FC SAN, the upcoming method is using Storage spaces in combination with a “Just a bunch of disks” device also known as JBOD. We will cover them both in this blogpost. (more…)

Read More

WAP – SQL Named Pipes Provider Error

SQL Database as a Service is a very cool feature of Windows Azure Pack.
Because the SQL servers are probably internet facing you want to deploy them as secure as possible, maybe even in a different VLAN/Subnet than your WAP servers.

“A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)”

You receive this error in Windows Azure Pack because your WAP servers and SQL servers are in other broadcast domains.
When you add your SQL Availablity Group in WAP it first makes a connection over TCP/IP.
When it reads the members of the Availablity Group, it tries to resolve the hostnames over NETBIOS/Named Pipes, this fails because there servers are not in the same broadcast domain.

I did some packet sniffing with WireShark and did see the following:

When servers are in the same broadcast domain:
You can there is a packet going out to the broadcast IP (.255) for the name “SQL12”, and a response back from my SQL server called “SQL12”.

When a try the same with a SQL server that is not in the same broadcast domain:
It keeps trying to send broadcast packets, but never receives a response back.
And then the connection from the WAP admin portal fails.


I’m communication with someone from the WAP team to get this fixed, although I’m not sure this is something that needs to be fixed in WAP.

Put your SQL Server node names in the hostfile of your WAP Admin servers.

If you have any questions, leave a comment!

Darryl van der Peijl

Read More