Как обновить windows server 2012 r2 до windows server 2016
1. Проверяем, что каталоги AD синхронизируются без проблем. Запускаем
repadmin /replsum
Убеждаемся, что в столбце «Fails» нет ошибок, а дельта синхронизации не превышает той, которая настроена между сайтами.
2. Текущий уровень домена и леса должен быть не ниже Windows Server 2008. Если он ниже, то сначала поднимаем уровень домена до 2008 (этого не произойдет, если у вас остались в домене контроллеры, которые работают на Windows Server 2003 или 2003R2). После поднимаем уровень леса до 2008 (также надо предварительно убедиться, что все домены в лесу имеют уровень 2008). Поднятие уровня домена и леса осуществляется через оснастку «Active Directory – домены и доверие».
3. Разворачиваем новый сервер Windows Server 2016. Добавляем его в домен. Задаем статичный IP-адрес и имя хоста.
4. Проверяем, какой тип репликации используется для текущего каталога AD.
Для этого запускаем утилиту ADSI Edit на контроллере домена и подключаемся к «контексту именования по умолчанию». Далее ищем в вашем каталоге текущие контроллеры домена и выбираем один из них. Если вы видите каталог «CN=NTFRS Subscriptions» , значит у вас используется тип репликации «FRS». Если же «CN=DFSR-LocalSettings» – значит используется новый тип репликации DFS-R и тогда 5 шаг мы пропускаем.
5. Получим текущее глобальное состояние миграции DFSR через команду
dfsrmig /getglobalstate
Начинаем процесс миграции. Выполняем команду
dfsrmig /setglobalstate 1
С помощью команды dfsrmig /getmigrationstate проверяем, когда 1 этап миграции завершится на всех контроллерах.
Чтобы ускорить процесс репликации между контроллерами, выполним команды
Repadmin /syncall /AeS
на каждом контроллере
Переходим к следующему этапу:
dfsrmig /setglobalstate 2
И опять ускоряем процесс синхронизации командой
Repadmin /syncall /AeS
Как только команда dfsrmig /getmigrationstate выдаст положительный результат, запускаем заключительный этап
dfsrmig /setglobalstate 3
и повторяем те же действия, чтобы завершить процесс перехода на DFS-R.
6. Делаем новые сервера контроллерами домена: устанавливаем на них роль Active Directory Domain Services и DNS-сервера.
7. Запускаем службу KCC для создания новых связей с новыми контроллерами домена.
repadmin /kcc
и проверяем, что синхронизация проходит без ошибок на каждом из контроллеров
Repadmin /syncall /AeS
repadmin /replsum
8. Перераспределяем роли FSMO:
Move-ADDirectoryServerOperationMasterRole -Identity “dc-01” -OperationMasterRole SchemaMaster, DomainNamingMaster
Move-ADDirectoryServerOperationMasterRole -Identity “dc-02” -OperationMasterRole RIDMaster,PDCEmulator, InfrastructureMaster
где dc-01 и dc-02 новые сервера на WS2016
Еще раз запускаем репликацию на всех контроллерах:
repadmin /syncall /AeS
Командой netdom query fsmo убеждаемся, что все роли переехали на нужные сервера.
9. На новых серверах в настройках сетевых адаптеров указываем в качестве DNS-сервера новые контроллеры домена.
10. Выполняем команду dcpromo на старых контроллерах для понижения уровня сервера. После отключения всех серверов не забываем запустить
repadmin /kcc
repadmin /syncall /AeS
repadmin /replsum
11. Через оснастку «Active Directory – домены и доверие» поднимаем уровень домена и леса до 2016.
Задача: Я поставил себе задачу, разобрать как имея домен уровня Server 2012 R2 повысить его до уровня Server 2016, т. е. Я не только хочу перевести все инфраструктуру Windows на Server 2016 но и его доменную часть, а именно контроллеры домена.
Ну да ладно, вернусь к задаче.
Домен контроллер под управлением Windows Server 2012 R2 Eng развернут по заметке.
- Hostname: srv-dc1.polygon.local
- IP Addr: 10.90.90.2
- Netmask: 255.255.255.0
- Gateway: 10.90.90.1 (В роли шлюза выступит Mikrotik или система pfSense если компания не может выделить Вам деньги на покупку железа под шлюз)
Еще одна система под управлением Windows Server 2016 развернута в той же сети что и домен.
Вам понадобится доменная учетная запись, в моем случае это ее логин ekzorchik, а пароль присвоенный ей это 712mbddr@
Шаг №1: Авторизуюсь на системе srv-dc2 пока под локальным администратором и ввожу в домен polygon.local
Шаг №2: Поднимаю введенную в домен систему с осью Windows Server 2016 до уровня контроллер домена, но перед этим авторизуюсь на ней под доменной учетной записью логина ekzorchik.
- Выберите операцию развертывания: Добавить контроллер домена в существующий домен
- Домен: polygon.local
- Учетные данные: POLYGON\ekzorchik (текущий пользователь)
и нажимаю кнопку «Далее», затем в шаге «Параметры контроллера домена» оставляю все как есть за исключение, что нужно указать пароль для режима восстановления служб каталогов (DSRM):
Шаг №3: Проверяю сколько сейчас контроллеров домена в лесу:
Или через консоль командной строки:
Win + X - Командная строка (администратор)
C:\Windows\system32>netdom query dc
Список контроллеров домена с учетными записями в домене:
Команда выполнена успешно.
Чтобы отобразить какой функциональный уровень леса:
C:\Windows\system32>dsquery * "CN=Partitions,CN=Configuration,DC=polygon,DC=local" -scope base -attr msDS-Behavior-Version
msDS-Behavior-Version 6 — где данное значение расшифровывается, как Windows Server 2012 R2
Чтобы отобразить какой функциональный уровень домена:
C:\Windows\system32>dsquery * "dc=polygon,dc=local" -scope base -attr msDS-Behavior-Version ntMixedDomain
6 0 — где данное значение расшифровывается, как Windows Server 2012 R2
Чтобы отобразить версию схемы Active Directory Schema:
C:\Windows\system32>dsquery * "CN=Schema,CN=Configuration,dc=polygon,dc=local" -scope base -attr objectVersion
Шаг №5: Начинаю модернизацию уровня домена и уровня леса, дабы ввести после еще один контроллер домена на базе Windows Server 2016, а текущий srv-dc1 (на базе Windows Server 2012 R2) понизить, тем самым я буду использовать в домене все самое последнее и новое.
Авторизуюсь на домен контроллере srv-dc2 под учетной записью ekzorchik (она состоит в следующих группах: Domain Admins, Enterprise Admins, Schema Admins)
Смотрю какие роли FSMO у какого контроллера домена сейчас:
Win + X — Командная строка (Администратор)
C:\Windows\system32>netdom query fsmo
- Хозяин схемы srv-dc1.polygon.local
- Хозяин именования доменов srv-dc1.polygon.local
- PDC srv-dc1.polygon.local
- Диспетчер пула RID srv-dc1.polygon.local
- Хозяин инфраструктуры srv-dc1.polygon.local
Команда выполнена успешно.
На заметку: Обозначение ролей FSMO
Забирать роли можно как через GUI-оснастки, как делалось при миграции с Server 2003, 2008/R2, 2012/R2 так и через консоль командной строки. Я буду рассматривать второй вариант, т. к. это быстрее и чуть больше буду знать в последствии, также следует учесть что захват ролей можно сделать не только через powershell, но и через команду ntdsutil.
- roles
- connections
- connect to server <имя сервера>
- quit
Затем применительно к каждой роли FSMO производим захват/миграцию:
- seize schema master
- seize domain naming master
- seize pdc
- seize rid master
- seize infrastructure master
После не забывает выйти из консоли команды ntdsutil вводом quit.
C:\Windows\system32>powershell
(C) Корпорация Майкрософт (Microsoft Corporation), 2016. Все права защищены.
PS C:\Windows\system32>
PS C:\Windows\system32> Move-ADDirectoryServerOperationMasterRole -Identity "srv-dc2" -OperationMasterRole 0,1,2,3,4
- PDCEmulator 0
- RIDMaster 1
- InfrastructureMaster 2
- SchemaMaster 3
- DomainNamingMaster 4
Перемещение роли хозяина операций
Вы хотите переместить роль "PDCEmulator" на сервер "srv-dc2.polygon.local"?
[Y] Да - Y [A] Да для всех - A [N] Нет - N [L] Нет для всех - L [S] Приостановить - S [?] Справка
(значением по умолчанию является "Y"): A
Move-ADDirectoryServerOperationMasterRole : Служба каталогов недоступна
+ Move-ADDirectoryServerOperationMasterRole -Identity "srv-dc2" -Operat .
+ CategoryInfo : NotSpecified: (srv-dc2:ADDirectoryServer) [Move-ADDirector. ationMasterRole], ADExcepti
PS C:\Windows\system32> netdom query fsmo
- Хозяин схемы srv-dc1.polygon.local
- Хозяин именования доменов srv-dc1.polygon.local
- PDC srv-dc2.polygon.local
- Диспетчер пула RID srv-dc2.polygon.local
- Хозяин инфраструктуры srv-dc2.polygon.local
Команда выполнена успешно.
Так осталось разобраться с ошибкой и перевести роль «Хозяина схемы» и «Хозяина именования доменов»:
PS C:\Windows\system32>> Move-ADDirectoryServerOperationMasterRole -Identity "srv-dc2" -OperationMasterRole 4
Перемещение роли хозяина операций
Вы хотите переместить роль "DomainNamingMaster" на сервер "srv-dc2.polygon.local"?
[Y] Да - Y [A] Да для всех - A [N] Нет - N [L] Нет для всех - L [S] Приостановить - S [?] Справка
(значением по умолчанию является "Y"): A
Команда отработала без ошибок, а вот с ролью «Хозяин схемы» все также ошибка, применил ключ форсировки переноса роли:
PS C:\Windows\system32>> Move-ADDirectoryServerOperationMasterRole -Identity "srv-dc2" -OperationMasterRole 3 -force
Перемещение роли хозяина операций
Вы хотите переместить роль "SchemaMaster" на сервер "srv-dc2.polygon.local"?
[Y] Да - Y [A] Да для всех - A [N] Нет - N [L] Нет для всех - L [S] Приостановить - S [?] Справка
(значением по умолчанию является "Y"): A
PS C:\Windows\system32>> netdom query fsmo
- Хозяин схемы srv-dc2.polygon.local
- Хозяин именования доменов srv-dc2.polygon.local
- PDC srv-dc2.polygon.local
- Диспетчер пула RID srv-dc2.polygon.local
- Хозяин инфраструктуры srv-dc2.polygon.local
Команда выполнена успешно.
PS C:\Windows\system32>> exit
Перемещение роли хозяина операций
Вы хотите переместить роль "PDCEmulator" на сервер "srv-dc2.polygon.local"?
[Y] Да - Y [A] Да для всех - A [N] Нет - N [L] Нет для всех - L [S] Приостановить - S [?] Справка
(значением по умолчанию является "Y"): A
PS C:\Windows\system32> exit
C:\Windows\system32>
Шаг №6: Удаляю контроллер домена под управлением Windows Server 2012 R2 из глобального каталога. На Server 2016 (srv-dc2) открываю оснастку:
Win + X — Панель управления — Администрирование — Active Directory Сайты и Службы и выделяю левой кнопкой мыши сервере srv-dc1 который являлся контроллером домена ранее в текущей сайте «Default-First-Site-Name» на NTDS Settings снимаю в свойствах галочку с настройки «Глобальный каталог»
Шаг №7: Понижаю уровень и удаляю контроллер домена под управлением Windows Server 2012 R2. Авторизуюсь на системе srv-dc1, запускаю командную строку с правами администратора и через powershell:
PS C:\Windows\system32> Uninstall-ADDSDomainController -DemoteOperationMasterRole -RemoveApplicationPartition
- LocalAdministratorPassword: ********* → здесь указываю пароль который задавал для режима восстановлена контроллера домена, он у меня такой же как и для локального администратора
- Confirm LocalAdministratorPassword: ********* → здесь указываю пароль который задавал для режима восстановлена контроллера домена, он у меня такой же как и для локального администратора
The server will be automatically restarted when this operation is complete. The
domain will no longer exist after you uninstall Active Directory Domain
Services from the last domain controller in the domain.
Do you want to continue with this operation?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"): A после ожидаю…все отработало как надо и система автоматически отправится в перезагрузку. Так и должно быть.
Шаг №8: Теперь можно повысить функциональный уровень домена и леса. Авторизуюсь на srv-dc2 (Windows Server 2016) и через Powershell:
Win + X — Командная строка (Администратор)
C:\Windows\system32>powershell
PS C:\Windows\system32> Set-ADDomainMode -identity polygon.local -DomainMode Windows2016Domain
Вы действительно хотите выполнить это действие?
Выполнение операции "Set" над целевым объектом "DC=polygon,DC=local".
[Y] Да - Y [A] Да для всех - A [N] Нет - N [L] Нет для всех - L [S] Приостановить - S [?] Справка
(значением по умолчанию является "Y"): A
PS C:\Windows\system32> Set-ADForestMode -identity polygon.local -ForestMode Windows2016Forest
Вы действительно хотите выполнить это действие?
Выполнение операции "Set" над целевым объектом "CN=Partitions,CN=Configuration,DC=polygon,DC=local".
[Y] Да - Y [A] Да для всех - A [N] Нет - N [L] Нет для всех - L [S] Приостановить - S [?] Справка
(значением по умолчанию является "Y"): A
Шаг №9: Проверяю текущий функциональный уровень домена и леса:
PS C:\Windows\system32> get-addomain | fl Name,DomainMode ;get-adforest | fl Name,ForestMode
Как видно модернизация домена с Windows Server 2012R2 на Windows Server 2016 прошла успешно и я могу пользоваться новыми возможностями и строить доменную структуру на новом, самом последнем релизе что не может не радовать. Это же замечательно, когда все действия отрепетированы и для тебя нет ничего страшного если вдруг что-то пойдет не так.
Задача данной заметки выполнена и я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.
Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:
Поблагодари автора и новые статьи
будут появляться чаще :)
Карта МКБ: 4432-7300-2472-8059
Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.
Постановка задачи
Есть доменная инфраструктура Active Directory, в ней существует отказоустойчивая RDS ферма на базе Windows Server 2012 R2, в компании было принято решение, о переходе в качестве корпоративного стандарта ОС на Windows Server 2016. Сама RDS ферма состоит из 50 RDSH хостов и обслуживает свыше 4000 пользователей. Хочется максимально безболезненно перевести пользователей на новую RDS. Ниже я покажу несколько вариантов миграции.
Варианты миграции RDS фермы
Существует как минимум два варианта, которые вам позволят произвести переход вашей старой RDS фермы на новую. Тут все будет зависеть от ваших свободных ресурсов. Будет ряд шагов общих для обоих вариантов. Вначале вы разворачиваете отказоустойчивую Remote Desktop Services High Availability на базе Windows Server 2016. Вам нужно получить как минимум два хоста RDCB и один хост RDSH, как это делается смотрите по ссылке. Далее два варианта:
- Вы уведомляете пользователей, что будут произведены работы по модернизации RDS фермы. Переводите все узлы подключения в режим стока. После чего вы удаляете один из RDSH хостов из коллекции в текущей RDS ферме, через оснастку управления.
После чего вы данный хост добавляете в новую RDS ферму на базе WindowsServer 2016. Проделываем так со всеми RDSH хостами. Когда все хосты подключений будут управляться новыми брокерами и будут уже частью новой коллекции. Вам остается только произвести переключение DNS записи на новый RDS HA пул. Потом вы спокойно будите добавлять по одному новому хосту с Windows Server 2016, меняя его на старые с Windows Server 2012. Через какое-то время вы все так замените.
Не забываем про свои групповые политики которые были на старой RDS ферме. Вам нужно все будет перенести, чтобы пользователи ничего не увиделиНа этом обновление RDS фермы Windows Server 2012 на Windows Server 2016 можно почти считать готовым, за исключением того, если у вас используются перемещаемые профили пользователей. Я не зря завел разговор про перемещаемые профили, так как у них немного другой формат в новой ОС. На RDS Windows Server 2012 R2 профиль имеет формат username.domain.V2, а вот уже у Windows Server 2016 формат username.domain.V6. Все отличие в цифре. Так, что если вы хотите, чтобы пользователи увидели свои данные при следующем подключении, вам необходимо переименовать старые профили на новый манер. Если у вас их мало, то можно сделать и вручную, но если как у меня, это тысячи пользователей, то тут нужно скриптовать.
Скрипт переименовывания профилей V2 на V6
Ниже скрипт PowerShell, он имеет два варианта, либо переименовать все профили в нужном каталоге, либо переименовать только те, что подсовываются в текстовом файле.
if ($process_full_folder)
"$(Date) Processing whole folder $folder_to_process"
foreach ($folder in (Get-ChildItem $folder_to_process -Directory | ? ))
$newname = $folder.Name -replace ".V2", ".V6"
"$(Date) Renaming folder $($folder.Name) to $newname"
if ($process_from_file)
"$(Date) Processing folders from file $userlist_file"
foreach ($username in (Get-Content $userlist_file))
$folders = $null
$folders = Get-ChildItem $folder_to_process | ?
if ($folders)
foreach ($folder in $folders)
$newname = $folder.Name -replace ".V2", ".V6"
"$(Date) Renaming folder $($folder.Name) to $newname"
Скрипт переименовывания профилей V6 на V2
if ($process_full_folder)
"$(Date) Processing whole folder $folder_to_process"
foreach ($folder in (Get-ChildItem $folder_to_process -Directory | ? ))
$newname = $folder.Name -replace ".V6", ".V2"
"$(Date) Renaming folder $($folder.Name) to $newname"
if ($process_from_file)
"$(Date) Processing folders from file $userlist_file"
foreach ($username in (Get-Content $userlist_file))
$folders = $null
$folders = Get-ChildItem $folder_to_process | ?
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
Конфигурация компьютера | |
Процессор: Intel Core 2 Duo E8500, 3,16 Ghz | |
Материнская плата: Gigabyte GA-EP45-DS3L | |
Память: DDR2, 667 Mhz, 4 GB (dual mode) | |
HDD: ST3500410AS, 500 Gb, SATA | |
Видеокарта: HIS Radeon 4850 IceQ turbo | |
Звук: Realtek ALC888 @ Intel 82801JB ICH10 - High Definition Audio Controller | |
Блок питания: Huntkey, 450 Watt | |
CD/DVD: PHILIPS SPD2514T | |
Монитор: Samsung SyncMaster 743n, 17 " | |
ОС: Windows Corporate, x86 | |
Индекс производительности Windows: 5,9 |
-------
Чем больше узнаешь - тем больше понимаешь что ничего не знаешь.
-------
Он был расстроенным трупом и потратил две минуты впустую.
Конфигурация компьютера | |
Процессор: Intel Core 2 Duo E8500, 3,16 Ghz | |
Материнская плата: Gigabyte GA-EP45-DS3L | |
Память: DDR2, 667 Mhz, 4 GB (dual mode) | |
HDD: ST3500410AS, 500 Gb, SATA | |
Видеокарта: HIS Radeon 4850 IceQ turbo | |
Звук: Realtek ALC888 @ Intel 82801JB ICH10 - High Definition Audio Controller | |
Блок питания: Huntkey, 450 Watt | |
CD/DVD: PHILIPS SPD2514T | |
Монитор: Samsung SyncMaster 743n, 17 " | |
ОС: Windows Corporate, x86 | |
Индекс производительности Windows: 5,9 |
-------
Чем больше узнаешь - тем больше понимаешь что ничего не знаешь.
Конфигурация компьютера | |
Процессор: Intel Core 2 Duo E8500, 3,16 Ghz | |
Материнская плата: Gigabyte GA-EP45-DS3L | |
Память: DDR2, 667 Mhz, 4 GB (dual mode) | |
HDD: ST3500410AS, 500 Gb, SATA | |
Видеокарта: HIS Radeon 4850 IceQ turbo | |
Звук: Realtek ALC888 @ Intel 82801JB ICH10 - High Definition Audio Controller | |
Блок питания: Huntkey, 450 Watt | |
CD/DVD: PHILIPS SPD2514T | |
Монитор: Samsung SyncMaster 743n, 17 " | |
ОС: Windows Corporate, x86 | |
Индекс производительности Windows: 5,9 |
1. КД, ДНС, Сервер Терминалов, SQL Server, Сервер 1С Предприятия, веб-сервер
2. Почтовый сервер MDaemon
- На обоих серверах обновление не прошло, вышла ошибка что "Setup could not update some file, please restart computer to run setup", после было "Восстановление предыдущей версии Windows"..
Вот так.
-------
Чем больше узнаешь - тем больше понимаешь что ничего не знаешь.
Читайте также: