Documentation officielle de Microsoft: https://learn.microsoft.com/fr-fr/windows-server/storage/dfs-namespaces/dfs-overview?WT.mc_id=AZ-MVP-5004580&tabs=server-manager
Imaginez une entreprise avec des bureaux à Montréal, Québec et Sherbrooke. Chaque bureau possède son propre serveur de fichiers.
Problèmes courants sans DFS :
\\SRV-MTL\partage vs \\SRV-QC\partage)Solution : DFS + DFSR
💡 DFS unifie l'accès aux fichiers derrière un seul chemin.
DFSR synchronise automatiquement les fichiers entre plusieurs serveurs.
| Terme | Définition |
|---|---|
| Namespace (espace de noms) | Arborescence virtuelle qui regroupe des dossiers partagés |
| Namespace Server | Serveur qui héberge et publie le namespace |
| Root (racine) | Point d'entrée du namespace (\\domaine\partage) |
| Folder (dossier DFS) | Entrée dans le namespace, pointe vers une ou plusieurs cibles |
| Folder Target (cible) | Chemin UNC réel vers un dossier partagé (\\SRV1\data) |
| Replication Group | Groupe de serveurs qui se synchronisent entre eux |
| Member | Serveur participant à la réplication |
| Replicated Folder | Dossier dont le contenu est répliqué entre les membres |
DFS est un rôle Windows Server qui permet de :
Chemin vu par l'utilisateur :
\\contoso.local\fichiers\Ressources_Humaines
Chemin réel derrière la scène :
\\SRV-MTL\RH$\ ← serveur principal
\\SRV-QC\RH$\ ← serveur de secours
Il existe deux types de namespace dans DFS :
\\NomDeDomaine\NomDuNamespace\\contoso.local\fichiers\\NomDuServeur\NomDuNamespace\\SRV-MTL\fichiers⚠️ En entreprise, on privilégie toujours le namespace de domaine.
Utilisateurs
│
▼
\\contoso.local\fichiers ← Namespace DFS (virtuel)
├── \RH ← Dossier DFS
│ ├── \\SRV-MTL\RH$ ← Cible 1 (principale)
│ └── \\SRV-QC\RH$ ← Cible 2 (secours)
├── \Finances
│ └── \\SRV-MTL\Finance$ ← Cible unique
└── \Logiciels
├── \\SRV-MTL\Logiciels$
└── \\SRV-SHE\Logiciels$
# Installer DFS Namespaces et DFS Replication
Install-WindowsFeature -Name FS-DFS-Namespace, FS-DFS-Replication -IncludeManagementTools
# Vérifier l'installation
Get-WindowsFeature -Name FS-DFS*
Outils → Gestion du système de fichiers distribués DFSSRV-MTL)Fichiers)Résultat : \\contoso.local\Fichiers est maintenant accessible.
# Créer un namespace de domaine
New-DfsnRoot -Path "\\contoso.local\Fichiers" `
-TargetPath "\\SRV-MTL\Fichiers" `
-Type DomainV2
# Vérifier le namespace
Get-DfsnRoot -Path "\\contoso.local\Fichiers"
RessourcesHumaines\\SRV-MTL\RH$\\SRV-QC\RH$ (2e cible)# Créer un dossier DFS avec une cible
New-DfsnFolder -Path "\\contoso.local\Fichiers\RH" `
-TargetPath "\\SRV-MTL\RH$"
# Ajouter une deuxième cible au même dossier
New-DfsnFolderTarget -Path "\\contoso.local\Fichiers\RH" `
-TargetPath "\\SRV-QC\RH$"
# Lister les dossiers d'un namespace
Get-DfsnFolder -Path "\\contoso.local\Fichiers\*"
# Lister les cibles d'un dossier
Get-DfsnFolderTarget -Path "\\contoso.local\Fichiers\RH"
Quand un dossier DFS possède plusieurs cibles, Windows décide laquelle utiliser selon :
# Définir la priorité d'une cible
Set-DfsnFolderTarget -Path "\\contoso.local\Fichiers\RH" `
-TargetPath "\\SRV-MTL\RH$" `
-ReferralPriorityClass GlobalHigh
DFSR (DFS Replication) est le moteur de synchronisation de fichiers entre plusieurs serveurs. Il remplace l'ancien service FRS (File Replication Service) depuis Windows Server 2008 R2.
DFSR permet de :
💡 DFSR et DFS Namespaces sont deux technologies distinctes mais complémentaires. On peut utiliser l'un sans l'autre.
Sans RDC : si un fichier de 100 MB est modifié sur 2 KB, tout le fichier est retransféré → 100 MB consommés.
Avec RDC : seuls les blocs modifiés sont transférés → quelques KB consommés.
Fichier original (SRV-MTL) : [AAAA][BBBB][CCCC][DDDD]
Fichier modifié (SRV-MTL) : [AAAA][BBBB][XXXX][DDDD] ← seul [CCCC→XXXX] change
Transfert RDC vers SRV-QC : → envoie uniquement le bloc [XXXX]
SRV-MTL (Hub)
/ | \
SRV-QC SRV-SHE SRV-TOR
(Spoke) (Spoke) (Spoke)
SRV-A ─────── SRV-B
│ \ / │
│ \ / │
│ X │
│ / \ │
│ / \ │
SRV-C ─────── SRV-D
Ensemble de serveurs qui partagent un ou plusieurs dossiers répliqués.
Lien unidirectionnel entre deux membres. Une connexion bidirectionnelle = deux connexions (une dans chaque sens).
Si deux utilisateurs modifient le même fichier simultanément sur deux serveurs différents :
DfsrPrivate\ConflictAndDeletedGRP-RH-ReplicationSRV-MTL, SRV-QCSRV-MTL (son contenu sera envoyé aux autres au premier démarrage)C:\Partages\RHSRV-QC : C:\Partages\RH⚠️ La synchronisation initiale peut prendre plusieurs heures selon la quantité de données.
# ─── Créer un groupe de réplication ───────────────────────────────────────────
New-DfsReplicationGroup -GroupName "GRP-RH-Replication" `
-DomainName "contoso.local"
# ─── Ajouter les membres ───────────────────────────────────────────────────────
Add-DfsrMember -GroupName "GRP-RH-Replication" `
-ComputerName "SRV-MTL", "SRV-QC" `
-DomainName "contoso.local"
# ─── Créer le dossier répliqué ────────────────────────────────────────────────
New-DfsReplicatedFolder -GroupName "GRP-RH-Replication" `
-FolderName "RH" `
-DomainName "contoso.local"
# ─── Définir le chemin local sur chaque membre ────────────────────────────────
Set-DfsrMembership -GroupName "GRP-RH-Replication" `
-FolderName "RH" `
-ComputerName "SRV-MTL" `
-ContentPath "C:\Partages\RH" `
-PrimaryMember $true ` # SRV-MTL est la source initiale
-DomainName "contoso.local" `
-Force
Set-DfsrMembership -GroupName "GRP-RH-Replication" `
-FolderName "RH" `
-ComputerName "SRV-QC" `
-ContentPath "C:\Partages\RH" `
-DomainName "contoso.local" `
-Force
# ─── Créer les connexions de réplication ──────────────────────────────────────
Add-DfsrConnection -GroupName "GRP-RH-Replication" `
-SourceComputerName "SRV-MTL" `
-DestinationComputerName "SRV-QC" `
-DomainName "contoso.local"
Add-DfsrConnection -GroupName "GRP-RH-Replication" `
-SourceComputerName "SRV-QC" `
-DestinationComputerName "SRV-MTL" `
-DomainName "contoso.local"
# ─── État de la réplication ───────────────────────────────────────────────────
Get-DfsrState -GroupName "GRP-RH-Replication" -Member "SRV-MTL"
# ─── Voir le backlog (fichiers en attente de réplication) ─────────────────────
Get-DfsrBacklog -GroupName "GRP-RH-Replication" `
-FolderName "RH" `
-SourceComputerName "SRV-MTL" `
-DestinationComputerName "SRV-QC" `
-Verbose
# ─── Rapport de réplication ───────────────────────────────────────────────────
Write-DfsrHealthReport -GroupName "GRP-RH-Replication" `
-ReferenceComputerName "SRV-MTL" `
-Path "C:\Rapports" `
-CountFiles $true
# ─── Forcer la synchronisation immédiate ──────────────────────────────────────
Sync-DfsReplicationGroup -GroupName "GRP-RH-Replication" `
-SourceComputerName "SRV-MTL" `
-DestinationComputerName "SRV-QC" `
-DurationInMinutes 5
| Journal | Emplacement |
|---|---|
| DFSR | Journaux des applications et des services → DFS Replication |
| DFS Namespaces | Journaux des applications et des services → DFS Namespace |
| ID | Signification |
|---|---|
| 4104 | La réplication a démarré correctement |
| 4112 | Conflit détecté, fichier déplacé dans ConflictAndDeleted |
| 4202 | Erreur de connexion entre membres |
| 9036 | Volume en pause (dépassement de quota) |
DFSR crée automatiquement un dossier caché DfsrPrivate dans chaque dossier répliqué :
C:\Partages\RH\
├── DfsrPrivate\ ← Caché, ne pas modifier
│ ├── ConflictAndDeleted\ ← Fichiers en conflit ou supprimés
│ ├── Staging\ ← Fichiers en transit (temporaire)
│ └── PreExisting\ ← Fichiers existants avant la réplication
└── [Vos fichiers réels]
⚠️ Ne jamais modifier ou supprimer manuellement le dossier
DfsrPrivate!
Le dossier Staging est utilisé comme tampon temporaire. Sa taille par défaut est 4 Go. Pour des volumes de réplication importants, il faut l'augmenter.
# Augmenter la taille du staging à 20 Go
Set-DfsrMembership -GroupName "GRP-RH-Replication" `
-FolderName "RH" `
-ComputerName "SRV-MTL" `
-StagingSizeInMB 20480 `
-DomainName "contoso.local" `
-Force
🧑💻 Scénario : Vous êtes administrateur réseau pour l'entreprise TechNord Inc. L'entreprise a deux bureaux (Montréal et Québec). Vous devez configurer DFS pour unifier l'accès aux fichiers et DFSR pour synchroniser le dossier
Projetsentre les deux serveurs.
Sur SRV-MTL et SRV-QC, ouvrir PowerShell en tant qu'administrateur :
# Sur les DEUX serveurs — Installer DFS
Install-WindowsFeature -Name FS-DFS-Namespace, FS-DFS-Replication -IncludeManagementTools
# Sur SRV-MTL — Créer le dossier et le partage
New-Item -Path "C:\Partages\Projets" -ItemType Directory -Force
New-SmbShare -Name "Projets$" -Path "C:\Partages\Projets" -FullAccess "Administrateurs"
# Sur SRV-QC — Créer le dossier et le partage
New-Item -Path "C:\Partages\Projets" -ItemType Directory -Force
New-SmbShare -Name "Projets$" -Path "C:\Partages\Projets" -FullAccess "Administrateurs"
# Sur SRV-MTL
New-DfsnRoot -Path "\\technord.local\Partages" `
-TargetPath "\\SRV-MTL\Partages" `
-Type DomainV2
New-DfsnFolder -Path "\\technord.local\Partages\Projets" `
-TargetPath "\\SRV-MTL\Projets$"
New-DfsnFolderTarget -Path "\\technord.local\Partages\Projets" `
-TargetPath "\\SRV-QC\Projets$"
Test : Ouvrir \\technord.local\Partages\Projets depuis un poste client → ✅
# Créer le groupe de réplication
New-DfsReplicationGroup -GroupName "GRP-Projets" -DomainName "technord.local"
# Ajouter les membres
Add-DfsrMember -GroupName "GRP-Projets" `
-ComputerName "SRV-MTL", "SRV-QC" `
-DomainName "technord.local"
# Créer le dossier répliqué
New-DfsReplicatedFolder -GroupName "GRP-Projets" `
-FolderName "Projets" `
-DomainName "technord.local"
# Configurer les chemins locaux
Set-DfsrMembership -GroupName "GRP-Projets" -FolderName "Projets" `
-ComputerName "SRV-MTL" -ContentPath "C:\Partages\Projets" `
-PrimaryMember $true -DomainName "technord.local" -Force
Set-DfsrMembership -GroupName "GRP-Projets" -FolderName "Projets" `
-ComputerName "SRV-QC" -ContentPath "C:\Partages\Projets" `
-DomainName "technord.local" -Force
# Créer les connexions
Add-DfsrConnection -GroupName "GRP-Projets" `
-SourceComputerName "SRV-MTL" -DestinationComputerName "SRV-QC" `
-DomainName "technord.local"
Add-DfsrConnection -GroupName "GRP-Projets" `
-SourceComputerName "SRV-QC" -DestinationComputerName "SRV-MTL" `
-DomainName "technord.local"
# Sur SRV-MTL — Créer un fichier test
New-Item -Path "C:\Partages\Projets\Projet_Alpha.txt" -ItemType File
Set-Content -Path "C:\Partages\Projets\Projet_Alpha.txt" -Value "Fichier créé sur SRV-MTL"
# Attendre 30-60 secondes, puis vérifier sur SRV-QC
Get-ChildItem -Path "C:\Partages\Projets\"
Get-Content -Path "C:\Partages\Projets\Projet_Alpha.txt"
# Vérifier l'état du backlog
Get-DfsrBacklog -GroupName "GRP-Projets" -FolderName "Projets" `
-SourceComputerName "SRV-MTL" `
-DestinationComputerName "SRV-QC" -Verbose
Résultat attendu : Le fichier Projet_Alpha.txt apparaît sur SRV-QC ✅
# Résumé de l'état de réplication
Get-DfsReplicationGroup -GroupName "GRP-Projets" | Format-List
Get-DfsrMember -GroupName "GRP-Projets"
Get-DfsrConnection -GroupName "GRP-Projets"
| DFS Namespaces | DFS Replication | |
|---|---|---|
| Rôle | Accès unifié aux fichiers | Synchronisation de fichiers |
| Ce que ça fait | Cache le chemin réel derrière un chemin virtuel | Copie les fichiers modifiés entre serveurs |
| Nécessite AD ? | Recommandé (namespace de domaine) | Recommandé |
| Bénéfice principal | Un seul chemin UNC pour tous | Pas de perte de données si un serveur tombe |
| Utilisé sans l'autre ? | ✅ Oui | ✅ Oui |
Utilisateurs
│
▼
\\technord.local\Partages\Projets ← DFS Namespace (chemin unique)
│
┌────────┴────────┐
▼ ▼
\\SRV-MTL\Projets$ \\SRV-QC\Projets$ ← Cibles DFS
│ │
└────── DFSR ─────┘ ← Réplication automatique
(synchronisation
bidirectionnelle)
✅ Toujours utiliser un namespace de domaine en environnement AD
✅ Désigner un membre principal clair lors de la configuration initiale de DFSR
✅ Planifier la réplication initiale en dehors des heures de bureau pour les gros volumes
✅ Surveiller le backlog régulièrement pour détecter les problèmes de réplication
✅ Augmenter la taille du staging si les fichiers sont volumineux (vidéos, images, etc.)
✅ Tester la réplication après chaque modification de configuration
✅ Documenter la topologie (schémas, groupes, membres, planifications)
❌ Ne jamais modifier manuellement le dossier DfsrPrivate
❌ Ne pas utiliser DFSR pour les bases de données (SQL, Exchange, etc.)
❌ Ne pas ignorer les conflits dans ConflictAndDeleted
DfsrPrivate\ConflictAndDeleted ?| Ressource | Lien |
|---|---|
| Documentation Microsoft DFS | https://learn.microsoft.com/fr-fr/windows-server/storage/dfs-namespaces/dfs-overview |
| Documentation DFSR | https://learn.microsoft.com/fr-fr/windows-server/storage/dfs-replication/dfs-replication-overview |
| Module PowerShell DFSN | Get-Help New-DfsnRoot -Full |
| Module PowerShell DFSR | Get-Help New-DfsReplicationGroup -Full |