Product SiteDocumentation Site

3.3. Двунаправленная репликация SysVol

Каталог Sysvol присутствует на всех контроллерах домена AD и используется для хранения логон скриптов и объектов групповых политик. Отсутствие репликации этого каталога приведет к неправильной работе групповых политик и сценариев входа.
Samba в своем текущем состоянии не поддерживает репликацию SysVol через DFS-R (репликация распределенной файловой системы) или более старую FRS (службу репликации файлов), используемую в Windows Server 2000/2003 для репликации SysVol. В настоящее время для репликации SysVol можно использовать один из следующих обходных путей:
  • двунаправленная репликация SysVol на основе Rsync/Unison (только Samba DC);
  • двунаправленная репликация SysVol на основе Rsync/osync (только Samba DC);

Важно

Следует синхронизировать idmap.ldb из контроллера домена, имеющего роль FSMO PDC_Emulator, со всеми другими контроллерами домена. Это гарантирует, что все контроллеры домена будут использовать одни и те же идентификаторы. Если файл idmap.ldb не синхронизируется, на каждом контроллере домена будут разные идентификаторы.
Cинхронизировать idmap.ldb (см. раздел Сопоставления встроенных идентификаторов пользователей и групп) необходимо при первом присоединении к новому контроллеру домена, а затем переодически (для того чтобы гарантировать постоянство идентификаторов не нужно синхронизировать idmap.ldb каждый раз при синхронизации SysVol, но это следует делать периодически).

3.3.1. Настройка двунаправленной репликации SysVol на базе Rsync/Unison

Исходные данные:
  • все команды выполняются от пользователя root;
  • первый контроллер домена — DC1;
  • второй контроллер домена — DC2 (уже присоединён к домену);
  • sysvol расположен в /var/lib/samba/ как на DC1, так и на DC2;
  • rsync расположен в /usr/bin/rsync;
  • unison расположен в /usr/bin/unison;
  • журнал sysvolsync пишется в файл /var/log/sysvol-sync.log.

Примечание

Предварительно должно быть настроено беспарольное межсерверное взаимодействие (подробнее, см. Настройка беспарольного доступа по ssh)
На первом контроллере домена (DC1):
  1. Установить пакеты rsync и unison:
    # apt-get install rsync unison
    
  2. При низких скоростях в сети, unison может некорректно работать, поэтому при повторной его работе будет использоваться ранее созданное подключение по ssh, для этого:
    # mkdir ~/.ssh/ctl
    # cat < < EOF > ~/.ssh/ctl/config
    Host *
    ControlMaster auto
    ControlPath ~/.ssh/ctl/%h_%p_%r
    ControlPersist 1
    EOF
    
  3. Создать каталог /root/.unison/:
    # mkdir /root/.unison
    
  4. Для определения политики синхронизации создать файл конфигурации unison /root/.unison/default.prf с следующим содержимым:
    # Список каталогов, которые будут синхронизированы
    root = /var/lib/samba
    root = ssh://root@DC2.test.alt//var/lib/samba
    # Список подкаталогов, которые нужно синхронизировать
    path = sysvol
    
    auto=true
    batch=true
    perms=0
    rsync=true
    maxthreads=1
    retry=3
    confirmbigdeletes=false
    servercmd=/usr/bin/unison
    # использовать rsync только для больших файлов??
    copythreshold=1000
    copyprog = /usr/bin/rsync -XAavz --rsh='ssh -p 22' --inplace --compress
    copyprogrest = /usr/bin/rsync -XAavz --rsh='ssh -p 22' --partial --inplace --compress
    copyquoterem = true
    copymax = 1
    
    # Сохранять журнал с результатами работы в отдельном файле
    logfile = /var/log/sysvol-sync.log
    
  5. Создать файл для записи журнала репликации (необходимо настроить ротацию логов для этого файла, так как размер журнала не контролируется): # touch /var/log/sysvol-sync.log
На втором контроллере домена (DC2) установить пакеты rsync и unison:
# apt-get install rsync unison
Сделать резервную копию каталога sysvol, и запустить команду синхронизации:
# /usr/bin/rsync -XAavz --log-file /var/log/sysvol-sync.log --delete-after -f"+ */" -f"- *" /var/lib/samba/sysvol root@dc2.test.alt:/var/lib/samba && /usr/bin/unison
Утилита rsync создает структуры каталогов с расширенными атрибутами, а затем утилита unison копирует только эти расширенные атрибуты файлов.
На DC1 включить синхронизацию по расписанию:
# crontab -e
*/5 * * * * /usr/bin/unison -silent
Повторная синхронизация каталога:
  • отключить синхронизацию по расписанию на DC1;
  • rsync и unison не должны выполняться в данный момент (можно проверить командой ps -aux);
  • удалить хеш-файлы на DC1 и DC2 в /root/.unison;
  • проверить sysvol и повторить синхронизацию;
  • убедиться, что синхронизация выполнена успешно;
  • включить синхронизацию по расписанию на DC1.
Если контроллеров домена больше чем два, можно создать больше заданий для cron на DC1:
  1. Скопировать файл /root/.inison/default.prf в другой файл, например: /root/.inison/sync_dc2.prf.
  2. В файле /root/.inison/dc2.prf изменить значение параметра root.
  3. Повторить шаги 1 и 2 для всех контроллеров домена.
  4. Изменить задание на синхронизацию по расписанию на DC1:
    * * * * * /usr/bin/unison sync_dc2 -silent
    * * * * * /usr/bin/unison sync_dc3 -silent
    …