DFS Namespaces e DFS Replication no Windows Server 2026 — Guia Técnico para PME
IT · Sysadmin · PME | ✎ Duarte Spínola | 2026-06-27
O Distributed File System (DFS) continua a ser uma das tecnologias mais úteis e, simultaneamente, mais subutilizadas nas infraestruturas Windows Server das pequenas e médias empresas (PME) portuguesas. Neste artigo vamos cobrir, de forma prática e orientada a produção, a instalação e configuração de DFS Namespaces (DFSN) e DFS Replication (DFSR) num ambiente baseado em Active Directory, com exemplos em PowerShell, diagnóstico com dfsrdiag e um checklist final.
Este artigo assume um domínio AD DS funcional com pelo menos dois servidores membros (Windows Server 2022 ou 2026) que vão atuar como nós de namespace e replicação. Para a base do domínio, consulta o artigo sobre o controlador de domínio SAMBA-AD para PME 2026.
Índice
- O que é o DFS
- Cenários de utilização em PME
- Pré-requisitos: AD DS e firewall
- Instalar DFS Namespaces
- Configurar Namespace: standalone vs domain-based
- Folder targets e referral
- Instalar DFS Replication
- Replication groups: full mesh e hub-and-spoke
- Ficheiros, quotas e FSRM
- Diagnóstico: dfsrdiag, event logs e health report
- Conflict and Deleted folder
- Erros comuns
- Checklist final
1. O que é o DFS
O Distributed File System (DFS) é um conjunto de tecnologias do Windows Server que permitem agregar múltiplas partilhas de ficheiros, dispersas por vários servidores, numa única árvore lógica de pastas acessível por um caminho uniforme (UNC). A ideia central é simples: o utilizador não precisa de saber em que servidor está o ficheiro que precisa — acede a um caminho lógico e o DFS resolve o caminho físico por ele. O DFS engloba duas componentes distintas mas complementares:
- DFS Namespaces (DFSN): cria um espaço de nomes virtual — por exemplo
\\dominio.pt\Dados— onde cada pasta pode apontar para uma ou mais partilhas físicas em servidores diferentes. O utilizador vê uma árvore coerente; o DFS redireciona o acesso para o alvo (folder target) mais adequado conforme a localização do utilizador, o custo do site AD e a disponibilidade dos alvos. - DFS Replication (DFSR): motor de replicação multi-master baseado em RDPC (Remote Differential Compression) que sincroniza pastas entre servidores membros de um replication group, mantendo cópias idênticas e tolerantes a falhas. O DFSR replica apenas os blocos alterados de cada ficheiro, reduzindo drasticamente o tráfego de rede comparado a uma cópia integral. Detalhes técnicos do motor em DFS Replication Overview.
O DFSN abstrai a localização física; o DFSR garante que os conteúdos das várias cópias (replicas) convergem. Usados em conjunto oferecem tolerância a falhas, balanceamento de carga entre sites e um caminho de acesso estável mesmo quando os servidores mudam de nome ou são substituídos. A Microsoft mantém documentação de referência em DFS Overview.
Para entender a relação entre as duas componentes, considera o seguinte fluxo: um utilizador no Porto acede a \\empresa.pt\Dados\Contabilidade. O cliente contacta um namespace server, que devolve uma lista de targets ordenados por custo de site. O cliente escolhe o target do Porto (mesmo site, custo zero) e monta a partilha \\SRV-FICH-PTO\Contabilidade. Entretanto, em Lisboa, um colega faz o mesmo e recebe o target \\SRV-FICH-LIS\Contabilidade. O DFSR garante que as duas partilhas têm conteúdo idêntico, replicando alterações em segundo plano. Se o servidor do Porto cair, o DFS redireciona automaticamente os utilizadores do Porto para Lisboa — sem reconfigurar mapeamentos.
Evolução histórica
| Versão Windows Server | Tecnologia DFS | Notas |
|---|---|---|
| 2000 / 2003 | DFS + FRS | FRS era o motor de replicação; multi-master fraco, sem compressão diferencial |
| 2003 R2 / 2008 | DFS + DFSR introduzido | DFSR com RDPC; FRS ainda suportado em paralelo |
| 2008 R2 / 2012 | DFSN + DFSR | Modos domain-based V2; FRS marcado como deprecated |
| 2012 R2 / 2016 | DFSN + DFSR | FRS removido; DFSR é o único motor suportado |
| 2019 / 2022 / 2026 | DFSN + DFSR | Estabilidade e melhorias incrementais; suporte para clusters CSV limitado |
O DFSR substituiu por completo o antigo FRS (File Replication Service) a partir do Windows Server 2012 R2. O FRS foi removido e não existe em Windows Server 2019, 2022 ou 2026. Qualquer referência a FRS diz respeito a migrações legadas a partir de domínios antigos. Em migrações a partir de domínios com FRS, o primeiro passo é migrar SYSVOL para DFSR — processo documentado em DFS Replication Overview.
Componentes do DFSN
Para configurar corretamente um namespace, é útil conhecer os elementos que o compõem:
- Namespace root: o ponto de entrada de topo do namespace, por exemplo
\\empresa.pt\Dados. Pode ser standalone (guardado no registo do servidor) ou domain-based (guardado no AD). - Namespace server: servidor que hospeda o root e responde a pedidos de referral. Recomenda-se pelo menos dois para redundância.
- Folder: nodo dentro do namespace, por exemplo
\\empresa.pt\Dados\Contabilidade. Pode ter zero ou mais targets. - Folder target: partilha SMB física num servidor que serve o conteúdo da pasta. Uma pasta com vários targets oferece tolerância a falhas.
- Referral: lista de targets que o namespace server devolve ao cliente, ordenada por prioridade e custo de site.
2. Cenários de utilização em PME
Numa PME típica — digamos, uma empresa com escritórios no Porto e em Lisboa, 80 colaboradores, dois servidores de ficheiros — o DFS resolve três problemas concretos:
| Problema | Solução com DFS | Resultado |
|---|---|---|
| Mapeamentos de rede fixos que partem quando o servidor é substituído | Namespace domain-based \\empresa.pt\Dados |
O caminho UNC nunca muda, mesmo trocando o servidor físico |
| Utilizadores do Porto editam ficheiros que estão em Lisboa (latência) | DFSR full mesh entre os dois servidores; referral por site | Cada site usa a réplica local; alterações replicam em segundo plano |
| Um servidor de ficheiros cai e ninguém trabalha | Vários folder targets na mesma pasta do namespace | O DFS redireciona automaticamente para a outra réplica ativa |
Outros cenários comuns: centralização de home folders e pastas de departamento, distribuição de software e instaladores a partir de múltiplas réplicas, recuperação após desastre (a réplica num segundo site serve de backup operacional imediato), e migração de dados entre servidores sem reconfigurar logon scripts ou GPO de mapeamento. O article sobre virtualização com Hyper-V e PowerShell mostra como provisionar rapidamente os servidores que vão receber estas funções.
Cenário detalhado: empresa multi-site
Consideremos um caso real de uma empresa de distribuição com sede no Porto, filial em Lisboa e um pequeno escritório em Braga. Tem 120 colaboradores no total, dos quais 70 no Porto, 35 em Lisboa e 15 em Braga. A infraestrutura atual consiste num único servidor de ficheiros no Porto, acessível via VPN a partir de Lisboa e Braga. Os sintomas que motivam a adoção do DFS:
- Abertura de ficheiros Excel em Lisboa demora 15-30 segundos sobre VPN (latência 80ms, largura de banda limitada).
- O servidor do Porto é ponto único de falha — quando reinicia para atualizações, a empresa inteira fica sem acesso a ficheiros.
- Mapeamentos de rede em logon scripts apontam para
\\srv-fich-01\Departamentos; se o servidor for substituído, todos os scripts precisam de ser reescritos. - O backup noturno demora 14 horas e coincide com a janela de replicação de outras operações.
A solução com DFSN+DFSR para este cenário desenrola-se em fases:
| Fase | Acção | Benefício imediato |
|---|---|---|
| 1 — Namespace | Criar namespace domain-based \\empresa.pt\Dados com targets no Porto e em Lisboa |
Camada lógica única; scripts e GPO usam \\empresa.pt\Dados\* para sempre |
| 2 — Replicação | Criar replication group full mesh Porto-Lisboa para pastas partilhadas; hub-and-spoke com Braga via Porto | Cada site acede à réplica local; latência elimina-se para leitura |
| 3 — Referral por site | Ativar EnableSiteCosting; targets com PriorityClass SiteCost-Normal | Clientes do Porto usam o Porto; clientes de Lisboa usam Lisboa; falhas redirecionam automaticamente |
| 4 — FSRM | Quotas por departamento; file screens para bloquear multimédia; filtros DFSR para excluir .tmp, .bak |
Controlo de crescimento; tráfego de replicação otimizado |
| 5 — Monitorização | Health report diário automático; alertas de backlog e falhas de conexão | Proatividade — detecta problemas antes dos utilizadores |
Cenário: migração entre servidores
Outra utilização clássica do DFS é a migração de dados entre servidores sem interromper o acesso. O processo: instala o DFSN no novo servidor, adiciona-o como target da pasta, ativa a replicação DFSR do antigo para o novo (antigo como PrimaryMember), aguarda convergência (backlog zero), muda o referral para preferir o novo servidor, e finalmente remove o target antigo. Os utilizadores não notam nada — o caminho \\empresa.pt\Dados\Contabilidade mantém-se constante. Este padrão é particularmente útil quando se substitui hardware antigo ou se migra de servidores físicos para virtuais (ver virtualização Hyper-V com PowerShell).
Cenário: recuperação após desastre (DR)
O DFSR não é um backup — não protege contra apagamentos acidentais (a replicação propaga o apagamento). Mas é um excelente complemento de DR operacional: se o servidor primário cair por falha de hardware, os utilizadores continuam a trabalhar na réplica no segundo site. O RTO (Recovery Time Objective) passa de horas (restauro de backup) para minutos (failover automático via referral). Para RPO (Recovery Point Objective), depende do schedule de replicação e backlog — em full mesh com schedule contínuo, o RPO é tipicamente inferior a 15 minutos para ficheiros pequenos. Sempre combina o DFSR com uma solução de backup adequada (Veeam, Backup Exec, ou cópias de volume shadow copy).
3. Pré-requisitos: AD DS e firewall
Antes de instalar qualquer função, há pré-requisitos que têm de estar garantidos. O DFSN domain-based e o DFSR dependem do Active Directory Domain Services (AD DS) para guardar a configuração do namespace, os targets e os membros dos replication groups. A sincronização de bases DFSR usa também objetos no AD (o atributo msDFSR-ComputerReference em cada servidor membro). Sem um AD DS funcional, o DFSN domain-based não funciona e o DFSR não consegue descobrir os membros do replication group.
AD DS
- Domínio com nível funcional mínimo Windows Server 2012 R2 (recomendado 2016 ou superior para suportar todas as funcionalidades DFSR modernas).
- O schema tem de suportar as classes DFSN e DFSR — em domínios criados com Windows Server 2012 R2 ou posterior isto já está garantido. Consulta DFS Namespaces Overview para detalhes de compatibilidade.
- Servidores membros (não precisam de ser controladores de domínio) ingressados no domínio. Os controladores de domínio podem ser namespace servers, mas não é recomendado sobrecarregar o DC com tráfego de ficheiros.
- Tempo sincronizado via NTP — o DFSR é sensível a skew de relógio superior a 15 minutos. Usa
w32tm /query /statuspara verificar a fonte de tempo em cada servidor membro. - Sites e sub-redes configurados em AD Sites and Services — o EnableSiteCosting do DFSN depende desta configuração para calcular custos entre sites. Sem sites definidos, o referral não consegue distinguir “mesmo site” de “site remoto”.
- Permissões: a conta que instala e configura DFSN/DFSR tem de ser membro do grupo Domain Admins ou ter delegado permissões sobre o contentor DFS no AD (
CN=DFSR-GlobalSettings,CN=System,DC=empresa,DC=pt).
Verificação prévia em PowerShell
# Verificar nível funcional do domínio
Get-ADDomain | Select-Object Name, DNSRoot, DomainMode
# Verificar sites definidos no AD
Get-ADReplicationSite | Select-Object Name, Description
# Verificar sincronismo de tempo num servidor membro
w32tm /query /status
# Verificar que o servidor está ingressado no domínio
Get-CimInstance Win32_ComputerSystem | Select-Object Domain, PartOfDomain
Firewall
O DFSN usa RPC dinâmico para gestão e SMB para acesso aos targets; o DFSR usa também RPC dinâmico na faixa efémera, além do SMB. A regra mais simples é ativar o perfil de firewall “File and Printer Sharing” e “DFS Management” nos servidores membros:
# Ativar regras de firewall para DFSN, DFSR e SMB nos servidores membros
Set-NetFirewallRule -DisplayGroup "File and Printer Sharing" -Enabled True
Set-NetFirewallRule -DisplayGroup "DFS Replication" -Enabled True
Set-NetFirewallRule -DisplayGroup "Remote Volume Management" -Enabled True
# Verificar regras específicas DFSR
Get-NetFirewallRule -DisplayGroup "DFS Replication" |
Select-Object DisplayName, Enabled, Direction, Profile
Portas necessárias
| Porta / protocolo | Serviço | Origem → destino |
|---|---|---|
| TCP 445 (SMB) | Acesso a folder targets e partilhas administrativas | Cliente → namespace server; Cliente → file server |
| TCP 135 (RPC endpoint mapper) | Gestão DFSN, RPC DFSR | Servidor membro → Servidor membro; Admin → namespace server |
| TCP 49152-65535 (RPC dinâmico) | Tráfego de replicação DFSR e gestão DFSN | Servidor membro → Servidor membro |
| UDP 389 / TCP 389 (LDAP) | Consulta AD para configuração DFS | Servidor membro → Controlador de domínio |
| TCP 53 / UDP 53 (DNS) | Resolução de nomes de domínio e servidores | Todos → Servidor DNS |
| UDP 123 (NTP) | Sincronismo de tempo | Servidor membro → NTP / PDC emulator |
O DFSR usa RPC dinâmico (porta TCP 135 + portas efémeras 49152-65535) entre membros do replication group. Em ambientes com firewall entre sites, restringir estas portas com Set-RDPCMinPort via registo ou usar uma política que fixe o intervalo. Sem conectividade RPC, a replicação fica em estado de erro 1722 (RPC server unavailable). Em ambientes com firewall de rede (não Windows Firewall) entre sites, garante que as portas 135, 445 e o intervalo efémero estão abertas em ambos os sentidos.
Pré-seeding
Antes de ativar a replicação para uma pasta com grande volume de dados pré-existente, é fortemente recomendado fazer pré-seed — copiar os dados para o novo membro antes de o adicionar ao replication group. Isto reduz drasticamente o tempo de sincronização inicial e o tráfego de rede. O robocopy é a ferramenta padrão para pré-seed porque preserva timestamps, atributos e ACLs NTFS:
# Pré-seed com robocopy: copiar Contabilidade de SRV-FICH-01 para SRV-FICH-02
robocopy \\SRV-FICH-01\Contabilidade D:\Contabilidade `
/E /COPYALL /R:1 /W:1 /MT:16 /LOG:C:\Logs\preseed-contabilidade.log
# Verificar integridade do pré-seed com Get-FileHash em amostra
Get-FileHash \\SRV-FICH-01\Contabilidade\importantes\*.xlsx -Algorithm SHA256
Get-FileHash D:\Contabilidade\importantes\*.xlsx -Algorithm SHA256
Para testar conectividade RPC e LDAP antes de avançar, consulta o guia de diagnóstico de conectividade Windows Server, que inclui testes com PortQry e nltest.
4. Instalar DFS Namespaces
A instalação faz-se pela adição da função (Role Service) “DFS Namespaces” no servidor que vai ser namespace server. Pode ser feita via Server Manager ou PowerShell. É boa prática instalar também as ferramentas de gestão (RSAT) para administrar a partir de qualquer máquina.
Server Manager
- Abrir Server Manager → Manage → Add Roles and Features.
- Avançar até Server Roles → File and Storage Services → File and iSCSI Services → marcar “DFS Namespaces”.
- Marcar também “DFS Replication” (vamos precisar na secção 7).
- Em Features → Remote Server Administration Tools → File Services Tools → marcar “DFS Management Tools”.
- Install e aguardar conclusão.
PowerShell
# Instalar DFSN + DFSR + ferramentas de gestão num único comando
Install-WindowsFeature -Name FS-DFS-Namespace, FS-DFS-Replication, RSAT-DFS-Mgmt-Conduit `
-IncludeManagementTools -ComputerName SRV-FICH-01
# Repetir no segundo servidor membro
Install-WindowsFeature -Name FS-DFS-Namespace, FS-DFS-Replication `
-IncludeManagementTools -ComputerName SRV-FICH-02
# Verificar instalação
Get-WindowsFeature -Name FS-DFS* -ComputerName SRV-FICH-01
Corre o Install-WindowsFeature em ambos os servidores ao mesmo tempo usando Jobs do PowerShell (Start-Job ou Invoke-Command -AsJob) para poupar tempo em implementações com vários nós.
A documentação oficial da instalação está em DFS Overview — Microsoft Learn e em DFS Namespaces Overview.
5. Configurar Namespace: standalone vs domain-based
Existem dois tipos de namespace e a escolha tem impacto duradouro na infraestrutura. Não é trivial converter um namespace standalone em domain-based mais tarde — o melhor é decidir corretamente à partida.
| Característica | Standalone | Domain-based |
|---|---|---|
| Caminho UNC | \\servidor\Namespace |
\\dominio.pt\Namespace |
| Configuração guardada em | Registo local do servidor | Active Directory (particionado por domínio) |
| Suporta múltiplos namespace servers (redundância) | Sim, mas sem sincronização automática — exige cópia manual ou via script | Sim, o AD replica a configuração para todos os namespace servers automaticamente |
| Recomendado para | Workgroup, servidores isolados, testes | Qualquer ambiente com AD DS — recomendado em 95% dos casos |
| Limite de namespaces por domínio (Windows 2016+) | N/A | até 5000 namespaces |
Criar namespace domain-based via PowerShell
# Criar namespace domain-based chamado "Dados" no domínio empresa.pt
New-DfsnRoot -Path "\\empresa.pt\Dados" `
-Type DomainV2 `
-TargetPath "\\SRV-FICH-01\Dados" `
-Description "Namespace central de dados da empresa" `
-EnableSiteCosting $true
# Adicionar SRV-FICH-02 como segundo namespace server (redundância)
New-DfsnRootTarget -Path "\\empresa.pt\Dados" `
-TargetPath "\\SRV-FICH-02\Dados"
# Verificar configuração do namespace
Get-DfsnRoot -Path "\\empresa.pt\Dados" | Format-List
O parâmetro -EnableSiteCosting $true ativa a seleção de target com base no custo de site definido em AD Sites and Services. Isto faz com que um utilizador no Porto receba preferencialmente o target do Porto, e não o de Lisboa, reduzindo latência e tráfego WAN. Este é o comportamento recomendado em ambientes multi-site.
Namespace standalone
# Criar namespace standalone (sem AD)
New-DfsnRoot -Path "\\SRV-FICH-01\Dados" `
-Type Standalone `
-TargetPath "\\SRV-FICH-01\Dados$" `
-Description "Namespace standalone para ambiente isolado"
Para ambientes de produção com AD, usa sempre domain-based. Para detalhes das opções de criação, consulta DFS Namespaces Overview.
6. Folder targets e referral
Dentro do namespace criam-se pastas (folders) que apontam para um ou mais folder targets. Cada target é uma partilha SMB num servidor. Quando um utilizador acede a \\empresa.pt\Dados\Contabilidade, o namespace server devolve uma lista de targets (referral) e o cliente escolhe um, por ordem e custo, conforme as regras configuradas.
Criar pasta com dois targets
# Criar pasta Contabilidade no namespace com dois targets (réplicas)
New-DfsnFolder -Path "\\empresa.pt\Dados\Contabilidade" `
-TargetPath "\\SRV-FICH-01\Contabilidade" `
-Description "Pasta de Contabilidade"
# Adicionar o segundo target (réplica no SRV-FICH-02)
New-DfsnFolderTarget -Path "\\empresa.pt\Dados\Contabilidade" `
-TargetPath "\\SRV-FICH-02\Contabilidade"
# Configurar referral: targets na mesma ordem (prime target same site)
Set-DfsnFolderTarget -Path "\\empresa.pt\Dados\Contabilidade" `
-TargetPath "\\SRV-FICH-01\Contabilidade" `
-ReferralPriorityClass SiteCost-Normal `
-ReferralPriorityRank 0
Set-DfsnFolderTarget -Path "\\empresa.pt\Dados\Contabilidade" `
-TargetPath "\\SRV-FICH-02\Contabilidade" `
-ReferralPriorityClass SiteCost-Normal `
-ReferralPriorityRank 0
# Listar targets e respetivos referral settings
Get-DfsnFolderTarget -Path "\\empresa.pt\Dados\Contabilidade" |
Select-Object TargetPath, ReferralPriorityClass, ReferralPriorityRank
Tipos de referral
| Priority Class | Comportamento |
|---|---|
| Global-High | Target sempre escolhido primeiro, independentemente de site |
| SiteCost-Normal | Targets ordenados pelo custo de site (preferencial mesmo site) — o mais comum |
| Global-Low | Target usado apenas se todos os outros estiverem indisponíveis |
Dentro de cada classe, o ReferralPriorityRank (0, 1, 2…) desempata. O cliente cacheia o referral durante um tempo configurável (padrão 300 segundos); em ambientes com failover frequente pode baixar-se o cache TTL via Set-DfsnRoot -CacheTTL. A referência completa de cmdlets está em DFS Overview.
Sempre que adicionares um segundo target a uma pasta, ativa a replicação DFSR entre os dois destinos (secção 8). Sem replicação, os utilizadores podem ver conteúdo diferente consoante o target que lhes calha no referral, o que gera chamadas para o suporte.
7. Instalar DFS Replication
A instalação do DFSR foi já feita na secção 4 (a função FS-DFS-Replication). O passo seguinte é garantir que o serviço está em execução e configurar o modo de replicação. O DFSR pode operar em dois modos:
- Full mesh (multi-master): todos os membros recebem e enviam alterações; ideal para escritórios que colaboram entre si.
- Hub-and-spoke: um servidor central (hub) replica com cada filial (spoke); reduz tráfego WAN mas introduz um ponto de concentração.
# Verificar estado do serviço DFSR nos dois servidores
Get-Service DFSR -ComputerName SRV-FICH-01, SRV-FICH-02 |
Select-Object MachineName, Name, Status, StartType
# Garantir que o serviço está em arranque automático e a correr
Set-Service DFSR -StartupType Automatic -ComputerName SRV-FICH-01
Set-Service DFSR -StartupType Automatic -ComputerName SRV-FICH-02
Start-Service DFSR -ComputerName SRV-FICH-01
Start-Service DFSR -ComputerName SRV-FICH-02
O DFSR replica ficheiros fechados. Ficheiros de bases de dados que estão sempre abertos (Exchange EDB, SQL Server MDF, Hyper-V VHDX em uso) não devem ser replicados via DFSR — usa tecnologias próprias (Always On, Cluster Shared Volumes). O DFSR detecta ficheiros abertos e ignora-os temporariamente, mas isso causa divergência entre réplicas.
O motor DFSR usa a tecnologia RDPC (Remote Differential Compression) para transferir apenas os blocos alterados, não o ficheiro completo — crucial para ficheiros grandes como vídeos de formação ou ISOs de software interno. Consulta DFS Replication Overview para o detalhe técnico.
8. Replication groups: full mesh e hub-and-spoke
Um replication group é um conjunto de servidores que partilham um conjunto de pastas replicadas (replicated folders). Cada servidor membro tem uma cópia local da pasta; o DFSR sincroniza mudanças entre todos os membros conforme a topologia definida.
Full mesh — dois servidores
# Criar replication group full mesh com dois membros
New-DfsReplicationGroup -GroupName "RG-Dados" `
-DomainName "empresa.pt" `
-Description "Replicação de dados entre SRV-FICH-01 e SRV-FICH-02" `
-FullMesh
# Adicionar membros ao grupo
Add-DfsrMember -GroupName "RG-Dados" -ComputerName "SRV-FICH-01"
Add-DfsrMember -GroupName "RG-Dados" -ComputerName "SRV-FICH-02"
# Adicionar replicated folder "Contabilidade"
New-DfsReplicatedFolder -GroupName "RG-Dados" `
-FolderName "Contabilidade" `
-Description "Pasta de Contabilidade replicada"
# Definir caminho local em cada membro e primário (para seeding inicial)
Set-DfsrMembership -GroupName "RG-Dados" `
-ComputerName "SRV-FICH-01" `
-FolderName "Contabilidade" `
-ContentPath "D:\Contabilidade" `
-PrimaryMember $true
Set-DfsrMembership -GroupName "RG-Dados" `
-ComputerName "SRV-FICH-02" `
-FolderName "Contabilidade" `
-ContentPath "D:\Contabilidade" `
-PrimaryMember $false
# Verificar topologia criada
Get-DfsrTopology -GroupName "RG-Dados" | Format-Table -AutoSize
# Aguardar propagação da configuração via AD (pode demorar até 15 min)
# Forçar polling imediato em ambos os membros:
dfsrdiag pollad /member:SRV-FICH-01
dfsrdiag pollad /member:SRV-FICH-02
Verificar estado após configuração
# Listar todos os replication groups do domínio
Get-DfsReplicationGroup -DomainName "empresa.pt" | Format-Table -AutoSize
# Detalhe de um grupo específico
Get-DfsReplicationGroup -GroupName "RG-Dados" | Format-List *
# Listar membros de um grupo
Get-DfsrMember -GroupName "RG-Dados" | Format-Table -AutoSize
# Listar replicated folders de um grupo
Get-DfsReplicatedFolder -GroupName "RG-Dados" | Format-Table -AutoSize
# Listar conexões (links) da topologia
Get-DfsrConnection -GroupName "RG-Dados" | Format-Table -AutoSize
O -PrimaryMember $true indica que o conteúdo deste servidor é a fonte autoritária no arranque inicial da replicação. O DFSR faz uma sincronização inicial (seeding) onde o não-primário aceita o estado do primário. Escolhe o servidor com dados mais atualizados como primário. Após a convergência inicial, todos os membros são iguais (multi-master) e o conceito de PrimaryMember deixa de ser relevante até se adicionar um novo membro ao grupo.
Schedule de replicação
Por defeito, as conexões DFSR estão sempre ativas (schedule Full). Em ambientes com largura de banda limitada entre sites, pode configurar-se schedule com bandwidth limits ou janelas específicas:
# Configurar schedule com bandwidth limit de 256 Kbps fora das horas de expediente
Set-DfsrConnectionSchedule -GroupName "RG-Dados" `
-SourceComputerName "SRV-FICH-01" `
-DestinationComputerName "SRV-FICH-02" `
-ScheduleType Always `
-BandwidthDetail 256
# Schedule com janela específica: replicação full das 20h às 6h, off durante expediente
Set-DfsrConnectionSchedule -GroupName "RG-Dados" `
-SourceComputerName "SRV-FICH-01" `
-DestinationComputerName "SRV-FICH-02" `
-ScheduleType Custom `
-CustomSchedule @{
Monday = @{0..6='Full'; 7..19='None'; 20..23='Full'}
Tuesday = @{0..6='Full'; 7..19='None'; 20..23='Full'}
Wednesday = @{0..6='Full'; 7..19='None'; 20..23='Full'}
Thursday = @{0..6='Full'; 7..19='None'; 20..23='Full'}
Friday = @{0..6='Full'; 7..19='None'; 20..23='Full'}
Saturday = @{0..23='Full'}
Sunday = @{0..23='Full'}
}
Quando o schedule está em “None”, a replicação para completamente — as alterações acumulam-se no backlog. Ao retomar, o DFSR precisa de sincronizar tudo o que se acumulou, o que pode gerar picos de tráfego. Em links WAN limitados, é preferível usar bandwidth limits baixos (32-128 Kbps) durante o expediente em vez de None, para manter o backlog sob controlo.
Hub-and-spoke — três ou mais sites
# Criar replication group hub-and-spoke
New-DfsReplicationGroup -GroupName "RG-MultiSite" `
-DomainName "empresa.pt" `
-Description "Topologia hub-spoke: matriz no Porto, filiais em Lisboa e Braga" `
-HubAndSpoke -HubComputerName "SRV-FICH-PTO"
# Adicionar membros
Add-DfsrMember -GroupName "RG-MultiSite" -ComputerName "SRV-FICH-PTO"
Add-DfsrMember -GroupName "RG-MultiSite" -ComputerName "SRV-FICH-LIS"
Add-DfsrMember -GroupName "RG-MultiSite" -ComputerName "SRV-FICH-BRG"
# Replicated folder "RH"
New-DfsReplicatedFolder -GroupName "RG-MultiSite" -FolderName "RH"
Set-DfsrMembership -GroupName "RG-MultiSite" -ComputerName "SRV-FICH-PTO" `
-FolderName "RH" -ContentPath "D:\RH" -PrimaryMember $true
Set-DfsrMembership -GroupName "RG-MultiSite" -ComputerName "SRV-FICH-LIS" `
-FolderName "RH" -ContentPath "D:\RH" -PrimaryMember $false
Set-DfsrMembership -GroupName "RG-MultiSite" -ComputerName "SRV-FICH-BRG" `
-FolderName "RH" -ContentPath "D:\RH" -PrimaryMember $false
# Verificar conexões criadas (hub → cada spoke)
Get-DfsrConnection -GroupName "RG-MultiSite" | Format-Table -AutoSize
Em hub-and-spoke, uma alteração feita em Lisboa sobe ao hub no Porto e depois desce para Braga. O tráfego WAN é otimizado porque cada spoke só fala com o hub, mas se o hub cair a replicação entre spokes para. Para resiliência, pode adicionar-se uma conexão manual entre os dois spokes críticos:
# Conexão adicional entre Lisboa e Braga (backup de topologia)
Add-DfsrConnection -GroupName "RG-MultiSite" `
-SourceComputerName "SRV-FICH-LIS" `
-DestinationComputerName "SRV-FICH-BRG" `
-Description "Conexão de resiliência LIS-BRG"
Comparação de topologias
| Critério | Full mesh | Hub-and-spoke |
|---|---|---|
| Nº de conexões (n servidores) | n × (n-1) — cresce quadraticamente | 2 × (n-1) — cresce linearmente |
| Latência de propagação | Mínima — todos falam com todos | Uma salt extra via hub |
| Tráfego total na WAN | Elevado em topologias grandes | Otimizado — cada spoke só fala com o hub |
| Tolerância a falhas | Alta — qualquer membro pode cair sem interromper | Baixa se o hub cair; alta se houver conexões extras |
| Ideal para | 2-4 servidores no mesmo site ou sites próximos | 5+ servidores ou ambientes multi-site com hub central |
| Complexidade de gestão | Simples — tudo automático | Maior — exige planeamento do hub e conexões extras |
Adicionar novo membro a um grupo existente
# Adicionar SRV-FICH-BRG ao grupo RG-Dados (extensão de full mesh)
Add-DfsrMember -GroupName "RG-Dados" -ComputerName "SRV-FICH-BRG"
# Definir caminho local — novo membro não é primário
Set-DfsrMembership -GroupName "RG-Dados" `
-ComputerName "SRV-FICH-BRG" `
-FolderName "Contabilidade" `
-ContentPath "D:\Contabilidade" `
-PrimaryMember $false
# Adicionar conexões do novo membro para todos os existentes
Add-DfsrConnection -GroupName "RG-Dados" -SourceComputerName "SRV-FICH-01" -DestinationComputerName "SRV-FICH-BRG"
Add-DfsrConnection -GroupName "RG-Dados" -SourceComputerName "SRV-FICH-02" -DestinationComputerName "SRV-FICH-BRG"
Add-DfsrConnection -GroupName "RG-Dados" -SourceComputerName "SRV-FICH-BRG" -DestinationComputerName "SRV-FICH-01"
Add-DfsrConnection -GroupName "RG-Dados" -SourceComputerName "SRV-FICH-BRG" -DestinationComputerName "SRV-FICH-02"
# Forçar polling para acelerar deteção
dfsrdiag pollad /member:SRV-FICH-BRG
A documentação completa de topologias está em DFS Replication Overview e em DFS Overview.
9. Ficheiros, quotas e FSRM
Para além de replicar, é importante controlar o que é replicado e quanto espaço ocupa. Aqui entra o File Server Resource Manager (FSRM), que permite quotas, file screens e relatórios. A integração com DFSR é indireta mas importante: FSRM impede que certos ficheiros entrem na árvore e que uma pasta cresça sem controlo, evitando que a replicação propague conteúdo indesejado.
Instalar FSRM
Install-WindowsFeature -Name FS-Resource-Manager -IncludeManagementTools -ComputerName SRV-FICH-01
Criar quota rígida numa pasta replicada
# Quota rígida de 50 GB na pasta Contabilidade, com limiar de aviso a 85%
New-FsrmQuota -Path "D:\Contabilidade" `
-Size 50GB `
-SoftLimit $false `
-Threshold @(@{Percentage=85; Action="Event"; Subject="Aviso quota Contabilidade"}) `
-Description "Quota 50GB para Contabilidade"
# File screen: bloquear ficheiros multimédia na pasta replicada
New-FsrmFileScreen -Path "D:\Contabilidade" `
-Description "Bloquear multimédia e executáveis" `
-IncludeGroup @("Audio and Video Files", "Executable Files") `
-Active
Por defeito, o DFSR replica tudo. Podes (e deves) configurar filtros globais via Set-DfsrServiceConfig para excluir extensões como .tmp, .bak, .lck, ficheiros de shadow-copy e pastas temporárias do utilizador. Isto reduz tráfego e evita replicar lixo.
# Excluir extensões da replicação em todo o grupo
Set-DfsrServiceConfig -ComputerName SRV-FICH-01, SRV-FICH-02 `
-ExclusiveFileFilter "~*, *.tmp, *.bak, *.lck, *.iso"
Para gestão de grupos de segurança que vão ter permissões sobre estas pastas, o artigo sobre gestão de security groups com PowerShell oferece o enquadramento necessário.
10. Diagnóstico: dfsrdiag, event logs e health report
O DFSR é robusto mas não é silencioso. Quando algo falha, há três ferramentas essenciais para diagnosticar: a linha de comandos dfsrdiag, os event logs específicos e o Health Report gerado pela consola DFS Management ou por script. A monitorização proativa destas fontes evita que problemas pequenos se transformem em incidentes de serviço.
dfsrdiag — comandos principais
# Estado de replicação: mostra versões pendentes em cada membro
dfsrdiag replstate /rgname:RG-Dados /member:SRV-FICH-02
# Estado de backlog entre dois membros (nº de updates por enviar)
dfsrdiag backlog /rgname:RG-Dados /rfname:Contabilidade `
/sendingmember:SRV-FICH-01 /receivingmember:SRV-FICH-02
# Identificar o parceiro que mais atrasa
dfsrdiag idrecord /rgname:RG-Dados /rfname:Contabilidade /member:SRV-FICH-02
# Forçar sincronização de uma pasta específica
dfsrdiag pollad /member:SRV-FICH-02
# Ver últimas 50 atualizações do DFSR num membro
dfsrdiag updates /rgname:RG-Dados /rfname:Contabilidade /member:SRV-FICH-02
# Dump do estado completo da base DFSR de um membro
dfsrdiag static /rgname:RG-Dados /member:SRV-FICH-02
# Ver config de replicação (filtros, quotas, schedule)
dfsrdiag config /rgname:RG-Dados /member:SRV-FICH-01
Interpretar o backlog
O comando dfsrdiag backlog devolve dois números: updates pendentes e updates em trânsito. Um backlog saudável tem menos de 100 ficheiros; acima de 1000 indica problema de largura de banda ou schedule restritivo; acima de 10000 indica paragem de replicação (firewall, serviço parado, ou erro de conexão). Monitoriza este valor diariamente.
# Script para verificar backlog entre todos os membros de um grupo
$group = "RG-Dados"
$folder = "Contabilidade"
$members = Get-DfsrMember -GroupName $group
foreach ($src in $members) {
foreach ($dst in $members) {
if ($src.ComputerName -ne $dst.ComputerName) {
$result = dfsrdiag backlog /rgname:$group /rfname:$folder `
/sendingmember:$($src.ComputerName) `
/receivingmember:$($dst.ComputerName)
$count = ($result | Select-String "Pending").Count
Write-Output "$($src.ComputerName) -> $($dst.ComputerName): $count updates pendentes"
}
}
}
Health Report via PowerShell
# Gerar health report em HTML para o grupo RG-Dados
New-DfsrHealthReport -GroupName "RG-Dados" `
-ReferenceComputerName "SRV-FICH-01" `
-MemberComputerName "SRV-FICH-02" `
-Path "C:\Reports\DFSR-RG-Dados.html" `
-CountFiles $true
O health report mostra backlogs, erros, últimos contactos, tamanho de fila e estado das conexões. Em ambientes de produção, automatizar este relatório diariamente é fundamental — entrega-o por email ao administrador ou publica-o numa partilha interna.
# Automatizar health report diário via Scheduled Task
$action = New-ScheduledTaskAction -Execute "powershell.exe" `
-Argument '-NoProfile -Command "New-DfsrHealthReport -GroupName RG-Dados -ReferenceComputerName SRV-FICH-01 -MemberComputerName SRV-FICH-02 -Path \\SRV-FICH-01\Reports$\DFSR-Daily.html -CountFiles $true"'
$trigger = New-ScheduledTaskTrigger -Daily -At "07:00"
Register-ScheduledTask -TaskName "DFSR-HealthReport-Daily" `
-Action $action -Trigger $trigger -User "EMPRESA\AdminTask" -RunLevel Highest
Event logs
| Log | Path | Eventos a vigiar |
|---|---|---|
| DFS Replication | Applications and Services Logs → DFS Replication | 4008 (inicialização OK), 4102 (recebeu update), 4412 (conflito resolvido), 5008 (conexão falhou), 5014 (RPC indisponível), 4012 (journal wrap), 4204 (conexão estabelecida) |
| DFS Namespaces | System | 14504 (referral OK), 14512 (target indisponível) |
| SMB Client / Server | Applications and Services Logs → Microsoft-Windows-SmbClient/Server | Erros de acesso a targets, reconexões |
Eventos DFSR mais relevantes
| Event ID | Severidade | Significado | Acção |
|---|---|---|---|
| 4008 | Information | Serviço DFSR iniciou com sucesso | Normal — confirma arranque |
| 4102 | Information | Recebeu update de versão de ficheiro | Normal — replicação a decorrer |
| 4204 | Warning | Conexão RPC estabelecida (após falha) | Vigiar frequência — se repetir, há instabilidade de rede |
| 4408 | Warning | DFSR detetou conflito e resolveu (last-writer-wins) | Verificar Conflict folder; educar utilizadores |
| 4412 | Warning | Ficheiro em conflito movido para Conflict and Deleted | Revisão manual semanal |
| 5008 | Error | Falha ao estabelecer conexão com parceiro | Verificar firewall, serviço DFSR no parceiro, rede |
| 5014 | Error | RPC server unavailable | Verificar serviço DFSR; skew de relógio |
| 4012 | Error | USN journal wrap — volume demasiado ativo | Aumentar USN journal; mover pasta para volume dedicado |
# Listar eventos de erro do DFSR nas últimas 24h
Get-WinEvent -LogName "DFS Replication" -MaxEvents 100 |
Where-Object LevelDisplayName -in "Error","Warning" |
Select-Object TimeCreated, Id, LevelDisplayName, Message |
Format-Table -AutoSize -Wrap
# Contar eventos por ID nas últimas 24h
$startTime = (Get-Date).AddHours(-24)
Get-WinEvent -LogName "DFS Replication" -FilterHashtable @{StartTime=$startTime} |
Group-Object Id |
Select-Object Name, Count |
Sort-Object Count -Descending
dfsutil para DFSN
O dfsutil é a ferramenta complementar para diagnóstico de namespaces. Permite ver referrals, limpar cache de clientes e exportar/importar configuração:
# Ver referral de um caminho de namespace
dfsutil client /pktinfo:\\empresa.pt\Dados\Contabilidade
# Limpar cache de referral num cliente (útil após mudança de target)
dfsutil client /pktflush
# Ver propriedades de um root DFSN
dfsutil root \\empresa.pt\Dados
# Exportar configuração do namespace para ficheiro XML (backup)
dfsutil root export \\empresa.pt\Dados C:\Backup\dfs-dados-backup.xml
# Importar configuração (restore ou migração)
dfsutil root import set C:\Backup\dfs-dados-backup.xml \\empresa.pt\Dados
O artigo sobre novidades e migração do Windows Server 2025 descreve melhorias no canal de eventos DFSR e ferramentas de diagnóstico integradas que se mantêm no Windows Server 2026.
Monitoriza o evento 4102 (update recebido) e o estado de backlog do comando dfsrdiag backlog. Se o backlog crescer de forma sustentada (acima de 5000 ficheiros durante mais de 30 minutos), alguma ligação ou membro tem problema. Cria um alerta que dispare sempre que isto acontecer. Combina com o evento 5008 para detetar falhas de conexão em tempo real.
O comando dfsutil root import set substitui completamente a configuração do namespace existente. Antes de importar, exporta sempre a configuração atual como ponto de restauração. Em ambientes com múltiplos namespace servers, a importação propaga via AD — aguarda a replicação AD antes de validar em todos os servidores.
11. Conflict and Deleted folder
O DFSR é multi-master, o que significa que dois utilizadores podem editar o mesmo ficheiro em réplicas diferentes ao mesmo tempo, sem saberem um do outro. Quando as duas versões chegam ao motor de replicação, o DFSR resolve o conflito com um algoritmo determinístico baseado no timestamp do último update (last-writer-wins, com desempate por GUID do servidor). A versão perdedora não é apagada — é movida para uma pasta especial chamada Conflict and Deleted, dentro da estrutura interna do DFSR.
Localizar a pasta
# Mostrar caminho da Conflict and Deleted folder para uma replicated folder
Get-DfsrMembership -GroupName "RG-Dados" -ComputerName "SRV-FICH-01" |
Select-Object ComputerName, FolderName, ContentPath, ConflictPath
Por defeito, a pasta Conflict and Deleted está em D:\Contabilidade\DfsrPrivate\ConflictAndDeleted. Cada conflito gera um evento 4412 no log DFSR, com o nome do ficheiro e quem ganhou. Em ambientes com colaboração intensa, vale a pena monitorizar este log diariamente e mover ficheiros em conflito para uma pasta de revisão manual.
A pasta Conflict and Deleted tem um quota interno (por defeito 660 MB). Quando atinge este limite, o DFSR começa a apagar conflitos mais antigos sem aviso. Se a tua empresa trabalha com ficheiros sensíveis onde perdas de versão são inaceitáveis, configura quotas maiores via Set-DfsrMembership -ConflictSize e implementa um processo de auditoria semanal dos conflitos.
# Aumentar quota da Conflict and Deleted para 2 GB
Set-DfsrMembership -GroupName "RG-Dados" -ComputerName "SRV-FICH-01" `
-FolderName "Contabilidade" -ConflictSize 2048
# Listar conflitos recentes do registo de eventos
Get-WinEvent -LogName "DFS Replication" -MaxEvents 500 |
Where-Object Id -eq 4412 |
Select-Object TimeCreated, Message | Format-List
Para detalhes sobre o comportamento de conflitos e limites, consulta DFS Replication Overview.
12. Erros comuns
A tabela seguinte resume os erros mais frequentes em ambientes DFSN/DFSR, a causa provável e a acção de correção recomendada. Esta lista resulta de casos reais em implementações PME.
| Sintoma / erro | Causa provável | Acção de correção |
|---|---|---|
| Event 5008 — connection failed | Firewall a bloquear RPC dinâmico entre membros | Verificar regras de firewall entre sites; ativar perfil “DFS Replication” com Set-NetFirewallRule; testar com PortQry na porta 135 |
| Event 5014 — RPC server unavailable | Serviço DFSR parado no parceiro ou skew de relógio superior a 15 min | Start-Service DFSR no servidor remoto; verificar sincronismo NTP com w32tm /query /status |
| Backlog cresce indefinidamente | Schedule de conexão em modo “no replication” ou bandwidth limit demasiado baixo | Set-DfsrConnectionSchedule para “Full” ou ajustar bandwith limit; verificar RDPC ativo |
| Event 4204 — RPC connection established (repetido) | Conexão instável — flapping de rede | Verificar latência e perda de pacotes entre sites; monitorizar com Ping o caminho entre membros |
| Conflitos frequentes (event 4412) | Edições simultâneas em réplicas diferentes do mesmo ficheiro | Rever processo de trabalho; ativar last-writer-wins por defeito; educar utilizadores; considerar quotas na Conflict folder maiores |
| Acesso ao namespace devolve “network path not found” | Namespace server indisponível ou referral cache desatualizado no cliente | Garantir que pelo menos dois namespace servers estão configurados; no cliente nltest /dsgetdc:empresa.pt para confirmar DC; dfsutil /pktflush para limpar cache |
| DFSR não replica novos ficheiros | Filtro de extensões a excluir ficheiro, ou file screen FSRM ativo | Verificar Get-DfsrServiceConfig -ExclusiveFileFilter; rever file screens FSRM na pasta |
| Event 4012 — journal wrap | Volume NTFS USN journal demasiado pequeno ou muitos eventos I/O | Aumentar USN journal com fsutil usn createjournal; considerar mover pasta para volume dedicado |
| Replicação inicial (seeding) muito lenta | Grande volume de dados pré-existente replicado via DFSR | Fazer pré-seed com robocopy ou backup/restore antes de ativar DFSR; ver doc DFS Replication Overview |
| Acesso UNC lento em site remoto | Referral a apontar para target de outro site (EnableSiteCosting desligado) | Set-DfsnRoot -EnableSiteCosting $true; ajustar ReferralPriorityClass dos targets para SiteCost-Normal |
13. Checklist final
Antes de considerar uma implementação DFSN+DFSR em produção, confirma cada item abaixo. Esta checklist serve também como auditoria periódica trimestral para garantir que o ambiente se mantém saudável.
Pré-implementação
- Domínio AD DS com nível funcional mínimo Windows Server 2012 R2 (idealmente 2016+); tempo NTP sincronizado em todos os membros.
- Pelo menos dois servidores membros com a função FS-DFS-Namespace e FS-DFS-Replication instalada (com IncludeManagementTools).
- Firewall com regras “File and Printer Sharing” e “DFS Replication” ativas; portas RPC 135 e 49152-65535 abertas entre sites.
- Conectividade RPC e LDAP validada entre todos os membros — ver guia de diagnóstico de conectividade.
- Volumes NTFS dedicados com espaço suficiente para a Conflict and Deleted folder e crescimento previsto.
Namespace
- Namespace domain-based criado com
\\dominio.pt\Namespacee EnableSiteCosting ativo. - Pelo menos dois namespace servers (redundância) adicionados com
New-DfsnRootTarget. - Pastas (folders) criadas dentro do namespace com targets em cada servidor membro.
- Referral Priority Class dos targets ajustado para SiteCost-Normal em ambientes multi-site.
- Cache TTL do referral ajustado consoante necessidade de failover rápido (padrão 300s).
Replicação
- Replication group criado com topologia adequada (full mesh ou hub-and-spoke) e membros adicionados.
- Caminho local definido em cada membro; PrimaryMember escolhido conscientemente para seeding.
- Pré-seed feito via robocopy para reduzir tempo de sincronização inicial.
- Schedule de conexão definida (Full ou customizada com bandwidth limit).
- Filtros globais de extensões configurados com
Set-DfsrServiceConfig -ExclusiveFileFilter. - Quota da Conflict and Deleted folder aumentada para 2 GB ou superior em pastas críticas.
FSRM
- Função FS-Resource-Manager instalada nos servidores de ficheiros.
- Quotas rígidas com limiares de aviso definidas em pastas replicadas.
- File screens ativos a bloquear multimédia, executáveis e ficheiros temporários.
Diagnóstico e monitorização
- Health report automatizado diariamente e enviado ao administrador.
- Alerta configurado para backlog superior a 5000 ficheiros durante mais de 30 minutos.
- Event 4412 (conflitos) monitorizado; conflitos revisados semanalmente.
- Event 5008/5014 (falha de conexão) gera alerta imediato ao administrador.
- Backup regular da configuração do namespace exportada com
dfsutil root export.
Documentação
- Diagrama da topologia DFSN/DFSR atualizado e guardado no repositório de documentação.
- Lista de pastas, targets, membros e quotas mantida em ficheiro partilhado de administração.
- Procedimento de recuperação documentado: o que fazer se um namespace server cair, se um membro DFSR ficar offline, se houver split-brain.
- Referência cruzada com a documentação de controlador de domínio SAMBA-AD, virtualização Hyper-V e grupos de segurança AD.
O DFS Namespaces dá estabilidade ao caminho de acesso; o DFS Replication dá resiliência ao conteúdo. Em conjunto, permitem que uma PME com dois ou mais sites tenha uma infraestrutura de ficheiros tolerante a falhas, com acesso local rápido e recuperação operacional imediata. Não substitui o backup — complementa-o, garantindo continuidade de serviço enquanto o restore decorre.
Para aprofundar, consulta a documentação oficial Microsoft Learn em DFS Overview, DFS Namespaces Overview, DFS Replication Overview, e os artigos kbase.pt referenciados ao longo do texto.
