Порой возникают ситуации, когда приходится администрировать инфраструктуры удаленно через RDP. Долго ли, коротко ли, приходит время перезагрузить контроллер домена в Directory Services Restore Mode (DSRM). Если контроллер доступен по RDP, т.е. ситуация не внештатная (например, необходимо перенести базу AD на другой диск), всё можно элегантно сделать не выезжая на точку. Поможет нам в этом утилита bootcfg. Подключаемся к контроллеру по RDP с полномочиями администратора домена.
Часть 1. Подготовительные действия.
Шаг 1. Смотрим содержимое файла boot.ini:
bootcfg /s имя_контроллера /query
Boot Loader Settings
——————–
timeout:30
default:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
Boot Entries
————
Boot entry ID: 1
OS Friendly Name: Windows Server 2003 Enterprise x64 Edition
Path: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
OS Load Options: /noexecute=optout /fastdetect
Шаг 2. Добавляем строку загрузки для DSRM:
bootcfg /s имя_контроллера /copy /id 1 /d “DSRM”
SUCCESS: Made a copy of the boot entry “1″
Теперь записей в boot.ini две:
bootcfg /s имя_контроллера /query
Boot Loader Settings
——————–
timeout:30
default:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
Boot Entries
————
Boot entry ID: 1
OS Friendly Name: Windows Server 2003 Enterprise x64 Edition
Path: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
OS Load Options: /noexecute=optout /fastdetect
Boot entry ID: 2
OS Friendly Name: DSRM
Path: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
OS Load Options: /noexecute=optout /fastdetect
Шаг 3. Добавляем ключ загрузки в DSRM для второй записи
bootcfg /s имя_контроллера /raw “/SAFEBOOT:DSREPAIR” /a /id 2
SUCCESS: Added the switch to OS entry for line “2″ in the BOOT.INI file.
Теперь вторая запись в boot.ini имеет дополнительный ключ:
bootcfg /s имя_контроллера /query
Boot Loader Settings
——————–
timeout:30
default:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
Boot Entries
————
Boot entry ID: 1
OS Friendly Name: Windows Server 2003 Enterprise x64 Edition
Path: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
OS Load Options: /noexecute=optout /fastdetect
Boot entry ID: 2
OS Friendly Name: DSRM
Path: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
OS Load Options: /noexecute=optout /fastdetect /safeboot:dsrepair
Собственно, всё. В качестве полировки можно изменить дефалтное время выбора варианта загрузки с 30 секунд до, предположим, пяти:
bootcfg /s имя_контроллера /timeout 5
SUCCESS: Changed the timeout value in the BOOT.INI.
bootcfg /s имя_контроллера /query
Boot Loader Settings
——————–
timeout:5
default:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
Boot Entries
————
Boot entry ID: 1
OS Friendly Name: Windows Server 2003 Enterprise x64 Edition
Path: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
OS Load Options: /noexecute=optout /fastdetect
Boot entry ID: 2
OS Friendly Name: DSRM
Path: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
OS Load Options: /noexecute=optout /fastdetect /safeboot:dsrepair
Часть 2. Перезагрузка.
Перед перезагрузкой сервера в DSRM необходимо обозначить в качестве загрузки по умолчанию второй, только что созданный вариант «DSRM»:
bootcfg /s имя_контроллера /default /id 2
SUCCESS: Changed the default OS entry in the BOOT.INI.
Проверяем результат:
bootcfg /s имя_контроллера /query
Boot Loader Settings
——————–
timeout:5
default:multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
Boot Entries
————
Boot entry ID: 1
OS Friendly Name: DSRM
Path: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
OS Load Options: /noexecute=optout /fastdetect /safeboot:dsrepair
Boot entry ID: 2
OS Friendly Name: Windows Server 2003 Enterprise x64 Edition
Path: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
OS Load Options: /noexecute=optout /fastdetect
Выполняем перезагрузку контроллера:
shutdown /r /t 10 /f
Часть 3. Работы в DSRM.
Терминальные службы работают в DSRM. После старта системы можно зайти в нее под логином и паролем администратора восстановления и произвести требуемые действия. Предположим, мне необходимо провести сжатие и дефрагментацию базы AD и ее перемещение на другой диск.
ntdsutil –> files –> info –> compact to C:\NTDS.NEW –> quit –> quit
copy “C:\NTDS.NEW\ntds.sit” “C:\WINDOWS\NTDS\ntds.dit” (owerwrite = yes)
del C:\WINDOWS\NTDS\*.log
ntdsutil –> files –> info –> move db to D:\NTDS
move logs to D:\NTDS
quit –> quit
delete C:\NTDS.NEW
Теперь, когда работы завершены, необходимо вернуть первоначальную конфигурацию загрузки в boot.ini, чтобы после перезагрузки контроллер поднялся в рабочем режиме. Для этого выполняем команды:
bootcfg /s имя_контроллера /query
bootcfg /s имя_контроллера /default /id 2
shutdown /r /t 10 /f
Контроллер перезагрузится в штатном режиме.