Windows Server
DFS
DFSR
File Services
PowerShell
PME
Tags: DFS · Windows Server 2026 · Replicação · Duarte Spínola · 27 junho 2026

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.

Nota de enquadramento

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.

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
Facto técnico

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 /status para 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
Atenção — portas RPC

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

  1. Abrir Server Manager → Manage → Add Roles and Features.
  2. Avançar até Server Roles → File and Storage Services → File and iSCSI Services → marcar “DFS Namespaces”.
  3. Marcar também “DFS Replication” (vamos precisar na secção 7).
  4. Em Features → Remote Server Administration Tools → File Services Tools → marcar “DFS Management Tools”.
  5. 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
Dica — instalar em paralelo

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
Parâmetro EnableSiteCosting

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.

Boa prática

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
Não uses DFSR para bases de dados abertas

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
PrimaryMember — conceito fundamental

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'}
  }
Schedule None e backlog

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
Cuidado com ficheiros excluídos

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.

Dica de monitorização

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.

Importar configuração DFSN

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.

Limitação importante

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\Namespace e 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.
Resumo executivo

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.

Referências: Microsoft Learn (DFS Overview, DFS Namespaces Overview, DFS Replication Overview) · kbase.pt (SAMBA-AD, Hyper-V, conectividade, Windows Server 2025, security groups)

Artigos Relacionados

← Voltar ao Índice

Este artigo foi útil?

Duarte Spínola

Deixe um Comentário