Migrar Replicação do SYSVOL de FRS para DFS

Com do lançamento do Windows Server 2019, começamos a ter contato com a primeira versão do ADDS (Active Directory Domain Services) que não suporta a execução da replicação do SYSVOL utilizando FRS. Até a versão 2016, havia um aviso de que o FRS estava descontinuado, mas ainda assim era permitido incluir um servidor Domain Controller com Windows Server 2016 em um domínio que ainda usava o FRS.

A partir da versão 2019 isso não é mais possível. Quando você tenta incluir um servidor executando o Windows Server 2019 em um domínio em que o SYSVOL está sendo replicado via FRS, será exibida a mensagem de erro abaixo.

Verification of replica failed. The specified domain {Domain-Name} is still using the File Replication Service (FRS) to replicate the SYSVOL share. FRS is depreciated.
The server being promoted does not support FRS and cannot be promoted as a replica into the specified domain.
You MUST migrate the specified domain to use DFS Replication using the DFSRMIG command before continuing.

Para resolver esse problema é necessário migrar a replicação do SYSVOL para DFS. Antes disso é necessário verificar dois pre-requisitos:

  1. Todos os Domain Controllers precisam estar rodando Windows Server 2008 ou mais recente;
  2. O ‘functional level’ da floresta precisa ser Windows Server 2008 ou superior.

Satisfeitos esses dois pré-requisitos, é possível iniciar a migração da replicação do SYSVOL.

A partir de um dos Domain Controllers existentes, abra uma janela de Prompt de Comando no modo Administrador e execute os comandos abaixo.

Primeiro valide se o status atual está ‘limpo’, ou seja, se não há nenhum processo de migração iniciado e pendente.

C:\>dfsrmig /getglobalstate

DFSR migration has not yet initialized. To start migration please
set global state to desired value.

Após ter a confirmação que nenhuma migração foi iniciada, é possível iniciar com o comando abaixo. Isso ira colocar todos os Domain Controllers no estado ‘Prepared’.

C:\>dfsrmig /setglobalstate 1

Current DFSR global state: 'Start'
New DFSR global state: 'Prepared'

Migration will proceed to 'Prepared' state. DFSR service will
copy the contents of SYSVOL to SYSVOL_DFSR
folder.

If any domain controller is unable to start migration, try manual polling.
Or run with option /CreateGlobalObjects.
Migration can start anytime between 15 minutes to 1 hour.
Succeeded.

Após a execução desse comando, use o mesmo comando usado inicialmente para validar se havia alguma migração iniciada, dessa vez para validar que o status foi transitado para ‘Prepared’.

C:\>dfsrmig /getglobalstate

Current DFSR global state: 'Prepared'
Succeeded.

Depois pode acompanhar o processo até que todos os Domain Controllers transitem para o estado de Prepared. Para acompanhar utilize o comando abaixo. Assim que o retorno indicar que todos os Domain Controllers chegaram num estado consistente, pode passar para a etapa seguinte.

Obs.: A transição de estado em todos os Domain Controllers pode demorar bastante, principalmente se o seu domínio possui sites remotos com link de pouca banda ou se o seu SYSVOL possui muitos arquivos.

C:\>dfsrmig /getmigrationstate

All domain controllers have migrated successfully to the Global state ('Prepared').
Migration has reached a consistent state on all domain controllers.
Succeeded.

Assim que todos os DCs chegarem nesse estado consistente e a mensagem acima for exibida, pode segui para a próxima etapa, mudando o estado para ‘Redirected’.

C:\>dfsrmig /setglobalstate 2

Current DFSR global state: 'Prepared'
New DFSR global state: 'Redirected'

Migration will proceed to 'Redirected' state. The SYSVOL share
will be changed to SYSVOL_DFSR folder,
which is replicated using DFSR.

Succeeded.

Novamente, pode validar o status global e o andamento da migração com os comandos já usados anteriormente.

C:\>dfsrmig /getglobalstate

Current DFSR global state: 'Redirected'
Succeeded.
C:\>dfsrmig /getmigrationstate

All domain controllers have migrated successfully to the Global state ('Redirected').
Migration has reached a consistent state on all domain controllers.
Succeeded.

A partir desse momento o SYSVOL do seu domínio já está sendo replicado e servido a partir do DFS. Você pode validar isso com o comando NET SHARE, que exibirá que os compartilhamentos do SYSVOL e NETLOGON estão sendo compartilhados a partis da pasta do SYSVOL_DFSR.

C:\>net share

Share name   Resource                        Remark
-------------------------------------------------------------------
[…]
NETLOGON     C:\Windows\SYSVOL_DFSR\sysvol\corp.contoso.com\SCRIPTS
                                             Logon server share
SYSVOL       C:\Windows\SYSVOL_DFSR\sysvol   Logon server share

Nesse ponto, é possível para para o próximo e último estado: ‘Eliminated’.

C:\>dfsrmig /setglobalstate 3

Current DFSR global state: 'Redirected'
New DFSR global state: 'Eliminated'

Migration will proceed to 'Eliminated' state. It is not possible
to revert this step.

If any read-only domain controller is stuck in the 'Eliminating' state for too long
run with option /DeleteRoNtfrsMember.
Succeeded.

Pode acompanhar novamente o status com os comandos já utilizados anteriormente.

C:\>dfsrmig /getglobalstate

Current DFSR global state: 'Eliminated'
Succeeded.
C:\>dfsrmig /getmigrationstate

All domain controllers have migrated successfully to the Global state ('Eliminated').
Migration has reached a consistent state on all domain controllers.
Succeeded.

A partir deste ponto a migração está concluída.

O antigo diretório do SYSVOL deve ter sido removido em todos os seus Domain Controllers (caso tenha ficado aberto em algum aplicativo, tipo um Command Prompt, terá que remover manualmente) e o serviço de replicação do FRS de ter sido parado e desativado.

Como Realizar Backups Manuais com Shadow Copy

O Shadow Copy é uma funcionalidade que foi introduzida inicialmente no Windows Server 2003 e permite gerar uma espécie de imagem (foto) de um estado de um disco. Essa imagem permite que todos os arquivos possam ser lidos, mesmo quando estão abertos por outros processos.

Para garantir que não apenas os arquivos possam ser lidos enquanto abertos por outros processos, mas que também contenham dados íntegros, foram criados os ‘Writers’.

Existem diversos ‘Writers’ que são como drivers que fornecem uma interação do Shadow Copy com aplicações e módulos específicos do sistema. Como por exemplo, existem Writers para SQL Server, Exchange, IIS, Registry, etc. Esses Writers interagem com as respectivas aplicações e seus arquivos de dados, instruindo as aplicações e sistemas a descarregarem os dados que estão em memória para o disco e deixando os arquivos em um estado consistente. Dessa forma, os arquivos podem ser copiados e armazenados como backup, garantindo que estão íntegros e poderão ser utilizados posteriormente.

As funções e funcionalidades do Shadow Copy são utilizadas por diversos softwares de backup.

No entanto, podem existir situações em que você possa precisar controlar manualmente a geração dessas imagens e também a execução de scripts de cópia/backup.

O primeiro passo antes de qualquer coisa é configurar o Shadow Copy no disco em que será realizada a cópia/backup. Isso pode ser realizado utilizando o comando ‘vssadmin’.

C:\>vssadmin add ShadowStorage /for=c: /on=c: /maxsize=unbounded
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.

Successfully added the shadow copy storage association

Nesse comando está sendo configurado o Shadow Copy para o disco C:, indicando que os dados salvos na geração das imagens deverão ser colocados também no disco C:. Também existe a indicação to tamanho máximo que essas imagens podem consumir, nesse caso o termo ‘unbounded’ indica que não há limite para esse armazenamento.

Pode verificar o resultado dessa configuração com o comando abaixo.

C:\>vssadmin list ShadowStorage
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.

Shadow Copy Storage association
For volume: (C:)\?\Volume{6e33dec7-8451-4da8-8b65-fa0d9e1080c4}\
Shadow Copy Storage volume: (C:)\?\Volume{6e33dec7-8451-4da8-8b65-fa0d9e1080c4}\
Used Shadow Copy Storage space: 0 bytes (0%)
Allocated Shadow Copy Storage space: 0 bytes (0%)
Maximum Shadow Copy Storage space: UNBOUNDED (100%)

Estando agora o Shadow Copy configurado, é possível agora utilizar o comando ‘diskshadow’ para realizar as atividades de geração da imagem e execução do backup.

Esse utilitário permite a execução de scripts que pode automatizar de forma controlada o seu processo de backup.

set context persistent
set metadata C:\Diskshadow\Metadata\diskshadow.cab
set verbose on
begin backup
add volume C: alias data_backup
create
expose %data_backup% bkp
exec C:\Scripts\robocopy_backup.cmd
delete shadows exposed bkp
end backup

Os comandos acima podem ser colocado em um arquivo de texto e passados como parâmetro para o diskshadow com o switch ‘-s’.

C:\> diskshadow -s script_backup.txt

Dentre os comando que estão presente no script de exemplo acima, posso citar 2 que realmente fazem a mágica acontecer.

O comando ‘expose’ permite que a imagem gerada seja exposta para ser acessada por outro processo. Essa exposição pode ser feita por uma nova letra de unidade lógica, por um nome de compartilhamento, ou por um ponto de montagem de diretório. Caso o script de backup seja executado à partir de outra máquina, a opção de nome de compartilhamento é a mais indicada.

Já o comado ‘exec’ permite executar um script qualquer, que por sua vez pode executar diversas atividades, inclusive as cópias de backup.

Depois que o script de backup terminar, basta usar os comandos para remover a imagem de Shadow Copy criada e finalizar a sessão de backup.