Posts Tagged ‘dfs’

Quick Primer: DFS-R

June 13, 2012 Leave a comment

Searching for “DFS-R last write restore from backup” on google so that I can cite some official documentation while explaining, I came across an old post of mine on the Microsoft TechNet Forums that appears to be useful.

Read more…


DFS-R list backlogged file count and backlogged files

September 27, 2011 8 comments

Known limitation:
Although the below Windows Script File is likely okay for most needs, there is a known limitation in the file count returned by GetOutboundBacklogFileIdRecords(), which is 100. If you must obtain a full list, see a powershell script Get-DFSRBacklog.

The scripts and then the script:

I took two vbscripts (myehr and myehr) and smashed them into one for the purpose of obtaining backlogged file info, including a list of backlogged files.

This is useful to track pesky large files that are choking DFS-R on a receiving server.  It’s known that DFS-R will write (100% of the file size)+N, where N is the changed amount, to the receiving server per file (obviously the only thing written on the sending server is N).  So adding 1MB to 1024MB file will write 1MB to the sending server (program writes this), dfsr.exe writes 1025MB to the receiving server(s).

This means, do not use DFS-R to replicate large files that will be changed frequently or maybe ever; unless you have a ton of RAM and extremely low latency to your stable storage (HDDs) on your receiving server. Otherwise, replication “will take forever”.
Read more…

Some interesting WMI calls for DFS-R

September 1, 2011 Leave a comment
wmic /namespace:\\root\microsoftdfs path DfsrVolumeInfo get volumepath
wmic /namespace:\\root\microsoftdfs path DfsrReplicatedFolderConfig get rootpath
wmic /namespace:\\root\microsoftdfs path DfsrVolumeConfig get DatabasePath
echo %time% && wmic /namespace:\\root\microsoftdfs path DfsrIdRecordInfo get Fid | grep -c -e .* && echo %time%
wmic /namespace:\\root\microsoftdfs path DfsrSyncInfo get BytesTransferred,replicationgroupname

GUI tool to monitor DFS-R’s inner-workings

September 1, 2011 Leave a comment

Back in April of 2009, after much research into pulling apart DFS-R (which I continue to do today), I came across the WMI namespace that is polled by dfsrdiag and dfsutil.

Wanting to set up a GUI poller for backlogged files, I set out to write a .NET (C#) program that would update at a given interval. Well, to say the least, I am a novice coder; so the intricacies of writing this front end was daunting enoughthat after two-three weeks I simply gave up.

Well, a co-worker of mine just sent over a link that is exactly the program I was trying to write! Thanks to the MSFT support team in Brazil Portugal, there is a GUI front end to dfsrdiag and straight WMI queries called DFSRMon.exe. Enjoy!

Method to really monitor DFS replication

August 24, 2011 Leave a comment

Warning… attaching Process Monitor to your system will greatly slow down performance!


This will help answer the question “how long does it take for a file to replicate over DFS-R?”

1) How much data is written in the folders by SMB on the source server?

Use Process Monitor

Filter definitions:

  • Path includes destination directory
  • Process Name includes “System”
  • Operation is “WriteFile”

2) How much data is read by dfsr.exe in a single folder on the source server?

Use Process Monitor

Filter definitions:

  • Path includes destination directory
  • Path excludes “dfsrprivate”
  • Process name includes “dfsr.exe”
  •  Operation is “ReadFile”

[bonus: how effective is RDC?

Use Process Monitor

Filter definitions:

  • Path includes destination directory
  • path includes “dfsrprivate”
  • Process name includes “dfsr.exe”
  • Operation is “WriteFile”


3) Track changes of DFS on Destination server and find out the time the last update to the file(s) occurs, via parsing log file:

DO NOT TAIL THE DFSR DEBUG LOGS!  It will invalidate rotation.  I learned this the hard way.

What you should do is increase the debug log retention via the method mentioned in KB958893 (default is 100):

wmic /namespace:\\root\microsoftdfs path dfsrmachineconfig set maxdebuglogfiles=500 

You can then use 7-zip, etc, to unzip the gzipped debug logs located in c:\windows\debug\*.gz and analyze as follows

cat c:\windows\debug\Dfsr00100.log | grep -E .*Install-rename.*EXT.*
grep -E .*Install-rename.*FILENAME.* -r . > ..\.\log.txt

The output will read similar:

20110824 15:15:59.203 5064 MEET  2426 Meet::InstallRename -> DONE Install-rename
 completed updateName:[FILENAME.EXT] uid:{D32A1438-D8D5-4E3B-8521-05AE2F87EE30}-
v43 gvsn:{D32A1438-D8D5-4E3B-8521-05AE2F87EE30}-v43 connId:{DDDA8CE0-8500-425C-A
9C1-467D74EB64BC} csName:[REPLICATION GROUP NAME] csId:{465C4E61-79EF-4824-B8FF-D62C5A734728}
+       name              [FILENAME.EXT]

Meet::InstallRename -> DONE Install-rename is the log entry for the return of the function that signifies the completion of the file being placed in the live directory (its final location).

Windows: DFS-R patches for 2003

August 23, 2011 Leave a comment
%d bloggers like this: