The previous post referred to some basic backup/restore jargon. Now, let us investigate what the footprint of the DFS Replication service looks like. The following steps have been performed on a server running Windows Server 2008.
Locate working directories used by the DFS Replication service
To start with, let’s configure a replicated folder on a freshly installed Windows Server 2008 machine. Using the DFS Management Console (dfsmgmt.msc), we configure a folder ‘D:\Reports’ to be replicated between two machines. For now, this is an empty directory and contains no data to be replicated between the servers.
On navigating to the folder ‘D:\Reports’ we notice it is empty. Or is it really? After enabling the option ‘Show hidden files, folders and drives’ and disabling the option ‘Hide protected operating system files’ in Windows Explorer, a hidden folder called ‘DfsrPrivate’ appears within the replicated folder.
This folder is in reality a junction point or, in simpler terms, a link to another location on the volume. Typing ‘dir /a’ on the command prompt shows us where this junction point leads to. It seems to point to a path under the ‘System Volume Information’ folder on the same volume (‘D:\’). In case of Windows Server 2003 R2, there is no junction point. ‘DfsrPrivate’ is actually a folder on Windows Server 2003 R2 and the following sequence of operations can be performed on that platform as well in order to view the contents of the folder.
Now that we’ve enabled the display of hidden and system files, we can navigate to the root of the volume in Windows Explorer and see the ‘System Volume Information’ folder. However, this directory is ACL-ed to prevent access by anyone except the System. Therefore, any attempt to access the directory results in an Access Denied message. To get around this, let’s add Read permissions for ‘Administrator’ to the folder. We’re now able to traverse the ‘System Volume Information’ folder. Be careful to restore the permissions once you’re done with the following steps.
Inspect the contents of ‘System Volume Information\DFSR’
The ‘System Volume Information’ folder contains the following directories:
- Config – This directory contains a cache of the configuration information that was retrieved by the DFS Replication service when it polled Active Directory. The configuration files stored here are in XML format and they reflect the replication group and replicated folder configuration currently setup in Active Directory using the DFS Management snap-in.
- Private – This directory contains some private folders used by the DFS Replication service. We’ll get to this in a bit.
- Database_* – This directory contains the jet database used by the DFS Replication service to store file version information and other metadata that is maintained on a per replicated folder basis.
Let’s descend one level further into the ‘Private’ directory. There’s a directory with a name that looks like a GUID. You’ve probably already noticed that this is the same directory that is pointed to by the junction point ‘DfsrPrivate’. This location can thus also be accessed via the path ‘D:\Reports\DfsrPrivate’.
This GUID-named directory contains the following sub-directories:
- ConflictAndDeleted – The DFS Replication service is a multi-master replication engine with last writer wins conflict resolution semantics. All versions of files which lose conflicts are put into this directory.
- Deleted – This directory is used to store any files that the DFS Replication service needs to delete.
- Installing – This directory is used to assemble updates to files that have been replicated in from other replication partners. Once the entire file is assembled, the copy of the file in the replicated folder is updated.
- Staging – This directory contains the staging area used by the DFS Replication service. The staging area is used to compute RDC signatures and compress file data before replicating with other replication partners.
If more replicated folders are added on the same volume, there will be corresponding GUID-named folders within ‘D:\System Volume Information\DFSR\Private’. Also, each of those replicated folders will have a junction point called ‘DfsrPrivate’ which will point to these respective GUID-named folders.
After adding another replicated folder ‘D:\Data’ on the same volume, let us observe what has changed. Notice another GUID-named folder has been created under ‘D:\System Volume Information\DFSR\Private’. This folder corresponds to the newly added replicated folder (‘D:\Data’) and is pointed to by a junction point within that replicated folder (‘D:\Data\DfsrPrivate’). Also notice that each replicated folder has its own ‘Staging’ area, ‘Conflict And Deleted’ folder etc. all located within its own unique GUID-named directory.
However, it is important to note that after adding the second replicated folder, a new database directory was not created. This is because all folders on a given volume share the same database. Thus, the DFS Replication service’s database is on a per-volume basis and is shared by all replicated folders hosted on that volume.
Now that we’re done with our investigation, remember to remove the Read permission for Administrator from the ‘System Volume Information’ folder.