Перенести профили пользователей на другой диск windows server 2016

Skip to content

В Windows Server (и не сервер тоже) папки профилей пользователей по умолчанию лежат в директории системного диска C:\Users. И хотя каждый пользователь может назначить где именно должна лежать конкретная папка, например «загрузки», есть также недокументированная возможность переноса всех папок всех пользователей на конкретной машине — особенно это актуально для терминальных серверов, где работает множество пользователей.

Реализуется это очень просто: в редакторе реестра находим ключ HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList и меняем в нем значение параметра «ProfilesDirectory» (по умолчанию «%SystemDrive%\Users») на нужный нам путь, например на «D:\Profiles». После этого перезагружаем сервер и вуаля — все новые профили будут создаваться в соответствующих папках под «D:\Profiles».

Ситуация 1. Переносим профили на другой сервер.

Можно сделать через групповые политики и перемещаемые профили, но проще всего перенести ветку реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

и папки пользователей копированием.

Ситуация 2. Переносим профили на другой диск.

Зачем это надо? Для терминального сервера. За несколько лет размер занятого пространства диска C:\ (загрузочного раздела) может вырасти до сотен гигабайт и возникнут проблемы с резервным копированием, как это получилось у меня. Расчищая диск C:\ сразу увидел, что профили занимают больше 100GB. И квоты в общем-то тут не решат ситуацию, если квоты вообще допустимы для данной организации. Если пользователи работают с тонких клиентов и терминальный сервер получается единственным местом для хранения их информации, то объём этой информации будет расти и расти.

Кроме этого перенос профилей логически обоснован — для файлов профилей нужно индексирование поиска и теневые копии, для системных файлов индексирование не нужно, теневые копии.. даже не могу представить в какой ситуации это может быть востребовано. Для папок профилей бекап желателен, для загрузочного раздела — бекап необходим и большой суммарный объём профилей на этом же разделе сильно мешает, как уже говорил выше.

Первый вариант

Если система только-только установлена меняем значение ProfilesDirectory «%SystemDrive%\Users» на новое расположение, в ветке реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

профиль Администратора останется на старом месте, новые уже будут созданы по новому пути. Этого вполне достаточно. Однако при таком методе возможны проблемы при обновлении системы в дальнейшем.

Второй вариант

Другой вариант когда система относительно свежая, но уже есть пользователи и программы. В этом случае некоторые программы, например MS Office, прописали абсолютные пути к профилям на диске C:\. Тогда лучше переместить все профили скриптом и создать символическую ссылку папки Users на новое месторасположение, загрузившись с установочного диска в командную строку:

robocopy C:\Users D:\Users /E /COPYALL /XJ 
rmdir C:\Users /S /Q 
mklink /D C:\Users D:\Users

если в указании пути будет пробел, то нужно заключить путь в кавычки. Можно дополнить ключом перезагрузки:

Shutdown -r -f -t 00

и пойти пить чай.

В реестре при этом менять ничего не надо и в этом большой плюс этого метода — система «думает», что все по прежнему на диске C:/ и корректно работает через символическую ссылку. Проверить можно набив путь к профилю пользователя как C:\Users\»какой-то пользователь» и откроется он именно как C:\Users….., а не как D:\Users…. (при переносе на D).

Установка разрешений

После переноса папок профилей для каждой из них нужно обязательно отключить наследование разрешений и поменять разрешения безопасности на следующие:

  1. System — Полный доступ;
  2. Administrators — Полный доступ;
  3. Учётка пользователя — Полный доступ;
  4. Больше ничего быть не должно.

Перенос профиля пользователя

Для самой папки Users разрешения следующие:

  1. System — Полный доступ;
  2. Administrators — Полный доступ;
  3. Users — Чтение/Выполнение;
  4. Все — Чтение/Выполнение.

То есть для корректной работы системы все разрешения в новом расположении должны соответствовать разрешениям, какие были на диске C:\. Это важно.

Если же система довольно старая, профили по несколько гигабайт, пользоваться скриптом не рекомендую, лучше делать руками и не копировать, а перемещать, контролируя начальный размер папки профиля и размер перенесенного. В этом случае, это понятно и очевидно, ссылку для всей папки C:/Users создать нельзя, так как в ней есть открытые файлы нашего текущего профиля. Профили переносятся отдельно. Ссылка создаётся для каждого профиля отдельно. Свой профиль либо можно оставить и не переносить, либо перенести, временно создав второго админа. Создать, залогиниться под ним, перенести свой профиль, создать ссылку, установить разрешения, разлогиниться, зайти под собой, убить второго админа.

Одно замечание — при создании символических ссылок сразу проверяйте их работоспособность. Особенно когда ссылок создается сразу много.

Решение проблем

Возможные проблемы при копировании/переносе заключается в отсутствии доступа к какому-либо файлу:

  1. Нет прав на каталог;
  2. Блокировка файла процессом;
  3. Невозможность удаления файла.

Если нет прав на каталог, тогда нужно стать владельцем контейнера и входящих в него объектов:

Перенос профиля пользователя

затем добавить себе полные права на контейнер и заменить наследуемые разрешения для потомков. После этого можно переносить/удалять.

Если блокировка процессом, тогда рекомендую программу Unlocker — много вирусов под видом этой программы. Попробуйте вот эту версию, должна быть без вирусов.

Невозможность удаления файла проявляется в основном файлами нулевого размера с точкой в конце имени файла. При попытке удаления появляется ошибка:

Перенос профиля пользователя

В этой ситуации отлично помогает Far Manager, находите файл и нажимаете Alt-Del, затем кнопку «Wipe».

Перенос профиля пользователя

Все изложенное опробовано в «боевых условиях» продакшена. Пока «полет нормальный», если возникнет ещё что-то, тогда напишу дополнение.

Дополнение от 14.06.2016

Оказалось, что если диск с символической ссылкой, созданной с ключом /D, открыт как сетевой на другом компьютере, то переход по данной ссылке заканчивается ошибкой: — «Символическая ссылка не может быть загружена, так как её тип отключен». Для устранения данной ошибки ссылку нужно пересоздать с ключом /J (junction).

Дополнение от 15.06.2016

Папка Users на диске C:/ была заменена символической ссылкой на другой диск, при этом в реестре ничего не менялось. Обновление с Windows 2008 до 2008 R2 прошло успешно. Установка заменила символическую ссылку на папку и создала в ней дефолтные профили всех пользователей. После установки удалил данную папку и пересоздал ссылку.

Студворк — интернет-сервис помощи студентам

Добрый день. Неоднократно уже обсуждался вопрос переноса профилей терминальных пользователей на другой диск, но под Windows Server 2016 я так и не нашёл для себя оптимального решения, поэтому надеюсь, что кто-нибудь подскажет еще варианты. Сейчас в сети есть несколько решений, которые в разной степени меня не устраивают:
1.Задать параметр «Set Path For TS Roaming Profiles» в GP — в Windows Server 2016 я его не смог найти.
2.HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList -«ProfilesDirectory» — работает, но перемещает все профили, как локальные, так и терминальные, а это не совсем то.
3.Использовать «User Profile Disks» — это наиболее подходящий вариант, но он в первую очередь рассчитан на перемещаемые профили, а мне это не нужно: все профили на одном сервере, а на монтирование и передачу данных в контейнер уходит больше времени.
Есть ли еще какие-нибудь варианты?

Ситуация 1. Переносим профили на другой сервер.

Можно сделать через групповые политики и перемещаемые профили, но проще всего перенести ветку реестра:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList

и папки пользователей копированием.

Ситуация 2. Переносим профили на другой диск.

Зачем это надо? Для терминального сервера. За несколько лет размер занятого пространства диска C: (загрузочного раздела) может вырасти до сотен гигабайт и возникнут проблемы с резервным копированием, как это получилось у меня. Расчищая диск C: сразу увидел, что профили занимают больше 100GB. И квоты в общем-то тут не решат ситуацию, если квоты вообще допустимы для данной организации. Если пользователи работают с тонких клиентов и терминальный сервер получается единственным местом для хранения их информации, то объём этой информации будет расти и расти.

Кроме этого перенос профилей логически обоснован — для файлов профилей нужно индексирование поиска и теневые копии, для системных файлов индексирование не нужно, теневые копии.. даже не могу представить в какой ситуации это может быть востребовано. Для папок профилей бекап желателен, для загрузочного раздела — бекап необходим и большой суммарный объём профилей на этом же разделе сильно мешает, как уже говорил выше.

Первый вариант

Если система только-только установлена меняем значение ProfilesDirectory «%SystemDrive%Users» на новое расположение, в ветке реестра:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList

профиль Администратора останется на старом месте, новые уже будут созданы по новому пути. Этого вполне достаточно. Однако при таком методе возможны проблемы при обновлении системы в дальнейшем.

Второй вариант

Другой вариант когда система относительно свежая, но уже есть пользователи и программы. В этом случае некоторые программы, например MS Office, прописали абсолютные пути к профилям на диске C:. Тогда лучше переместить все профили скриптом и создать символическую ссылку папки Users на новое месторасположение, загрузившись с установочного диска в командную строку:

robocopy C:Users D:Users /E /COPYALL /XJ 
rmdir C:Users /S /Q 
mklink /D C:Users D:Users

если в указании пути будет пробел, то нужно заключить путь в кавычки. Можно дополнить ключом перезагрузки:

Shutdown -r -f -t 00

и пойти пить чай.

В реестре при этом менять ничего не надо и в этом большой плюс этого метода — система «думает», что все по прежнему на диске C:/ и корректно работает через символическую ссылку. Проверить можно набив путь к профилю пользователя как C:Users»какой-то пользователь» и откроется он именно как C:Users….., а не как D:Users…. (при переносе на D).

Установка разрешений

После переноса папок профилей для каждой из них нужно обязательно отключить наследование разрешений и поменять разрешения безопасности на следующие:

  1. System — Полный доступ;
  2. Administrators — Полный доступ;
  3. Учётка пользователя — Полный доступ;
  4. Больше ничего быть не должно.

Перенос профиля пользователя

Для самой папки Users разрешения следующие:

  1. System — Полный доступ;
  2. Administrators — Полный доступ;
  3. Users — Чтение/Выполнение;
  4. Все — Чтение/Выполнение.

То есть для корректной работы системы все разрешения в новом расположении должны соответствовать разрешениям, какие были на диске C:. Это важно.

Если же система довольно старая, профили по несколько гигабайт, пользоваться скриптом не рекомендую, лучше делать руками и не копировать, а перемещать, контролируя начальный размер папки профиля и размер перенесенного. В этом случае, это понятно и очевидно, ссылку для всей папки C:/Users создать нельзя, так как в ней есть открытые файлы нашего текущего профиля. Профили переносятся отдельно. Ссылка создаётся для каждого профиля отдельно. Свой профиль либо можно оставить и не переносить, либо перенести, временно создав второго админа. Создать, залогиниться под ним, перенести свой профиль, создать ссылку, установить разрешения, разлогиниться, зайти под собой, убить второго админа.

Одно замечание — при создании символических ссылок сразу проверяйте их работоспособность. Особенно когда ссылок создается сразу много.

Решение проблем

Возможные проблемы при копировании/переносе заключается в отсутствии доступа к какому-либо файлу:

  1. Нет прав на каталог;
  2. Блокировка файла процессом;
  3. Невозможность удаления файла.

Если нет прав на каталог, тогда нужно стать владельцем контейнера и входящих в него объектов:

Перенос профиля пользователя

затем добавить себе полные права на контейнер и заменить наследуемые разрешения для потомков. После этого можно переносить/удалять.

Если блокировка процессом, тогда рекомендую программу Unlocker — много вирусов под видом этой программы. Попробуйте вот эту версию, должна быть без вирусов.

Невозможность удаления файла проявляется в основном файлами нулевого размера с точкой в конце имени файла. При попытке удаления появляется ошибка:

Перенос профиля пользователя

В этой ситуации отлично помогает Far Manager, находите файл и нажимаете Alt-Del, затем кнопку «Wipe».

Перенос профиля пользователя

Все изложенное опробовано в «боевых условиях» продакшена. Пока «полет нормальный», если возникнет ещё что-то, тогда напишу дополнение.

Дополнение от 14.06.2016

Оказалось, что если диск с символической ссылкой, созданной с ключом /D, открыт как сетевой на другом компьютере, то переход по данной ссылке заканчивается ошибкой: — «Символическая ссылка не может быть загружена, так как её тип отключен». Для устранения данной ошибки ссылку нужно пересоздать с ключом /J (junction).

Дополнение от 15.06.2016

Папка Users на диске C:/ была заменена символической ссылкой на другой диск, при этом в реестре ничего не менялось. Обновление с Windows 2008 до 2008 R2 прошло успешно. Установка заменила символическую ссылку на папку и создала в ней дефолтные профили всех пользователей. После установки удалил данную папку и пересоздал ссылку.

User Profile Disks (UPD, диски профилей пользователей) – новый функционал Remote Desktop Services в Windows Server 2012. User Profile Disks представляют собой альтернативу использованию технологий перемещаемых профилей (roaming profile) и перенаправления папок (folder redirection) в терминальных сценариях RDS. Идея UPD – данные пользователя и его приложений (т.е. его профиль) хранятся в виде отдельного виртуального vhdx диска на неком выделенном общем файловом ресурсе. Этот виртуальный диск монтируется в сессию пользователя при его входе на RDS-сервер, и отключается при выходе (конечно, с сохранением всех изменений в профиле).

В этой статье мы опишем особенности настройки и работы технологии User Profile Disks на сервере с ролью Remote Desktop Services на Windows Server 2012 / 2012 R2 / 2016.

Содержание:

  • Настройка User Profile Disks в Windows Server RDS
  • VHDX файл с UPD профилем пользователя
  • Как расширить диск User Profile Disk с помощью PowerShell

Настройка User Profile Disks в Windows Server RDS

В первую очередь необходимо на любом файловом сервере организации создать общую сетевую папку, в которой будут храниться файлы с профилями пользователей в формате VHDX дисков (если вы хотите обеспечить высокую доступность UPD дисков, можно разместить файлы UPD на кластерном файловом ресурсе). В нашем примере, путь к такому каталогу будет выглядеть так: \srv01DemoLabOficeApps. Необходимо предоставить серверам, входящим в коллекцию RDS полные права доступа на данный каталог и файловую систему.

Совет. В рамках одной коллекции RDS для каждого пользователя может существовать только один vhdx файл с UPD профилем. Если пользователь подключается к ресурсам из двух разных RDS коллекций, для каждой из них будет создан отдельный vhdx файл с профилем пользователя.

Режим User Profile Disks включается и настраивается в параметрах коллекций Remote Desktop. Этот режим можно включить непосредственно при создании коллекции, или уже после того, как коллекция создана.

Мастер создания коллекции RDSВ нашем примере коллекция уже существует, поэтому в консоли Server Manager выбираем имеющуюся коллекцию, и в верхнем левом углу выбираем Tasks-> Edit Properties.

Правка параметров коллекции Remote Desktop ServicesЗатем в разделе User Profile Disks ставим чекбокс на Enable user profile disks, указываем путь к созданной ранее сетевой папке (\srv01DemoLabOficeApps) и максимальный размер диска с профилем (пусть это будет 20 Гб). Сохраняем изменения.

Включить User Profile DisksПосле сохранения изменений, проверьте что NTFS разрешения на каталог с дисками профилей были изменены. В нашем случае коллекция состоит из одного сервера RDSH01, которому предоставлены полные права на папку.

User Profile Disks - NTFS права на каталогНа уровне сетевой папки (шары) серверу RDSH01$ предоставлены права Full Control. Разрешения на общую папку с дисками профилей пользователяПри добавлении новых серверов RD Session Host в коллекцию RDS серверов, мастер автоматически изменит разрешения на каталог, предоставив доступ новым серверам. Это очень удобно, т.к. при масштабировании терминальной фермы не нужно каждый раз вспоминать о настройке разрешений на сетевую папку с профилями.

VHDX файл с UPD профилем пользователя

Перейдем в наш общий сетевой каталог с профилями пользователей. Теперь в нем хранится файл вида UVHD-template.vhdx.

UVHD-template.vhdx - шаблон диска профиля

Этот файл представляет собой шаблон диска с профилем пользователя. При первом RDP входе пользователя на сервер RDS, этот шаблон копируется и переименовывается в vhdx файл, содержащий в имени SID пользователя.

uvhd-usersid.vhdx

Посмотрим, что представляет собой диск с профилем пользователя. Для этого смонтируем его, щелкнув по vhdx файлу ПКМ и выбрав пункт Mount. Диск UPD можно использовать только в одной сессии на одном RDS хосте (монопольный доступ). Вы не сможете смонтировать UPD VHDX диск, если в настоящий момент его использует пользователь на RDS сервере).
mount vhdx (смонтировать vhdx файл)Как вы видите, содержимое vhdx диска представляет набор каталогов и файлов обычного профиля пользователя. При входе в систему пользователь получает абсолютно прозрачный доступ к данным, хранящимся в его профиле.

Содержимое диска с профилем

На стороне сервера RD Session Host .vhdx файл пользователя монтируется в каталог C:users<username> и выглядит таким образом:

Подключенный vhdx диск с профилем пользователя

Обратите внимание, что UPD диск привязан к версии Windows RDS сервера. Вы не сможете перенести UPD профиль пользователя с RDS сервера с одной версии Windows Server на другую.

Запись данных в файл vhdx ведется в реальном времени. Т.е. при копировании данных в профиль пользователя на сервере RDS, размер vhdx файла на общем хранилище увеличивается сразу.

В том случае, если в системе уже присутствует каталог с профилем пользователя, каталог со старым профилем переименовывается в формат <username>-BACKUP-<number>.

rdstest.backup-0VHDX диск монтируется при старте сессии пользователя на VDI или RDS сервере. Список подключенных UPD дисков с профилями можно вывести с помощью утилиты mountvol.

По-умолчанию диск с пользовательским профилем содержит в себе все содержимое профиля пользователя. Однако, в настройках RDS коллекции можно исключить определенные папки из списка синхронизируемых каталогов, либо указать, что должны сохранятся только определённые папки. Таким образом все изменения, которые вносятся в терминальной сессии пользователя в список исключенных папок профиля, не сохраняются на vhdx диске в сетевом каталоге.

Исключить папки из диска профиля пользователяВторой вариант позволяет настроить сохранение в UPD профиле только указанных каталогов.

User profile disk - сохранение определенных папокВ случае необходимости, второй вариант позволяет реализовать сценарии сохранения настроек стартового экрана, хранящихся в файле appsfolder.itemdata-ms. В данном примере мы просто добавили путь к каталогу AppDataLocalMicrosoftWindows в качестве дополнительного пути, который нужно сохранять в UPD.

appsfolder.itemdata-ms

Как расширить диск User Profile Disk с помощью PowerShell

Вы можете расширить виртуальный vhdx диск с UPD профилем конкретного пользователя с помощью PowerShell командлета Resize-VirtualDisk из модуля Hyper-V.

Net use U: \srv01DemoLabOficeApps
Resize-VHD -Path u:UVHD-<SID>.vhdx -SizeBytes 30GB
Net use U: /delete

Если вы используете командлет Resize-VHD с рабочей станцией под Windows 10, то в системе необходимо установить роль Hyper-V -> ПлатформаHyper-V -> Службы Hyper-V.

Теперь нужно расширить диск из графического интерфейса консоли Управления дисками (Disk Manager). Действие –> Подключить виртуальный жесткий диск -> Расширить том.

расширить диск User Profile Disk

Либо воспользуйтесь таким PoSh скриптом:
<#
.Synopsis
This script extend size of VHDX file and resize the disk partition to Max
#>
Param(
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
[alias("Path")]
[string]$vhdxFile,
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
[alias("Size")]
[int64]$vhdxNewSize
)
begin{
try {
Mount-VHD -Path $vhdxFile -ErrorAction Stop

}
catch {
Write-Error "File $vhdxFile is busy"
Break
}
$vhdx = Get-VHD -Path $vhdxFile
if ($vhdx.Size -ge $vhdxNewSize){
Write-Warning "File $vhdxFile already have this size!"
$vhdx | Dismount-VHD
Break
}
}
process{
Dismount-VHD -Path $vhdxFile
Resize-VHD -Path $vhdxFile -SizeBytes $vhdxNewSize
$vhdxxpart = Mount-VHD -Path $vhdxFile -NoDriveLetter -Passthru | Get-Disk | Get-Partition
$partsize = $vhdxxpart | Get-PartitionSupportedSize
$vhdxxpart | Resize-Partition -Size $partsize.SizeMax
}
end{
Dismount-VHD -Path $vhdxFile
}

Обратите внимание, что нельзя расширить UPD диск пользователя с активной RDS сессией.

Чтобы уменьшить размер файла UPD (при условии, что вы удалили данные пользователя внутри vhdx файла и размер файлов на диске меньше выделенного ему размера) можно воспользоваться командами:

resize-VHD \srv01DemoLabOficeAppsUVHD-<SID>.vhdx –ToMinimumSize

А затем:

Optimize-vhd -path \srv01DemoLabOficeAppsUVHD-<SID>.vhdx -mode full

Итак, мы рассмотрели основные особенности работы технологии User Profile Disks в RDS/VDI решениях на базе Windows Serer 2016 и 2012 R2. Настройка UPD намного проще чем процесс настройки перемещаемых профилей и перенаправляемых папок. Диски привязаны к коллекции RDS и не могут повредиться при попытке совместного использования профиля несколькими терминальными серверами (в отличии от обычных профилей). Диски профилей пользователей могут храниться на SMB шарах, CSV, SOFS, в SAN или на локальных дисках. Также Microsoft отмечает, что скорость загрузки рабочей среды пользователя в случае использования UPD уменьшается.

Если вы планируете использовать для хранения UPD профилей DFS сервера, то имейте в виду, что на них должна использоваться Windows Server 2012 R2. При использовании предыдущих версий Windows Server вы получите ошибку:

Unable to enable user disks on rVHDShare. Could not create template VHD.  Error Message: The network location "\winitpro.runamespaceUPD1" is not available.

Также на стороне файлового сервера желательно использовать версию SMB 3.02 (Windows Server 2012 R2) или выше.

В любом случае, т.к. технология User Profile Disks относительно свежая, рекомендуется перед крупными внедрениями UPD откатать их работу и возможные проблемы в тестовой среде.

У сервера около 20 пользователей и каждый все хранит в загрузках, документах, на рабочем столе, ещё раз за рабочем столе и ещё раз на рабочем столе… В связи с этим, возникает вопрос, зачем 2тб диск д, но прививать людям «этикет поведения за пк» — не совсем реализуемое мероприятие… Поэтому оптимальным решением я посчитал перенос папки users на диск д. На обычной Винде вопросов бы не возникло, я бы просто перенес каждую библиотеку в соответствующее место, но с серверной возникает больше вопросов. Может кто знает как это решить?


  • Вопрос задан

  • 1963 просмотра

  • Перенос windows server 2008 r2 на другое железо
  • Перенести папку мои документы с диска с на диск d windows 10
  • Переменные среды в windows 10 что это
  • Перенос windows 10 на другое железо без переустановки windows
  • Переменные среды в windows 10 pro