Getting started with Windows Volume Replication (Storage Replica) to Azure Configuration does it Work ? #winserv #SR #Azure #WVR #MVPBuzz

As in my previous blog post I named Storage Replication and Storage Spaces Shared nothing. This item is all about Storage Replication.

As there are many blog post all about this item I will show you not the easy part but a Hybrid Replication to Azure. As machines are getting faster in Azure I guess this will do for my Storage Replication.

Storage Replica (SR) is a new feature that enables storage-agnostic, block-level, synchronous replication between servers for disaster recovery, as well as stretching of a failover cluster for high availability. Synchronous replication enables mirroring of data in physical sites with crash-consistent volumes ensuring zero data loss at the file system level. Asynchronous replication allows site extension beyond metropolitan ranges with the possibility of data loss.

see the Windows Server Technical Preview Step-by-Step Guide for Storage Replica.

Disaster Recovery (DR) refers to a contingency plan for recovering from site catastrophes so that the business continues to operate. Data DR means multiple copies of production data in a separate physical location. For example, a stretch cluster, where half the nodes are in one site and half are in another. When using synchronous replication this is also known as a metro-cluster; when using asynchronous replication, it is often referred to as a geo-cluster.

Service level agreements (SLAs) define the availability of a business’ applications and their tolerance of down time and data loss during planned and unplanned outages. Recovery Time Objective (RTO) defines how long the business can tolerate total inaccessibility of data. Recovery Point Objective (RPO) defines how much data the business can afford to lose.

Storage Replication is:

The destination volume is not accessible while replicating

The Microsoft implementation of asynchronous replication is different than most.

SR is not DFSR

SR is not backup

SR is not Hyper-V Replica or SQL AlwaysOn

WVR is SR.

You will find many instances of the terms “WVR” or “Windows Volume Replication” in the Windows Server Technical Preview.

The Setup

The Setup between on-premise and Azure is based on a Azure VPN for Site-to-Site Described in this blog post :  How to setup Azure VPN for Site-to-Site Cross-Premises or Create a Virtual Network for Point-to-Site 

All my servers are running windows Server Technical Preview

The Nodes are named win2015-3,win2015-4 and in azure win2015-6 All the machines are domain joined and pingable

Appropriate firewall and router rules to allow ICMP, SMB (port 445) and WS-MAN (port 5985) bi-directional traffic between all cluster nodes.

A network between the two sets of servers with at least 8Gbps throughput and average of ≤5ms round trip latency when sending non-fragmented 1472-byte ICMP packets for at least 5 minutes. ( I do not have this in this configuration )

The problem is when you dan’t have a connection that is fast enough the replica will drop the connection and you will see this in the eventlog

So testing the the Line holds : But I know I’m in trouble with this.

ping win2015-6.mvp.local -4  -l 1472 -n 300

Ping statistics for

Packets: Sent = 300, Received = 300, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 4ms, Maximum = 54ms, Average = 6ms

This should be something like this:

To test If the Disk Holds use DISKSPD or copy a large file to generate some write load on the source server volume.

The goal is to keep 95th percentile latency under 50ms

My sample line diskspd.exe -c10G -d120 -t4 -o8 -h -w100 -b32K -r32k -L H:\testfile.dat > c:\win2015-3base.txt

  %-ile |  Read (ms) | Write (ms) | Total (ms)
    min |        N/A |      0.275 |      0.275
   95th |        N/A |     32.694 |     32.694

IOPS are important but latency is a true indicator of application performance.


To install All the options that are needed in the cluster you can use PowerShell or do this by hand in the GUI.

my $servers holds all the nodes and then I install the Features. ( a reboot in needed )

$Servers = ‘win2015-3′,’win2015-4′,’win2015-5′,’win2015-6′

$Servers | ForEach { Install-WindowsFeature –ComputerName $_ –Name WVR,Failover-Clustering,Multipath-IO,Hyper-V –IncludeManagementTools -restart }


Now that all the bits are in place we can create a new cluster Or if you already have a cluster you can use that one. ( see my blog post 15 minute install )

New-Cluster -Name HybridClu -Node ‘win2015-3′,’win2015-4′,’win2015-5′,’win2015-6′ -StaticAddress

Configure a File Share Witness or Cloud (Azure) witness ( see my blog post Configuring cloud witness quorum Windows Server Cluster Azure Files ) 

Now that the Cluster is in place We can start with the Storage I have attached 3 extra disk to my Azure VM

And Several Disks to my on-premises Cluster nodes all small disk as I just want to test this and all is just as an Sample.

There are several options in the Configuration As shown in the Guides see the Windows Server Technical Preview Step-by-Step Guide for Storage Replica.

So this Config is not the basic and see If I can find the Borders of the Configuration. Remember IOPS and Latency is important to get this done ( Express route to the Home will be the best Christmas gift )

I build a Storage Pool off 3 disks and created here 2 disk on with the Exact same Size.

Keep in mind that the Disk needs to be GPT and you can set this in the Disk manger but also with diskpart





But This is not always  enough when you see Event ID 10381 in the WVR then you need to set Microsoft Reserved (MSR) partition

Status: Unknown NTSTATUS Error code: 0xc0530191

A serious problem has been identified with the contents of the disk partitioning layout resulting from a missing Microsoft Reserved (MSR) partition. WVR requires that the disk have an MSR partition prior to the creation of the WVR partition database. Without the MSR partition, WVR cannot create the WVR partition database which prevents the disk, or any of the partitions or volumes contained by the disk, being involved in replication. To correct the problem, the MSR partition must be created on the disk. This is typically achieved by (re-)initializing the disk. Note that initializing the disk will involve the destruction of all the contained partitions and volumes on that disk. To use the disk for WVR, the disk must have been initialized with the GPT (GUID Partition Table) layout. Once this has been done, the required partitions and volumes can be created, and the partitions and/or volumes can be provisioned for replication as normal.

So clean the partition and start over. Create Partition with MSR and GPT. Only then the Disk will work for Storage Replication ( WVR )




Create Partition MSR Size=32


So I created 4 disk with the exact same size and GPT and MSR this should do the Trick. In my case I use only 3GB disks as this is the minimal specs for most things.

Now Create and Place Holder for your Disk in the Cluster Name it and place One disk in this Role


Now the easy part just run one-liner in PowerShell you can do this in the GUI but this is not the best method now in the Technical Preview.

In PowerShell you will see Quickly if it is working

What We will need :

Two node names Source :win2015-3  and Destination : win2015-6

Create Two Replication groups Azure_group08 & Azure_group09  ( tested this a lot and broke all Replica’s )

Pick the Drive Letters

Source Data : H

Source LOG :  E

Destination Data : I

Destination LOG : W

And Pick a Logsize


To create the Windows Volume Replication all in one PowerShell

New-SRPartnership -SourceComputerName win2015-3 -SourceRGName Azure_group08 -SourceVolumeName h: -SourceLogVolumeName e: -DestinationComputerName win2015-6 -DestinationRGName Azure_group09 -DestinationVolumeName i: -DestinationLogVolumeName w: -LogSizeInBytes 2gb

This will trigger the Cluster and this will create the Groups and it will add the Log disk to the Data Disk group after a bit of ping pong with the disk they will failover and come on/offline failover the disks and the Cluster Layout will be something like this

My Resource Group Hybrid Repl and the Replication has created the WVR Azure_group09

now with all Running you can see what is my Group and Partnership




You can also reverse the Replication if needed

but looking at the Events in WVR you can see if the Replication is ok  Ensure that events 5002, 2200, 5015 , 5005, 5001, and 5009


Event logs Source and Destination

If you want to change the Logsize  “ LogSizeInBytes 2gb “ then you have to rebuild the Replica there is currently no option for that.



Last Part is the Removal of the Replica , It make sense that in the Cluster Failover manager you can delete the replica but If you do this the replica is not totally removed this is a bug. so best to remove the replica is by PowerShell.

Get-SRPartnership | Remove-SRPartnership

Get-SRGroup | % { Remove-SRGroup -Name $ }


Removing the Replica will give the disk the status Available Storage.

As I meshed up my other Replication on deleting this in the Cluster Failover Manager GUI, This is hard To fix and you have to go deep to fix this.

Diskpart is you best friend on this.

Hopefully this walk true is helpful and see what you can do with the hybrid environment. If you need more help here is the Forum

Other Options for storage Replication : While Windows “Shared Disk Failover Cluster” is not yet supported for Microsoft Azure Virtual
Machines, 3rd-party software SIOS Datakeeper can be used as an alternative:

Source :


My next blog post will be : How does DAS-only storage work in a failover cluster?  at [11:00]: ( Storage Spaces Shared Nothing )

If you want more info about Windows Server Technical Preview get here the Guides that you can use to start with the new Stuff

Guides :

Happy clustering

Robert Smit


Technorati Tags: Windows Azure,Azure File service,Windows,Server,Clustermvp,Blob,cloud witness

Posted December 17, 2014 by Robert Smit in Window Server 2015

Tagged with ,

How to setup Azure VPN for Site-to-Site Cross-Premises or Create a Virtual Network for Point-to-Site #VPN #Azure #winserv

There are a lot of real good Blog post on how to create Azure Site to Site. And as the Vnext Windows Server is more and more connecting to the Cloud. I’ll show you how to create a S2S & P2P VPN setup. And The VPN option will get you to a real hybrid Network and This could be awesome. keep reading my blog posts. The Next blog post will be more about Hybrid Configurations.


So what do we need for a hybrid Environment Well I’ll setup a poor men’s version, that means One Hyper-v server home Router and an Azure Subscription.

First We setup a windows Server No special needs for this 4GB memory and 1 Disk but with two network cards. ( this is a VM )

So one NIC is on my corp network and the other NIC is connected to the friendly Internet.

When you have the server installed you only need to install RRAS Role Service and no direct configuration needed.

So by GUI or with Powershell   add-WindowsFeature DirectAccess-VPN,Routing


That is all what needed and you will need to create two NAT rules on your router ( however NAT is not supported )


But this all depends on you network configuration. 

The next step is Azure .

As I do net have a Network in azure I create a network that I will use for my VM’s that I will build after the network configuration, But I you already have a network in azure you can use that network.



But what Do I need Well It does not mater the Quick is configurable after creating the network. And the Custom is more Wizard driven.

For the screenshots I’ll pick Custom.

image The First step is pick a network name, No Change can me made afterwards ( well not easily )



Next step is Setting Checkboxes and DNS. I use an on premise DNS server but If you run a DNS in Azure You can use this server.


If you have already a network then you can pick the DNS servers from the list and pick also a local network.

I this case everything is New So give the DNS server a name and IP this is my local DNS server and I use a Internet DNS server. Just because this is an Easy IP address.

And I selected the Configure a point-to-site VPN and Configure a site-to-site VPN and on the Local Network I choose a new local network.



Now that the Diagram is filled we do some configuration, As my local network is a 10 network and I like to not have this in the same range in this Scenario.


So I pick a For my point-to-site VPN.

The next step is more Complicated, We need to pick a Local-Network name and We need to find the External IP on you network.



To find My external IP I use Bing just ask “ what is my IP “



The Next step is create a Address space for this network.




You have to check the Add Gateway Subnet this is uses for the Site-to-Site VPN

see Virtual Network Address Spaces page in About Configuring a Virtual Network using the Management Portal.


image image

Check the Box and you can see it is creating the network configuration but not the Gateway this is done in the next step.



After the Network Creation is Done We add the Gateway Configuration / Creation



This will take about 30 minutes to create ( and Will cost you about 12 euro a month )

While this is creating we will configure the P2P VPN.


One way to create an X.509 certificate is by using the Certificate Creation Tool (makecert.exe). To use makecert, download and install Microsoft Visual Studio Express 2013 for Windows Desktop, which is free of charge.

In this case I’ll use make cert.

Generate a self-signed root certificate the name can be your name or what you like.

makecert -sky exchange -r -n "CN=BlogRootCert" -pe -a sha1 -len 2048 -ss My "BlogRootCert.cer"

Generate a client certificate

makecert.exe -n "CN=BlogClientCert1" -pe -sky exchange -m 96 -ss My -in "BlogRootCert" -is my -a sha1


All certificates are stored in your Personal certificate store on your computer. Check certmgr to verify. You can generate as many client certificates as needed based on this procedure. Recommend is that you create unique client certificates for each computer that you want to connect to the virtual network.

A client certificate must be installed on each computer that you want to connect to the virtual network. This means you will probably create multiple client certificates and then need to export them. To export the client certificates, use certmgr.msc. Right click on the client certificate that you want to export, click all tasks, and then click export.


Export the client certificate with the private key. This will be a .pfx file. Make sure to record or remember the password (key) that you set for this certificate.


Copy the .pfx file to the client computer. On the client computer, double-click the .pfx file in order to install it. Enter the password when requested. Do not modify the installation location.

But the ROOTCERT is needed in Azure and we need to import this. When the Gateway is ready you can see in the Clients that it needs a certificate



Uploading the Certificate is the Certificate that we just Created

makecert -sky exchange -r -n "CN=BlogRootCert" -pe -a sha1 -len 2048 -ss My "BlogRootCert.cer"



Now that all the Azure Configuration is Done We configure the RRAS server as you can see in the overview the Gateway and P2P VPN is not Connected.



On the right there is a little list with some Download links


First we download the RRAS Configurations Script   Download VPN Device Script

Just make sure You select the Windows Server 2012 R2 as we are using this for the gateway.


When running this script in the RRAS server there is a Common Error the RRAS service is restarted so therefor it can not connect just run the connect line again and it will work.

However this is a CFG script you can rename this to PS1 Or Run this in Powershell ISE like I did.



# Dial-in to Azure gateway
Connect-VpnS2SInterface -Name



The Site To –Site VPN is now connected

For the Client You will use the Download the 64-bit Client VPN Package



Keep in mind Windows Does not trust an Downloaded EXE file so before you can install this it needs to unblock 



Now that the File is unblocked we can install the VPN this is a real quick install and no screens to view but in the network You can see a new network, in this case BlogHybrid.

For connecting just click the network and connect.


image  image

Now I’m Connected.


As you can see I’m connected With point-to-site VPN and a site-to-site VPN.


With a site-to-site VPN I can use Windows Azure Servers connecting To my local Domain.

With point-to-site VPN I can Connect With a Windows Azure VM on the Internal IP without using the IP.

And you can also connect Azure to Azure VPN between Subscriptions

This Will be the basic’s for my next Blog post Azure is very useful for easy testing an getting a heavy machine for your workload even for one day.


Happy clustering

Robert Smit


Technorati Tags: Windows Azure,Azure File service,Windows,Server,Clustermvp,Blob,cloud witness

Posted December 15, 2014 by Robert Smit in Windows Server 2012 R2

Tagged with ,

What is change in Windows Server 2015 (10) cluster – Setting Cluster Common Properties

In the new Windows Server 2015 ( Windows Server Technical Preview )there are a lot of new features an not all are clear what they are doing.

I call it here Windows server 2015 there is currently no indication that the server 10 will be named 2015 but as the product will come in 2015 it will make sense that it will be called Windows server 2015. 

I made a Quick compare from the old cluster Windows Server 2012R2 to the new Windows server 2015

In the GUI there is not much change the only part that is real changed is the Enclosure part. ( See my other blog about this )

image  image

But what is change is underwater. when we do a Get-cluster | fl *  We get a list of all the cluster property’s that can be set.


Check this MSDN site for more info about Cluster Common Properties


There are a lot of new options but one option is gone RootMemoryReserved is not longer available.

cluster environment variable RootMemoryReserved was introduced to ensure that clustered VM hosts have a minimum amount of physical memory reserve for the host.

The RootMemoryReserved is by default set at 512 MB. This should be sufficient for the host VM that is not performing any operation other than manage the VMs.

As above windows10 is my cluster name and must be used in the PowerShell command

(get-cluster windows10).RootMemoryReserved

To change the RootMemoryReserved, the desired reserved memory size is assigned to the PowerShell cmdlet above. Use the following PowerShell cmdlet to set RootMemoryReserved to 1024 MB:

(get-cluster <cluster name>).RootMemoryReserved=1024

So it is no longer there.!

But now what is new.

When we do a Get-cluster | fl *

It will give us a long list but I filtered out and here are only the new parts that is only available in Windows Server 2015

ClusSvcRegroupStageTimeout        5
ClusSvcRegroupTickInMilliseconds        300
ClusterFunctionalLevel        9
ResiliencyDefaultPeriod        0
QuarantineDuration        0
ResiliencyLevel        Default
ClusterGroupWaitDelay        120
QuorumArbitrationTimeMax        20
RequestReplyTimeout        60
DumpPolicy        69913

When we need to change these options that can be done with (get-cluster).ClusterFunctionalLevel=9

(get-cluster).< with the name> = Value

As I noticed there are options from 2008 back and all have to do with latency so a logical conclusion would be will the cluster go to Azure or is there something coming that we need the values to get a better cluster. and all

Let us review these Commands



These options where there in 2008 but removed in 2012 and now they are back.

Controls the amount of time, in seconds, that a node waits on other nodes in a membership stage before deciding that they have failed.

Controls the interval of time, in milliseconds, that the membership algorithm waits between issuances of periodic membership messages.


Upgrading a Hyper-V or Scale-Out File Server cluster from Windows Server 2012 R2 to Windows Server Technical Preview no longer requires downtime. The cluster will continue to function at a Windows Server 2012 R2 level until all of the nodes in the cluster are running Windows Server Technical Preview. The cluster functional level is upgraded to Windows Server Technical Preview by using the Windows PowerShell cmdlt Update-ClusterFunctionalLevel.


The default resiliency period for the cluster, in seconds


Specifies the amount of time groups will wait for their default or preferred owner node to come up during cluster cold start, before the groups are moved to another node.


Specifies the maximum number of seconds a node is allowed to spend arbitrating for the quorum resource in a cluster.


Describes the length of time a request from a node with a cluster state update will wait for replies from the other healthy nodes before the request times out. Any nodes that do not reply within the request time out period will be removed from active membership in the cluster. The following table summarizes the attributes of the RequestReplyTimeout property.


Queries that can be used to export resource type specific logs.


There a fresh new options and currently not well documented or <NDA> but I’m sure when the server product is right a lot more new features will be made public. 

When the next release of Windows Server will be available I’ll discuss the DASMode properties in a future blog

Happy clustering

Robert Smit


  • Tag