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).
Установка разрешений
После переноса папок профилей для каждой из них нужно обязательно отключить наследование разрешений и поменять разрешения безопасности на следующие:
- System — Полный доступ;
- Administrators — Полный доступ;
- Учётка пользователя — Полный доступ;
- Больше ничего быть не должно.
Для самой папки Users разрешения следующие:
- System — Полный доступ;
- Administrators — Полный доступ;
- Users — Чтение/Выполнение;
- Все — Чтение/Выполнение.
То есть для корректной работы системы все разрешения в новом расположении должны соответствовать разрешениям, какие были на диске C:\. Это важно.
Если же система довольно старая, профили по несколько гигабайт, пользоваться скриптом не рекомендую, лучше делать руками и не копировать, а перемещать, контролируя начальный размер папки профиля и размер перенесенного. В этом случае, это понятно и очевидно, ссылку для всей папки C:/Users создать нельзя, так как в ней есть открытые файлы нашего текущего профиля. Профили переносятся отдельно. Ссылка создаётся для каждого профиля отдельно. Свой профиль либо можно оставить и не переносить, либо перенести, временно создав второго админа. Создать, залогиниться под ним, перенести свой профиль, создать ссылку, установить разрешения, разлогиниться, зайти под собой, убить второго админа.
Одно замечание — при создании символических ссылок сразу проверяйте их работоспособность. Особенно когда ссылок создается сразу много.
Решение проблем
Возможные проблемы при копировании/переносе заключается в отсутствии доступа к какому-либо файлу:
- Нет прав на каталог;
- Блокировка файла процессом;
- Невозможность удаления файла.
Если нет прав на каталог, тогда нужно стать владельцем контейнера и входящих в него объектов:
затем добавить себе полные права на контейнер и заменить наследуемые разрешения для потомков. После этого можно переносить/удалять.
Если блокировка процессом, тогда рекомендую программу 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).
Установка разрешений
После переноса папок профилей для каждой из них нужно обязательно отключить наследование разрешений и поменять разрешения безопасности на следующие:
- System — Полный доступ;
- Administrators — Полный доступ;
- Учётка пользователя — Полный доступ;
- Больше ничего быть не должно.
Для самой папки Users разрешения следующие:
- System — Полный доступ;
- Administrators — Полный доступ;
- Users — Чтение/Выполнение;
- Все — Чтение/Выполнение.
То есть для корректной работы системы все разрешения в новом расположении должны соответствовать разрешениям, какие были на диске C:. Это важно.
Если же система довольно старая, профили по несколько гигабайт, пользоваться скриптом не рекомендую, лучше делать руками и не копировать, а перемещать, контролируя начальный размер папки профиля и размер перенесенного. В этом случае, это понятно и очевидно, ссылку для всей папки C:/Users создать нельзя, так как в ней есть открытые файлы нашего текущего профиля. Профили переносятся отдельно. Ссылка создаётся для каждого профиля отдельно. Свой профиль либо можно оставить и не переносить, либо перенести, временно создав второго админа. Создать, залогиниться под ним, перенести свой профиль, создать ссылку, установить разрешения, разлогиниться, зайти под собой, убить второго админа.
Одно замечание — при создании символических ссылок сразу проверяйте их работоспособность. Особенно когда ссылок создается сразу много.
Решение проблем
Возможные проблемы при копировании/переносе заключается в отсутствии доступа к какому-либо файлу:
- Нет прав на каталог;
- Блокировка файла процессом;
- Невозможность удаления файла.
Если нет прав на каталог, тогда нужно стать владельцем контейнера и входящих в него объектов:
затем добавить себе полные права на контейнер и заменить наследуемые разрешения для потомков. После этого можно переносить/удалять.
Если блокировка процессом, тогда рекомендую программу 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. Этот режим можно включить непосредственно при создании коллекции, или уже после того, как коллекция создана.
В нашем примере коллекция уже существует, поэтому в консоли Server Manager выбираем имеющуюся коллекцию, и в верхнем левом углу выбираем Tasks-> Edit Properties.
Затем в разделе User Profile Disks ставим чекбокс на Enable user profile disks, указываем путь к созданной ранее сетевой папке (\srv01DemoLabOficeApps) и максимальный размер диска с профилем (пусть это будет 20 Гб). Сохраняем изменения.
После сохранения изменений, проверьте что NTFS разрешения на каталог с дисками профилей были изменены. В нашем случае коллекция состоит из одного сервера RDSH01, которому предоставлены полные права на папку.
На уровне сетевой папки (шары) серверу RDSH01$ предоставлены права Full Control.
При добавлении новых серверов RD Session Host в коллекцию RDS серверов, мастер автоматически изменит разрешения на каталог, предоставив доступ новым серверам. Это очень удобно, т.к. при масштабировании терминальной фермы не нужно каждый раз вспоминать о настройке разрешений на сетевую папку с профилями.
VHDX файл с UPD профилем пользователя
Перейдем в наш общий сетевой каталог с профилями пользователей. Теперь в нем хранится файл вида UVHD-template.vhdx.
Этот файл представляет собой шаблон диска с профилем пользователя. При первом RDP входе пользователя на сервер RDS, этот шаблон копируется и переименовывается в vhdx файл, содержащий в имени SID пользователя.
Посмотрим, что представляет собой диск с профилем пользователя. Для этого смонтируем его, щелкнув по vhdx файлу ПКМ и выбрав пункт Mount. Диск UPD можно использовать только в одной сессии на одном RDS хосте (монопольный доступ). Вы не сможете смонтировать UPD VHDX диск, если в настоящий момент его использует пользователь на RDS сервере).Как вы видите, содержимое vhdx диска представляет набор каталогов и файлов обычного профиля пользователя. При входе в систему пользователь получает абсолютно прозрачный доступ к данным, хранящимся в его профиле.
На стороне сервера RD Session Host .vhdx файл пользователя монтируется в каталог C:users<username> и выглядит таким образом:
Обратите внимание, что UPD диск привязан к версии Windows RDS сервера. Вы не сможете перенести UPD профиль пользователя с RDS сервера с одной версии Windows Server на другую.
Запись данных в файл vhdx ведется в реальном времени. Т.е. при копировании данных в профиль пользователя на сервере RDS, размер vhdx файла на общем хранилище увеличивается сразу.
В том случае, если в системе уже присутствует каталог с профилем пользователя, каталог со старым профилем переименовывается в формат <username>-BACKUP-<number>.
VHDX диск монтируется при старте сессии пользователя на VDI или RDS сервере. Список подключенных UPD дисков с профилями можно вывести с помощью утилиты mountvol.
По-умолчанию диск с пользовательским профилем содержит в себе все содержимое профиля пользователя. Однако, в настройках RDS коллекции можно исключить определенные папки из списка синхронизируемых каталогов, либо указать, что должны сохранятся только определённые папки. Таким образом все изменения, которые вносятся в терминальной сессии пользователя в список исключенных папок профиля, не сохраняются на vhdx диске в сетевом каталоге.
Второй вариант позволяет настроить сохранение в UPD профиле только указанных каталогов.
В случае необходимости, второй вариант позволяет реализовать сценарии сохранения настроек стартового экрана, хранящихся в файле appsfolder.itemdata-ms. В данном примере мы просто добавили путь к каталогу AppDataLocalMicrosoftWindows в качестве дополнительного пути, который нужно сохранять в UPD.
Как расширить диск 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). Действие –> Подключить виртуальный жесткий диск -> Расширить том.
Либо воспользуйтесь таким 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 просмотра