Если у вас есть файловые сервера SMB, запущенные на Windows Server 2003, вы, наверное, уже в курсе, что расширенная поддержка этой ОС завершится 14 июля 2015 года. Более подробно об этом вы можете прочитать здесь.
Если вы все еще используете Windows Server 2003, вы должны начать планировать переход на новую версию прямо сейчас. Простейшим способом мигрировать старые файловые сервера SMB будет использование виртуальной машины, чтобы заменить вашу старую виртуальную машину и перенести данные на новую. Не смотря на то, что такой переход кажется довольно простым, вы должны быть осторожны, т.к. это перемещение данных и требует, по крайней мере непродолжительного, времени простоя.
Я рад, что вы читаете эту статью, так как это означает, что вы предпринимаете шаги, чтобы уйти с ваших старых серверов прежде, чем их поддержка прекратится.
Увеличить
Шаги
Для того, чтобы протестировать этот сценарий перехода, я сконфигурировал машину с Windows Server 2003 32-битной версии (которую я назвал FILES) и виртуальную машину Hyper-V с Windows Server 2012 R2. Также я настроил контроллер домена под управлением Windows Server 2012 R2 и подключил обе машины к этому домену.
Далее представлены шаги, которые я проделал для тестирования и выявления деталей того, как необходимо выполнить миграцию:
- Настройка аккаунтов/групп в Active Directory*
- Настройка компьютера с WS2003*
- Подготовка к миграции (копирование исходных данных до окончательной миграции)
- Экспорт информации о сетевых папках
- Добавление изменений после завершения Шага 3*
- Переименование Windows Server 2003
- Окончательный перенос данных
- Создание сетевых папок в пункте назначения
- Переименование WS2012R2
- Проверка изменений
Пункты, помеченные *, нужны только для симуляции среды и не должны быть выполнены в вашей реальной среде, в которой уже есть запущенный файловый сервер с установленной Windows Server 2003.
Далее вы найдете детальное описание каждого шага, перечисленного выше. Имейте ввиду, что я попытался привести команды, которые использовал в моем окружении, но вы, очевидно, должны настроить имена серверов и пути по мере необходимости в конкретной конфигурации.
Шаг 1 — Настройка аккаунтов/групп в Active Directory*
Сначала создадим несколько учетных записей пользователей и групп для домена, с которыми мы будем работать в сценарии.
Этот шаг должен быть выполнен из PowerShell (запущенной с правами Администратора) на контроллере домена под управлением Windows Server 2012 R2.
Более ранние версии Windows Server для контроллера домена также подходят, но я не могу ручаться, что приведенные ниже команды PowerShell будут работать на всех старых версиях.
ВАЖНО: Эти команды должны быть использованы только для симуляции тестового окружения. Не запускайте их в вашей производственной среде.
$cred = get-credential1..99 | % { New-ADUser -Name User$_ -AccountPassword $cred.password -CannotChangePassword $true -DisplayName "Test $_" -Enabled $true -SamAccountName User$_ }1..99 | % { New-ADGroup -DisplayName "Project $_" -Name Project$_ -GroupCategory Security -GroupScope Global }1..99 | % { $Group = $_; 1..99 | % { Get-ADGroup Project$Group | Add-ADGroupMember -Members User$_ } }
Шаг 2 – Настройте ваш компьютер с WS2003
Теперь создаем несколько локальных и сетевых папок, с различными разрешениями на уровне файловой системы и сети. Это имитирует производственную среду и помогает протестировать, что файлы, локальные и сетевые папки и разрешения были мигрированы должным образом.
Эти команды должны быть запущены из командной строки на тестовом файловом сервере под управлением Windows Server 2003. В скрипте JOSE – это имя домена.
ВАЖНО: Эти команды должны быть использованы только для симуляции тестового окружения. Не запускайте их в вашей производственной среде.
md C:\homefolder
for /L %%a in (1,1,99) do md C:\homefolder\user%%a
for /L %%a in (1,1,99) do NET SHARE share%%a=C:\homefolder\user%%a /GRANT:JOSE\Administrator,FULL /GRANT:JOSE\user%%a,FULL
for /L %%a in (1,1,99) do echo y | cacls C:\homefolder\user%%a /E /G JOSE\Administrator:F
for /L %%a in (1,1,99) do echo y | cacls C:\homefolder\user%%a /E /G JOSE\user%%a:F
md c:\projects
for /L %%a in (1,1,99) do md C:\projects\project%%a
for /L %%a in (1,1,99) do NET SHARE project%%a=C:\projects\project%%a /GRANT:JOSE\Administrator,FULL /GRANT:JOSE\Project%%a,FULL
for /L %%a in (1,1,99) do echo y | cacls c:\projects\project%%a /E /G JOSE\Administrator:F
for /L %%a in (1,1,99) do echo y | cacls c:\projects\project%%a /E /G JOSE\project%%a:F
for /L %%a in (1,1,99) do xcopy c:\windows\media\*.mid C:\homefolder\user%%a
for /L %%a in (1,1,99) do xcopy c:\windows\media\*.mid c:\projects\project%%a
Шаг 3 – Подготовка к миграции
На этом шаге выполняется первоначальное копирование данных с файлового сервера под управлением Windows Server 2003 на машину под управлением Windows Server 2012 R2 до окончательной миграции.
Делая эту первую копию со старого файлового сервера все еще доступной пользователям, вы минимизируете время простоя, необходимое для финальной копии. Если есть проблемы с открытыми файлами или другими ошибками на этом этапе, то ничего страшного – вы получите возможность захватить эти файлы позже.
Вы должны убедиться, что включили все папки, используемые для ваших сетевых файлов. В этом примере, я предполагаю, что соответствующие файлы находятся в папках C:\homefolder и C:\projects.
ВАЖНО: Вы должны использовать те же буквы дисков и те же самые пути на вашем новом сервере под управлением Windows Server 2012 R2. В противном случае, информация о сетевых папках не будет совпадать, и ваша миграция не будет работать.
ВАЖНО: Это процесс миграции работает только в случае, если для ваших разрешений вы используете доменные аккаунты и доменные группы. Если вы используете локальные аккаунты для общего доступа к файлам или назначения разрешений для файловой системы, то разрешения не будут перемещены ROBOCOPY.
Если вы не знакомы с ROBOCOPY, то вот описание используемых параметров:
- /e – Копировать подкаталоги, включая пустые
- /xj – Исключить точки соединения
- /r:2 – 2 попытки
- /w:5 – 5 секунд ожидания между двумя попытками
- /v – Подробные сведения для пропущенных файлов
- /it – Включить tweaked-файлы (одинаковый размер/метка времени, но разные атрибуты)
- /purge – Удалить в точке назначения файлы/папки, которые больше не существуют в источнике
- /copyall – Скопировать данные, атрибуты, временные метки, списки контроля доступа, информацию о владельце и сведения аудита
Данный шаг необходимо выполнить на сервере под управлением Windows Server 2012 R2 из командной строки, запущенной с правами Администратора.
md C:\homefolder
ROBOCOPY /e /xj /r:2 /w:5 /v /it /purge /copyall \\FILES\c$\homefolderc:\homefolder
md c:\projects
ROBOCOPY /e /xj /r:2 /w:5 /v /it /purge /copyall \\FILES\c$\projects c:\projects
Шаг 4 — Экспорт информации о сетевых папках
Экспортируем информацию о сетевых папках из реестра Windows Server 2003. В эту информацию входят имена сетевых папок, путь к ним и информация о безопасности сетевых папок (ACL). Более подробно об этой процедуре экспорта вы можете прочитать здесь.
Эта команда должна быть запущена из командной строки на тестовой файловом сервере под управление Windows Server 2003.
ВАЖНО: Это процесс миграции работает только в случае, если для ваших разрешений вы используете доменные аккаунты и доменные группы. Если вы используете локальные аккаунты для общего доступа к файлам или назначения разрешений для файловой системы, то разрешения не будут перемещены с помощью этого экспорта из регистра.
reg export HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares c:\export.reg
Шаг 5 — Добавление изменений после завершения Шага 3* (имитирует существующую среду и запускается с файлового сервера под управлением WS2003)
Этот шаг имитирует применение изменений к файлам, после того, как было совершено начальное копирование на Шаге 3. Так как прошло некоторое время между шагами 3 и 6, мы ожидаем, что пользователи все еще продолжали вносить изменения в уже существующие файлы и добавляли новые. Этот имитирующий шаг позволяет убедиться, что с помощью команд возможно захватить эти изменения.
Этот шаг должен быть запущен из командной строки на тестовой файловом сервере под управление Windows Server 2003.
ВАЖНО: Эти команды должны быть использованы только для симуляции тестового окружения. Не запускайте их в вашей производственной среде.
for /L %%a in (1,1,99) do xcopy c:\windows\media\r*.wav c:\homefolder\user%%a
for /L %%a in (1,1,99) do xcopy c:\windows\media\r*.wav c:\projects\project%%a
Шаг 6 – Переименование Windows Server 2003 (***Здесь начинается время простоя***)
На этом шаге вы должны переименовать ваш компьютер под управление Windows Server 2003 и перезапустить его. Этот шаг будет началом времени простоя для вашего файлового сервера.
Поскольку Windows Server 2003 не поставляется с опцией командной строки, необходимой для выполнения этой операции, используйте графический интерфейс, чтобы вручную переименовать машину из FILES в XFILES. Здесь предполагается, что FILES – это имя существующего файлового сервера (пользователи получают доступ к данным, используя \\FILES\<имя-сетевой-папки>); XFILES – это неиспользуемое в вашей сети имя. На этом этапе, ваш файловый сервер FILES станет недоступным.
Если вы хотите автоматизировать этот шаг, скачайте Support Tools и используйте команду, приведенную ниже, на компьютере под управлением Windows Server 2003.
NETDOM RENAMECOMPUTER /NEWNAME XFILES /REBOOT /FORCE
Шаг 7 – Окончательный перенос данных
На этом этапе копируются изменения, произошедшие с сетевыми ресурсами (изменение существующих файлов или создание новых) после начального копирования. После того, как система была переименована и перезагружена, в ней не должно быть подключенных пользователей, и, следовательно, не должно возникнуть каких-либо проблем с файлами во время копирования.
Мы будем использовать те же параметры, что и раньше, и ROBOCOPY, для того, чтобы скопировать то, что было изменено с первого копирования. Если первоначальное копирование происходило не очень давно, у вас будет всего несколько изменений, и этот шаг не займет много времени.
ВАЖНО: Т.к. это последнее копирование, вы должны просмотреть каждую ошибку и повторять копирование до тех пор, пока не будет выявлено никаких проблем с нужными вам файлами.
Запустите эту команду с компьютера под управлением Windows Server 2012 R2 из командной строки, запущенной с правами Администратора.
ROBOCOPY /e /xj /r:2 /w:5 /v /it /purge /copyall \\XFILES\c$\homefolderc:\homefolder
ROBOCOPY /e /xj /r:2 /w:5 /v /it /purge /copyall \\XFILES\c$\projectsc:\projects
Шаг 8 – Создание сетевых папок в пункте назначения
Импортируем настройки сетевых папок из Windows Server 2003, используя файл, созданный на шаге 4.
Запустите эту команду с компьютера под управлением Windows Server 2012 R2 из командной строки, запущенной с правами Администратора.
reg import \\XFILES\c$\export.reg
Шаг 9 – Переименование WS2012R2
Теперь переименуем компьютер под управлением Windows Server 2012 R2 в тоже имя, которое использовалось на нашем старом Windows Server 2003, и на этом миграция завершена.
После того, как система перезапущена, клиенты смогут получить доступ к сетевым папкам в новой системе, и на этом время простоя закончится.
Запустите эту команду с компьютера под управлением Windows Server 2012 R2 из PowerShell, запущенной с правами Администратора.
Rename-Computer -NewName FILES -Restart -Force
Шаг 10 – Проверка изменений (***Здесь заканчивается время простоя***)
Миграция завершена, и вы можете использовать эти команды для того, чтобы убедиться, что все сетевые папки перенесены правильно. С помощью этих команд также проверяются разрешения для некоторых сетевых и локальных папок, чтобы убедиться, что и эта часть работает корректно.
Запустите эту команду с компьютера под управлением Windows Server 2012 R2 из PowerShell, запущенной с правами Администратора.
Get-SmbShare
Get-SmbShareAccess Share23
Get-SmbShareAccess Project9
Get-Acl c:\homefolder\user23 | Format-List Path, AccessToString
Get-Acl c:\projects\project9 | Format-List Path, AccessToString
Заключение
Я настоятельно рекомендую вам настроить тестовую среду прежде, чем пытаться сразу применить эти инструкции на используемом в производстве файловом сервере под управлением Windows Server 2003. Ваша тестовая среда должна имитировать производственную настолько точно, насколько это возможно. В этом случае вы можете узнать подробную информацию о процедуре и настроить скрипты в соответствии деталям вашей среды.
Удачи в вашей миграции!