In the old days all File servers where on one place, and if you want to replicate data you needed a extra tool to do this. Now days its already build in into Windows server. Storage replica can be used in several ways, replicate data from one Cluster to another or to Azure. but in this case I do a server to server replication as not everyone has a cluster.
For moving data to the Cloud there are currently several other applications like Azure file sync or Azure Migrate https://docs.microsoft.com/en-us/azure/migrate/migrate-overview Blog about Azure File Sync https://robertsmit.wordpress.com/2017/09/28/step-by-step-azure-file-sync-on-premises-file-servers-to-azure-files-storage-sync-service-afs-cloud-msignite/
Storage Replica is Windows Server technology that enables replication of volumes between servers or clusters for disaster recovery. It also enables you to create stretch failover clusters that span two sites, with all nodes staying in sync.
Storage Replica supports synchronous and asynchronous replication:
-
- Synchronous replication mirrors data within a low-latency network site with crash-consistent volumes to ensure zero data loss at the file-system level during a failure.
- Asynchronous replication mirrors data across sites beyond metropolitan ranges over network links with higher latencies, but without a guarantee that both sites have identical copies of the data at the time of a failure.
Storage Replica allows more efficient use of multiple datacenters. By stretching clusters or replicating clusters, workloads can be run in multiple datacenters for quicker data access by local proximity users and applications, as well as better load distribution and use of compute resources. If a disaster takes one datacenter offline, you can move its typical workloads to the other site temporarily.
Storage Replica may allow you to decommission existing file replication systems such as DFS Replication that were pressed into duty as low-end disaster recovery solutions. While DFS Replication works well over extremely low bandwidth networks, its latency is very high – often measured in hours or days. This is caused by its requirement for files to close and its artificial throttles meant to prevent network congestion. With those design characteristics, the newest and hottest files in a DFS Replication replica are the least likely to replicate. Storage Replica operates below the file level and has none of these restrictions.
Storage Replica also supports asynchronous replication for longer ranges and higher latency networks. Because it is not checkpoint-based, and instead continuously replicates, the delta of changes will tend to be far lower than snapshot-based products. Furthermore, Storage Replica operates at the partition layer and therefore replicates all VSS snapshots created by Windows Server or backup software; this allows use of application-consistent data snapshots for point in time recovery, especially unstructured user data replicated asynchronously.
The Setup I used two servers both domain joined, And there are different ways to configure the Storage Replica, the easy way and the 10 second way.
First we are installing the Storage replica feature and the File server Role. The Storage replica feature needs a reboot.
Or use Powershell
install-WindowsFeature “Storage-Replica” –IncludeAllSubFeature
If you don’t know the module name you can find it easily
A reboot is needed.
Doing this server by server is not handy, So placing this together saves us some time.
$Servers = “Building-5”,”Building-9”
$Servers | ForEach { Install-WindowsFeature -ComputerName $_ -Name Storage-Replica,FS-FileServer -IncludeManagementTools -restart }
The –restart does an automatic restart if this is needed.
Storage Replica prerequisites
-
- Active Directory Domain Services forest.
- Storage Spaces with SAS JBODs, Storage Spaces Direct, fibre channel SAN, shared VHDX, iSCSI Target, or local SAS/SCSI/SATA storage. SSD or faster recommended for replication log drives. Microsoft recommends that the log storage be faster than the data storage. Log volumes must never be used for other workloads.
- At least one Ethernet/TCP connection on each server for synchronous replication, but preferably RDMA.
- At least 2GB of RAM and two cores per server. (with less memory the replication won’t start)
- A network between servers with enough bandwidth to contain your IO write workload and an average of 5ms round trip latency or lower, for synchronous replication. Asynchronous replication does not have a latency recommendation.
As there is no Gui on the replica part we need to configure this by PowerShell or with the new Windows Admin Center
-
- Download and install Windows Admin Center.
Both our servers had Two extra disks. One log and Data Disk.
-
- You must create two volumes on each enclosure: one for data and one for logs.
- Log and data disks must be initialized as GPT, not MBR.
- The two data volumes must be of identical size.
- The two log volumes should be of identical size.
- All replicated data disks must have the same sector sizes.
- All log disks must have the same sector sizes.
- The log volumes should use flash-based storage, such as SSD. Microsoft recommends that the log storage be faster than the data storage. Log volumes must never be used for other workloads.
- The data disks can use HDD, SSD, or a tiered combination and can use either mirrored or parity spaces or RAID 1 or 10, or RAID 5 or RAID 50.
- The log volume must be at least 9GB by default and may be larger or smaller based on log requirements.
- The File Server role is only necessary for Test-SRTopology to operate, as it opens the necessary firewall ports for testing.
As you can see there are some needs for the Replication As I show you below with the performance test why you need this.
First we are configuring the Disks on both servers. with some PowerShell commands but this can also be done with Disk manager.
Get-Disk | Where FriendlyName -eq ‘Msft Virtual Disk’
Get-Disk | Where FriendlyName -eq ‘Msft Virtual Disk’|Initialize-Disk -PartitionStyle GPT –PassThru
1..2 | % { Get-Disk $_ }| Where FriendlyName -eq ‘Msft Virtual Disk’|New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem ReFS -NewFileSystemLabel “SR01-disk” -Confirm:$false
I formatted the disk with ReFS and not with NTFS.
Now that the disks are in place we can start but before we start building the replica I want to make sure the connection and the network is fast and the server can deliver the performance we need.
Therefor I download a test tool Diskspd. https://aka.ms/diskspd
Important is that the network speed between the server is good as this is the life line for the storage replica. We can test the replication before the build things for real.
With this test tool we bring up a small load to test the server.
Using the Diskspd with the line below.
Diskspd.exe -c1g -d600 -W5 -C5 -b8k -t2 -o2 -r -w5 –i100 –j2 E:\test
Storage replica has a great test tool report. So with this we configure the test. Using Powershell
MD c:\temp
Test-SRTopology -SourceComputerName “Building-5” -SourceVolumeName “e:” -SourceLogVolumeName “f:” -DestinationComputerName “Building-9” -DestinationVolumeName “e:” -DestinationLogVolumeName “f:” -DurationInMinutes 30 -ResultPath c:\Temp
#set output file
$outputfile=”$Env:TEMP”
Test-SRTopology -SourceComputerName “Building-5” -SourceVolumeName “e:” -SourceLogVolumeName “f:” -DestinationComputerName “Building-9” -DestinationVolumeName “e:” -DestinationLogVolumeName “f:” -IntervalInSeconds 5 -DurationInMinutes 30 -ResultPath $outputfile
#open output file
If (Test-Path $outputFile) { Invoke-Item $outputFile\TestSrTopologyReport.html } Else { Write-Host “FAILED: Output file not found: $url” -fore red }
Write-Host “Done” -ForegroundColor Cyan
while running the Test-SRTopology with the -DurationInMinutes 30 option we also run Diskspd.
Diskspd.exe -c1g -d600 -W5 -C5 -b8k -t2 -o2 -r -w5 –i100 –j2 E:\test
It is a 1 Gb file placed on our E drive that is our Data disk for replication.
As you can see I have just one network adapter and no RDMA and in this config I hit the limit of the CPU and the network card max 4.4 Gbps not bad for a test config. (if you use a better machine in Azure Pick a Azure H-series those have RDMA
One CPU with 99% usage.
When the test is done the is a log file created in -ResultPath c:\Temp
Open the log file and detailed information is there about the test. this is why I choose 30 min duration.
Nice graph about the Data throughput, in this case not bad.
the Latency is always a issue this could change you from sync to async or more network adapters or better disks. But for now it is good.
Log Volume Free Disk Space Test: The log volume F: in Building-5 has enough free space to hold the recommended log volume size of 8GB
Log Volume Free Disk Space Test: The log volume F: in Building-9 has enough free space to hold the recommended log volume size of 8GB
Storage replica has not that much PowerShell commands
#list all the commands
get-command *sr*
Setting up the actual replica is done with a long PowerShell command
The default log size is 8GB. Depending on the results of the Test-SRTopology
cmdlet, you may decide to use -LogSizeInBytes with a higher or lower value.
New-SRPartnership -SourceComputerName “Building-5” –SourceRGName rg01 -SourceVolumeName “e:” -SourceLogVolumeName “f:” -DestinationComputerName “Building-9” –DestinationRGName rg02 -DestinationVolumeName “e:” -DestinationLogVolumeName “f:”
The default log size is 8GB. Depending on the results of the Test-SRTopology
cmdlet, you may decide to use -LogSizeInBytes with a higher or lower value.
New-SRPartnership -SourceComputerName “Building-5” –SourceRGName rg01 -SourceVolumeName “e:” -SourceLogVolumeName “f:” -DestinationComputerName “Building-9” –DestinationRGName rg02 -DestinationVolumeName “e:” -DestinationLogVolumeName “f:” -LogSizeInBytes 1gb
here you can see the disk setup between both servers, the active side you can access the data disk, on the passive side the disk is not accessible.
Don’t place files on the Log disk.
To get replication source and destination state, use Get-SRGroup
and Get-SRPartnership
Get-SRGroup
Get-SRGroup |fl *
Get-SRPartnership
(Get-SRGroup).replicas
This is just after the creation so no data yet for the last time in sync.
New-SRPartnership -SourceComputerName “Building-5” –SourceRGName rg01 -SourceVolumeName “e:” -SourceLogVolumeName “f:” -DestinationComputerName “Building-9” –DestinationRGName rg02 -DestinationVolumeName “e:” -DestinationLogVolumeName “f:”
For troubleshooting there are some events that you can check, go to the event viewer and check for the Storage replica events.
Or check the events with PowerShell
Get-WinEvent -ProviderName Microsoft-Windows-StorageReplica -max 20
On the destination server, we can do the same or look for the events in the eventlog.
Get-WinEvent -ProviderName Microsoft-Windows-StorageReplica | Where-Object {$_.ID -eq “1215”} | fl
(Get-SRGroup).Replicas | Select-Object numofbytesremaining
There are also a lot of performance counters that can be viewed with PowerShell
Get-Counter -Counter “\Storage Replica Statistics(*)\Total Bytes Received”
Get-Counter -Counter “\Storage Replica Statistics(*)\Total Bytes Sent”
Get-Counter -Counter “\Storage Replica Statistics(*)\Avg. Network Send Latency”
Get-Counter -Counter “\Storage Replica Statistics(*)\Replication State”
Get-Counter -Counter “\Storage Replica Statistics(*)\Last Recovery Elapsed Time”
Get-Counter -Counter “\Storage Replica Partition I/O Statistics(*)\Number of times flush paused”
Get-Counter -Counter “\Storage Replica Statistics(*)\Number of Flushed Recovery Transactions”
Get-Counter -Counter “\Storage Replica Statistics(*)\Number of Recovery Transactions”
Get-Counter -Counter “\Storage Replica Statistics(*)\Number of Flushed Replication Transactions”
Get-Counter -Counter “\Storage Replica Statistics(*)\Number of Replication Transactions”
Get-Counter -Counter “\Storage Replica Statistics(*)\Number of Messages Received”
Get-Counter -Counter “\Storage Replica Statistics(*)\Number of Messages Sent”
Get-Counter -Counter “\Storage Replica Partition I/O Statistics(*)\Avg. App Write Latency”
Get-Counter -Counter “\Storage Replica Partition I/O Statistics(*)\Avg. App Read Latency”
Get-Counter -Counter “\Storage Replica Statistics(*)\Target RPO”
Get-Counter -Counter “\Storage Replica Statistics(*)\Current RPO”
Get-Counter -Counter “\Storage Replica Statistics(*)\Avg. Log Queue Length”
Get-Counter -Counter “\Storage Replica Statistics(*)\Current Log Queue Length”
Get-Counter -Counter “\Storage Replica Statistics(*)\Total Bytes Received”
Get-Counter -Counter “\Storage Replica Statistics(*)\Total Bytes Sent”
Get-Counter -Counter “\Storage Replica Statistics(*)\Avg. Network Send Latency”
Get-Counter -Counter “\Storage Replica Statistics(*)\Replication State”
Get-Counter -Counter “\Storage Replica Statistics(*)\Avg. Message Round Trip Latency”
Get-Counter -Counter “\Storage Replica Statistics(*)\Last Recovery Elapsed Time”
Get-Counter -Counter “\Storage Replica Statistics(*)\Number of Flushed Recovery Transactions”
Get-Counter -Counter “\Storage Replica Statistics(*)\Number of Recovery Transactions”
Get-Counter -Counter “\Storage Replica Statistics(*)\Number of Flushed Replication Transactions”
Get-Counter -Counter “\Storage Replica Statistics(*)\Number of Replication Transactions”
Get-Counter -Counter “\Storage Replica Statistics(*)\Max Log Sequence Number”
Get-Counter -Counter “\Storage Replica Statistics(*)\Number of Messages Received”
Get-Counter -Counter “\Storage Replica Statistics(*)\Number of Messages Sent”
these counters look like this
To remove the Replication we run the following command :
Get-SRPartnership Get-SRPartnership | Remove-SRPartnership Get-SRGroup | Remove-SRGroup
Or change the direction of the replication just run the PowerShell command
#move the replication direction from one site, use the
Set-SRPartnership -NewSourceComputerName “Building-9” -SourceRGName rg02 -DestinationComputerName “Building-5” -DestinationRGName rg01
Why not use Windows Admin Center ?
But all this PowerShell my fear you on using this. Good news than when using Windows Admin Center
Windows Admin Center is a locally deployed, browser-based app for managing servers, clusters, hyper-converged infrastructure, and Windows 10 PCs. It comes at no additional cost beyond Windows and is ready to use in production.
When opening the Source Storage Replica server you will see a quick over view of you configuration
Easy switch replication direction.
Notifications on the preformed actions
With an overview of the current configuration.
But the best part of Windows Admin Center is creating a new Replica. I removed the old replica and create a new one with the WAC.
Fill in the source and destination and your done.
With the Admin center you got a GUI wrapper for creating the Storage replica, No PowerShell needed
So removing the replication or in case one server is dead.
Normaly you would do
Get-SRPartnership | Remove-SRPartnership –confirm:$false
this removes the replication and both locations will show the Data.
But if source server is no longer there this will not work
Remove-SRPartnership –Name RG02 -IgnoreRemovalFailure so that it breaks the partnership completely
Remove-SRPartnership [[-SourceComputerName] <String>] [-SourceRGName] <String> [-DestinationComputerName] <String> [-DestinationRGName] <String> [-IgnoreRemovalFailure] [-Force] [-CimSession <CimSession[]>] [-ThrottleLimit <Int32>] [-AsJob] [-WhatIf] [-Confirm] [<CommonParameters>]
here is the source link
https://docs.microsoft.com/en-us/powershell/module/storagereplica/remove-srpartnership?view=win10-ps
Clear-SRMetadata Removes unreferenced Storage Replica metadata.
There are more options in Windows Admin Center that could be useful to you just try it.
And if you want to use file replication to Azure take a look at the Azure File Sync https://docs.microsoft.com/en-us/azure/storage/files/storage-files-introduction
Step by Step Azure File Sync – on-premises file servers to #Azure Files Storage Sync Service
Follow Me on Twitter @ClusterMVP
Follow My blog https://robertsmit.wordpress.com
Linkedin Profile Robert Smit MVP Linkedin profile
Google : Robert Smit MVP profile
How does this compare to DFS since it does not allow you to have 2 writable file systems in 2 different Geo regions?
Hi,
Yes SR is replication blocks from one location to the other. it is fast and Synchronous replication mirrors data on low-latency high-bandwidth networks to ensure zero data loss at the file-system level in the case of a failure,asynchronous replication which is designed for use across high-latency networks.
DFS is provision namespaces to access files without needing to know their physical location.DFS Replication was designed for use over low-bandwidth networks. DFS-R also requires that files be closed before they can be replicated.
Storage Replica works at block-level, it can replicate open files.It replicates all VSS snapshots, enabling administrators to run application-aware, point-in-time restore operations using backups created by Windows Backup or third-party backup solutions that use Microsoft’s APIs.
But if you want to have multiple locations and access to the files maybe Azure file sync it the right solution.
https://robertsmit.wordpress.com/2017/09/28/step-by-step-azure-file-sync-on-premises-file-servers-to-azure-files-storage-sync-service-afs-cloud-msignite/
creates a replication but this error occurs.
New-SRPartnership : Unable to synchronize replication group rgteste2, detailed reason: Cannot update state for replication group rgteste2 in the Storage Replica driver.
At line:1 char:1
+ New-SRPartnership -SourceComputerName SR1 -SourceRGName rgteste1 -Sou …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (MSFT_WvrAdminTasks:root/Microsoft/…T_WvrAdminTasks) [New-SRPartnership], CimException
+ FullyQualifiedErrorId : Windows System Error 1395,New-SRPartnership
Can anyone tell me why this error?
Att. Gabriel Luiz
Hi,
did you test the replica ? before you create this.
Test-SRTopology -SourceComputerName “Building-5” -SourceVolumeName “e:” -SourceLogVolumeName “f:” -DestinationComputerName “Building-9” -DestinationVolumeName “e:” -DestinationLogVolumeName “f:” -DurationInMinutes 30 -ResultPath c:\Temp
and did you follow the blog post or is your configuration different ?
I followed my setup. Test-SRTopology has resulted in everything ok.
Create the same commit in Windows Server 2016 did not give any error.
But are you sure the disk are the same on both nodes ? and same format. use diskpart to make sure.
I have a doubt, if in case the server “Building-5” suffers a disaster. What command should I perform to access from disk on the “Building-6” server until the “Building-5” server is repaired?
with the set-srpartnership you can reverse the replication. the partner will become active. you can do this with windows Admin Center or with powershell on the other node
Set-SRPartnership -NewSourceComputerName “Building-6” -SourceRGName rg02 -DestinationComputerName “Building-5” -DestinationRGName rg01
Can I make this command even with Building-5 server off?
How do I execute this Set-SRPartnership command, which completely loses communication with the Building-5 server?
you should run this on the server that is still standing and with the – force
https://docs.microsoft.com/en-us/powershell/module/storagereplica/set-srpartnership?view=win10-ps
Robert Smit, thank you very much for the information.
Hi, when running the Test-SRTopology from one of the nodes i get “The specified volume cannot be found on computer”. I checked the know issue, but no luck. Any idea?
What version do you use 2016 or 2019 ?
Windows server 2019 standard.
2016
Storage Replica offers new disaster recovery and preparedness capabilities in Windows Server 2016 Datacenter Edition.
https://docs.microsoft.com/en-us/windows-server/storage/storage-replica/storage-replica-overview
SR is now available on Windows Server 2019 Preview Standard Edition, not just on Datacenter Edition. When installed on servers running Standard Edition, SR has the following limitations:
SR replicates a single volume instead of an unlimited number of volumes.
Servers can have one partnership instead of an unlimited number of partners.
Volume size limited to 2 TB instead of an unlimited size.
https://docs.microsoft.com/en-us/powershell/module/storagereplica/set-srpartnership?view=win10-ps
so for the 2016 it should look like something
Test-SRTopology -SourceComputerName “SR-SRV05” -SourceVolumeName “D:” -SourceLogVolumeName “E:” -DestinationComputerName “SR-SRV06” -DestinationVolumeName “D:” -DestinationLogVolumeName “E:” -DurationInMinutes 10 -ResultPath “C:\temp”
In the commands in 2019 and 2016 maybe a bit different.
https://docs.microsoft.com/en-us/powershell/module/storagereplica/test-srtopology?view=win10-ps
Two questions.
#1 – Is anyone else getting errors for Element IsMounted not found when doing the switch to the new destination? The failover switch still goes though but this error is quite deceiving. Has anyone figured out a way to get around this error
#2 – How can you switch the file drives in replica to a new source if the one that was primary goes offline? The commands for Set-SRPartnership will fail if one of the servers is actually offline, like you know in a real disaster. How can we get around this issue?
I have the same question as Victor. This is the error i get when i run set-srpartnership.
Set-SRPartnership -NewSourceComputerName “drserver” -SourceRGName “rg02” -DestinationComputerName “prodserver” -DestinationRGName “rg01”
I get the following error:
Set-SRPartnership : There is no partnership between source replication group rg02 and destination replication group
rg01. Please check that partnership has been removed from all computers.
Good Question As the source is no longer there you need to remove the replica, both servers are showing the files than.
Get-SRPartnership | Remove-SRPartnership –confirm:$false
Remove-SRGroup –Name RG02
this is not needed if you do de failover when the machines are alive.
Good Question As the source is no longer there you need to remove the replica, both servers are showing the files than.
Get-SRPartnership | Remove-SRPartnership –confirm:$false
Remove-SRGroup –Name RG02
If the server goes planned down the move the replica first. Unplanned and you need the files just remove the replica and set this up later again.
Thanks for your reply Robert. I’ve tried running the first command and got this error:
Remove-SRPartnership : Failed to find replication group rg01 on machine prodserver.
At line:1 char:21
+ Get-SRPartnership | Remove-SRPartnership -confirm:$false
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (MSFT_WvrAdminTasks:root/Microsoft/…T_WvrAdminTasks) [Remove-SRPartnersh
ip], CimException
+ FullyQualifiedErrorId : MI RESULT 1,Remove-SRPartnership
The prodserver is completely offline right now to simulate the failover.
Found the answer – when using the remove-srpartnership, use the parameter for -ignoreremovalfailure so that it breaks the partnership completely.
Perfect yes I should named this in my answere but listing all the options gives you a good overview on what options there are and how to used this.
Thank you for the article.
Are there any examples where you would potentially have a cluster-to-server storage replica?
For example if I have a WSFC with the file server role, can I setup a storage replica to a server in a DR site always from the active cluster node?
I found my answer:
Test-SRTopology : Standalone server to cluster replication and the reverse is not supported by Storage Replica
At line:1 char:1
Hello Mark Storage replica can be used for server to server and to other locations, but in your case you can also use Azure File Sync https://robertsmit.wordpress.com/2017/09/28/step-by-step-azure-file-sync-on-premises-file-servers-to-azure-files-storage-sync-service-afs-cloud-msignite/
Then you have also a backup in Azure.
Has anyone managed to get this working between a VMware VM and Azure? Keeps telling me that the sector sizes are different.
Hi, you mean vmware on prem and Azure ? unless you have express route this is not gona work, as most internet lines are to slow and have to much latency. But on premise between two Datacenter this works perfectly. even on vmware.
Sector size is no issue unless you are running an real old version then you need to set the offset, in a Modern config it works.
Hi Robert,
I am testing the storage replica using stretch failover cluster, this is a 4-node cluster with an on-premise file share witness. All is good until the creation of partnership/replication however the status of replication is suspended.
Followed the steps outlined here: https://docs.microsoft.com/en-us/windows-server/storage/storage-replica/stretch-cluster-replication-using-shared-storage
Paul
Hi Paul,
did you use the Test-SRTopology and what was the result ? and what are the errors ? what kind of storage is attached ? are you running Vm’s on vmware ?
Hey Robert,
thanks for this great how to but one question, is it possible from s2d 2016 to s2d 2019 replica? thanks in advance
yes with inplace upgrade you can transform the s2d. keep in mind there is downtime and a backup is needed just in case.
Does Test-SRTopology work after storage replica with stretch cluster has been created and the volumes added to a cluster role?
I have a two node cluster and am getting errors that the tool cannot see volumes on the secondary server.
it is usual not to see the volumes because it is a cluster
Test-SRTopology -SourceComputerName “SVR-SOURCE” -SourceVolumeName “E:” -SourceLogVolumeName “F:” -DestinationComputerName “SVR-DEST” -DestinationVolumeName “E:” -DestinationLogVolumeName “F:” -DurationInMinutes 1 -ResultPath “C:\temp” -IgnorePerfTests
Test-SRTopology : The specified volume E: cannot be found on computer SVR-DEST. If this is a cluster node, the volume must be part of a role or CSV; volumes in Available Storage are not accessible
hi,
can you put the other resource in maintenance mode in the cluster. then try again.
The Problem of “The specific object was not found on the computer”has been listed as problem in more than one place including this blog with no solution.
In my case the error is shown below.
PS C:\WINDOWS\system32> Test-SRtopology -SourceComputerName Server1 -SourceVolumeName H: -SourceLogVolumeName G: -DestinationComputerName Server2 -DestinationVolumeName H: -DestinationLogVolumeName G: -DurationinMinutes 1 -Res
ultPath c:\temp
Validating data and log volumes…
Measuring Storage Replica recovery and initial synchronization performance…
WARNING: PdhAddEnglishCounter: “\\Server2\LogicalDisk(H:)\Disk Write Bytes/sec”. The specified object was not found on the computer.
WARNING: Microsoft.FileServices.SR.Powershell.SrNativePerfCounterHelper+PdhException
WARNING: at Microsoft.FileServices.SR.Powershell.SrNativePerfCounterHelper..ctor(String CounterPath)
at Microsoft.FileServices.SR.Powershell.Utilities.CollectDiskPerfCounters(String ComputerName, String VolumePath, UInt32 DurationInSeconds, UInt32 IntervalInSeconds, String CounterName, String OutputFileName, Boolean IsCSV) at Microsoft.FileServices.SR.Powershell.TestSRTopologyCommand.c__DisplayClass75_0.b__1() at System.Threading.Tasks.Task.Execute()
Test-SRtopology : PdhAddEnglishCounter: “\\Server2\LogicalDisk(H:)\Disk Write Bytes/sec”. The specified object was not found on the computer.
At line:1 char:1
+ Test-SRtopology -SourceComputerName Server1 -SourceVolumeName …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (:) [Test-SRTopology], PdhException
+ FullyQualifiedErrorId : TestSRTopologyFailure,Microsoft.FileServices.SR.Powershell.TestSRTopologyCommand
WARNING: PdhAddEnglishCounter: “\\Server2\LogicalDisk(H:)\Disk Write Bytes/sec”. The specified object was not found on the computer.
WARNING: Microsoft.FileServices.SR.Powershell.SrNativePerfCounterHelper+PdhException
WARNING: at Microsoft.FileServices.SR.Powershell.SrNativePerfCounterHelper..ctor(String CounterPath)
at Microsoft.FileServices.SR.Powershell.Utilities.GetAvgDiskThroughput(String ComputerName, String Counter, String
VolumeName, UInt32 DurationInSecond, UInt32 IntervalInSeconds, Boolean IsCSV)
at Microsoft.FileServices.SR.Powershell.TestSRTopologyCommand.c__DisplayClass75_0.b__2()
at System.Threading.Tasks.Task.Execute()
Test-SRtopology : PdhAddEnglishCounter: “\\Server2\LogicalDisk(H:)\Disk Write Bytes/sec”. The specified object
was not found on the computer.
At line:1 char:1
+ Test-SRtopology -SourceComputerName Server1 -SourceVolumeName …
This is a case of two Windows Server 2019 standard servers.
When I first tried the Test-SRtopology complaint was the data volumes were not the correct size. I thought volumes complaint was due that the disk size was greater that limit of 2TB. At that point, the volumes appear acceptable because the Volume Available Test:s all pass.
However, once I trimmed down the data volumes to 2TB, now the volume can not be found.
I was told that the volume letters should be the same on each server but making the volume letters the same did not seem to help.
You formatted with ReFS and not with NTDS. Does that mean the NTDS does not work? The production server is formatted NTDS.
You set up using a whole disk as a volume. Does this not work with volume occupying a part of a disk?
You are also using quotes around volume and server name. I am not getting a difference whether or not I use quotes.
Hi Thanks for visiting my blog.
SR is a nice option in Windows server 2019 and if you want an easy setup there is also an option in Windows Admin center https://www.youtube.com/watch?v=dYil_i9JSJE or https://www.microsoft.com/en-us/evalcenter/evaluate-windows-admin-center
but yes it works on a disk and not on a volume, so what I did was create a vhdx file and this is attached to a server both disks have the same size. If you run the latest version of Windows server 2019 1809 then both will work ntfs and refs. I used refs as the format was quicker. the Quotes should not matter us less there is a space in the name. regarding the drive letters if you don’t use the same drive letters the application will not get the disk. as this is now a different drive letter. The blog post is valid and should work. there where more users that had issues with SR
I would suggest setup Windows Admin center and see if this will help you. but make sure your disks are at the same size! https://www.microsoft.com/en-us/evalcenter/evaluate-windows-admin-center
“I would suggest setup Windows Admin center and see if this will help you. but make sure your disks are at the same size! https://www.microsoft.com/en-us/evalcenter/evaluate-windows-admin-center” Windows Admin Center is currently installed on a Windows 10 computer. Yes, I have put in the disk mismatched size by factor of 10 and the TEST-SRTopology does pick that up.
I had started with Windows Admin Center and that gives the same type of error as does the Test-SRTopology (Can not find a volume) . It was suggested to use the Test-SRTopogy to help determine the problem. I do not get same clean results as shown on https://www.youtube.com/watch?v=dYil_i9JSJE or https://docs.microsoft.com/en-us/windows-server/storage/storage-replica/server-to-server-storage-replication videos. Neither video gives any clue of the setup.
Do you have any links when things go wrong?
https://docs.microsoft.com/en-us/windows-server/storage/storage-replica/server-to-server-storage-replication gives prerequisites
Active Directory Domain Services forest (doesn’t need to run Windows Server 2016).
Have Active Directory Domain Services.
Two servers running Windows Server 2019 or Windows Server 2016, Datacenter Edition. If you’re running Windows Server 2019, you can instead use Standard Edition if you’re OK replicating only a single volume up to 2 TB in size.
Have two Windows Server 2019 Standard. Is the 2TB a hard limit? If I use the 3TB as I originally did, what problem would I see?
Each set of storage must allow creation of at least two virtual disks, one for replicated data and one for logs. The physical storage must have the same sector sizes on all the data disks. The physical storage must have the same sector sizes on all the log disks.
As written this requirement suggests that the Storage Replica will create the virtual disks. I wonder if the requirement is that the virtual disks have to be created before the Storage Replica operation. I have to created virtual disk first using something like Hyper-V and the problem is I am using physical disks that the Storage Replica does not support. I do remember seeing on the Internet demonstration showing the virtual disks created first.
At least one ethernet/TCP connection on each server for synchronous replication, but preferably RDMA.
Do I read into this requirement to preferably use Hyper-V?
Appropriate firewall and router rules to allow ICMP, SMB (port 445, plus 5445 for SMB Direct) and WS-MAN (port 5985) bi-directional traffic between all nodes.
If there is a communication problem what would I see?
A network between servers with enough bandwidth to contain your IO write workload and an average of =5ms round trip latency, for synchronous replication. Asynchronous replication doesn’t have a latency recommendation.
This synchronous is on 1G network.
If you’re replicating between on-premises servers and Azure VMs, you must create a network link between the on-premises servers and the Azure VMs. To do so, use Express Route, a Site-to-Site VPN gateway connection, or install VPN software in your Azure VMs to connect them with your on-premises network.
Azure is not used.
The replicated storage cannot be located on the drive containing the Windows operating system folder.
I read this to mean the data storage can not be located on the same drive as Windows operating system but that requirement allows the log storage to be on the same drive as Windows operating system.
I am running Windows Server 2019 1809. The drive letters do match currently. I tried taking Flash USB devices formatted with GPT and NTDS.
I do not know what triggered the post to go to the moderator or if the post will ever be released. I will try reposting parts.
I had started with Windows Admin Center and that gives the same type of error as does the Test-SRTopology (Can not find a volume) . It was suggested to use the Test-SRTopogy to help determine the problem. I do not get same clean results as shown on https://www.youtube.com/watch?v=dYil_i9JSJE or https://docs.microsoft.com/en-us/windows-server/storage/storage-replica/server-to-server-storage-replication videos. Neither video gives any clue of the setup.
Hi thank you for your excellent article. I don’t understand how is managed the client access ?
With DFS is the namespace, with Storageréplicat?
Thank
Hi thanks for reading my blog. Management is been done with Admin center or powershell
Hi, good description and I followed all but I still have an issue. Test-SRTopology is running ok, so the start is ok. But when I try to create e new partnership or a new replication group I do get the following error:
PS C:\Windows\system32> New-SRGroup -ComputerName “server01” -Name “RG01” -VolumeName “F:” -LogVolumeName “L:”
New-SRGroup : Unable to create replication group RG01, detailed reason: The requested object could not be found.
At line:1 char:1
+ New-SRGroup -ComputerName “ams3saw201” -Name “RG01” -VolumeName “F:” …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (MSFT_WvrAdminTasks:root/Microsoft/…T_WvrAdminTasks) [New-SRGroup], Ci
mException
+ FullyQualifiedErrorId : MI RESULT 6,New-SRGroup
I have tried it via PowerShell, FCM and WAC but all end up in the same error.
HI Arjan, I think it has something to do with the disk or size. this needs to be the same and not around the same but 100% the same. Also you could try to wipe the disks. as the provided scripts works did also demo’s with this. let me know how it is going
Hi Robert,
Thanks for your feedback. After returning from holidays I had a look at the issue again and I finally found that a registry key ConfigStore was missing under HKLM\Cluster\WVR. After adding the key everything went fine (so far).
Kind regards,
Arjan de Mol
Teamleader Application Technology
Hello Robert
I am using Windows 2019 Standard. The Test-SRTopology -SourceComputerName DFS-Test-01 -SourceVolumeName f: -SourceLogVolumeName g: -DestinationComputerName DFS-Test02 -DestinationVolumeName “f:” -DestinationLogVolumeName “g:” -DurationInMinutes 5 -ResultPath c:\Temp
Worked Well.
Then I Removed the Partnership and the SRGroup
Then I deleted from the Registery: omputer > HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ConfigStore\ in SourceServer and DestinationServer **
==
When I am creating a New-SRPartnerhip I am getting an error message.
New-SRPartnership : Unable to create replication group rg01, detailed reason: Failed to provision partition 9c26…. at line:1 char:1.
Then I noticed that Disk G was not accessible. Then I removed and readded. But still getting the same error.
Your help will be appreciated. Thanks.
make sure the disks are clean use diskpart to clean the disk and recreate the partition.
Many Thanks Robert. I followed your advice. That did not work. Then I reinstalled with Windows 2019 DataCenter and it worked in the Powershell Script. Bravo!
============================================================================================================
However, when I create using Windows Admin Center (WAC) I am getting an error message: ERROR: Cannot read property ‘pipe’ of null
I tried from various servers and reformatted the Hard Disks too. but still getting the same message. Would appreciate your advise.
Hi,
All issues with replications has always to do with the disks. Important is to clean the disks remove partition etc make sure there are no “leftovers” on the disk as an format is not cleaning the disk. run Clear-SRMetadata -AllPartitions To remove all orphaned Storage Replica partition databases slots and remount all partitions. To remove all orphaned Storage Replica log data Clear-SRMetadata -AllLogs or Clear-SRMetadata -Name RG01 -Logs -Partition
Hope this helps. let me know
Thanks you Robert for your reply. I tried exactly what you told me. Additionally, I created 2 new Windows 2019 Servers. The CLI Storage Replica works fine. But the problem is when I am using WAC (Windows Admin Center) latest version 2009. It is able to see both the servers and the volumes. The moment I click on “Create” I get this error: Replicate with another server Error: Cannot read property ‘pipe’ of null. I have tried total of 6 servers in the domain. I disabled the firewalls too. All the servers are giving the same message. Any advise will be appreciated. Kind regards.
Get-Disk | Where FriendlyName -eq ‘Msft Virtual Disk’ |Clear-Disk -RemoveData -Confirm this could help to clean out the data on the disk. BUT first do a Get-Disk | Where FriendlyName -eq ‘Msft Virtual Disk’ to see it select only the disks you want else other disk wil also be wiped!