- Remove From My Forums
-
Вопрос
-
Как правильно перенести User profile disk на Windows 2012R2.
Необходимо переместить из одного места в другое. При копировании диска пользователя в другое место,то при входе у пользователя
создается временный профиль.Простым копированием с одного места в другое не получиться.Как переместить и чтобы User profile disk монтировался пользователю.
Ответы
-
Копированием диска должно проходить нормально.
Порядок действий:
1. Убедиться, что у пользователей нет активных сессий
2. В свойствах коллекции отключить использование дисков пользователей
3. В свойствах коллекции включить использование дисков пользователей с новыми параметрами, то есть
\NewServerNewShare4. Скопировать диск пользователя из старого каталога в новый.
-
Помечено в качестве ответа
15 апреля 2015 г. 19:21
-
Помечено в качестве ответа
-
Так все верно. Но необходимо перед копированием проверить нет активных сессий. Также или отключении диски пользователей.
Лучше проверить программой Sidder
https://gallery.technet.microsoft.com/Sidder-Quickly-see-which-fa6360b3-
Помечено в качестве ответа
momiko_misha
15 апреля 2015 г. 19:28
-
Помечено в качестве ответа
Ситуация 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 прошло успешно. Установка заменила символическую ссылку на папку и создала в ней дефолтные профили всех пользователей. После установки удалил данную папку и пересоздал ссылку.
0 / 0 / 0 Регистрация: 11.12.2011 Сообщений: 79 |
|
1 |
|
Server 2012 Как сделать так, чтобы терминальные пользователи и их файлы хранились на соседнем диске?08.02.2016, 12:44. Показов 24310. Ответов 32
Добрый день! Как же сделать так чтоб терминальные пользователи и их файлы в том числе и рабочий стол, хранились на соседнем диске (2TB) Windows server 2012 R2
__________________
0 |
1882 / 1106 / 426 Регистрация: 22.01.2016 Сообщений: 3,050 |
|
08.02.2016, 16:23 |
2 |
ак же сделать так чтоб терминальные пользователи и их файлы в том числе и рабочий стол, хранились на соседнем диске Прочитайте про технологию User Profile Disks (UPD, диски профилей пользователей)
0 |
Модератор 6871 / 3818 / 477 Регистрация: 13.03.2013 Сообщений: 14,059 Записей в блоге: 9 |
|
09.02.2016, 09:55 |
3 |
Некоторые хитрости при переустановке ОС пост №5.
0 |
0 / 0 / 0 Регистрация: 11.12.2011 Сообщений: 79 |
|
17.02.2016, 16:14 [ТС] |
4 |
Некоторые хитрости при переустановке ОС пост №5. При установке Windows Server 2012 проделывать все эти манипуляции? Или надо всем переустановить винду?
0 |
1882 / 1106 / 426 Регистрация: 22.01.2016 Сообщений: 3,050 |
|
17.02.2016, 16:28 |
5 |
Вы же спрашивали:
Как же сделать так чтоб терминальные пользователи и их файлы в том числе и рабочий стол, хранились на соседнем диске (2TB) Поэтому все данные вам советы касаются перенастройки только сервера… профиль на клиентских ПК, где был там и останется. А чем вас не устроило включение режим «User Profile Disks» на RDS-сервере? Переустанавливать ОС для этого не надо…
0 |
0 / 0 / 0 Регистрация: 11.12.2011 Сообщений: 79 |
|
17.02.2016, 16:34 [ТС] |
6 |
А чем вас не устроило включение режим «User Profile Disks» на RDS-сервере? Переустанавливать ОС для этого не надо… У меня теперь не создаются папки пользователей на сервере при создании пользователя, папка создается на локальном компьютере, это нормально? Меня устроило, просто пока не разобрался.
0 |
1882 / 1106 / 426 Регистрация: 22.01.2016 Сообщений: 3,050 |
|
17.02.2016, 16:44 |
7 |
У меня теперь не создаются папки пользователей на сервере при создании пользователя, папка создается на локальном компьютере, это нормально? Не понял о чём вы — где именно вы создаёте пользователя и какие при этом должны создаваться папки? Вы о «Домашней папке» или «Перемещаемом профиле» для AD-пользователя?
просто пока не разобрался Как сказано в статье «Настройка UPD намного проще чем процесс настройки перемещаемых профилей и перенаправляемых папок» — и это пожалуй верно, т.к. ничего проще для размещения всех новых профилей на другом диске у терминального сервера, по моему ни сделать…
0 |
0 / 0 / 0 Регистрация: 11.12.2011 Сообщений: 79 |
|
17.02.2016, 16:47 [ТС] |
8 |
Не понял о чём вы — где именно вы создаёте пользователя и какие при этом должны создаваться папки? Вы о «Домашней папке» или «Перемещаемом профиле» для AD-пользователя? Нет, например создаю в AD пользователя Иван Иванов имя для входа «Ivan» и на диске C в папке «Пользователи» не создается папка Ivan она создается на компьютере с которого заходишь под этой учёткой.
0 |
1882 / 1106 / 426 Регистрация: 22.01.2016 Сообщений: 3,050 |
|
17.02.2016, 17:13 |
9 |
и на диске C в папке «Пользователи» не создается папка Ivan она создается на компьютере с которого заходишь под этой учёткой. Ещё раз — вы заходите на терминальный сервер AD-пользователем mydomainivan, а на сервере его профиль не создаётся??? И при этом профиль создаётся на клиенте, откуда запускалось «Подключение к удалённому рабочему столу»? А в какой тогда профиль он попадает? Выполните (на терминальном сервере) в cmd [cd %USERPROFILE%] или просто создайте файл на рабочем столе и посмотрите его свойства — какой будет указан путь? Добавлено через 2 минуты
она создается на компьютере с которого заходишь под этой учёткой Может вы %windir%system32mstsc.exe (Подключение к удаленному рабочему столу) запускаете от имени mydomainivan? Тогда да — на доменном ПК создастся профиль этого Ивана…
0 |
0 / 0 / 0 Регистрация: 11.12.2011 Сообщений: 79 |
|
17.02.2016, 17:59 [ТС] |
10 |
Ещё раз — вы заходите на терминальный сервер AD-пользователем mydomainivan, а на сервере его профиль не создаётся??? И при этом профиль создаётся на клиенте, откуда запускалось «Подключение к удалённому рабочему столу»? Все, всё получилось. Создалась папка, туплю, простите) Добавлено через 34 минуты Добавлено через 9 минут
0 |
1882 / 1106 / 426 Регистрация: 22.01.2016 Сообщений: 3,050 |
|
17.02.2016, 18:39 |
11 |
Так у вас ещё RDS роль не развёрнута… т.е. сервер ещё совсем не терминальный
начал делать, но даже не получается установить службу удаленных рабочих столов Этот сервер добавлен в домен? Вот пошаговые руководства по добавлению RDS-роли:
можно сделать если не куплены еще клиентские лицензии и windows server ознакомительный на 180 дней Не вижу того, что может помешать. У вас 180 дней на использование сервера + RDS роль может 120 дней (grace period) работать без клиентских лицензий…
0 |
Модератор 6871 / 3818 / 477 Регистрация: 13.03.2013 Сообщений: 14,059 Записей в блоге: 9 |
|
18.02.2016, 06:18 |
12 |
При установке Windows Server 2012 проделывать все эти манипуляции? Или надо всем переустановить винду? Это делается на ПК, которым требуется перенести профили на другой раздел/диск.
0 |
0 / 0 / 0 Регистрация: 11.12.2011 Сообщений: 79 |
|
19.02.2016, 14:55 [ТС] |
13 |
Это делается на ПК, которым требуется перенести профили на другой раздел/диск. Слишком много ПК для этого способа
Этот сервер добавлен в домен? Да
0 |
Модератор 6871 / 3818 / 477 Регистрация: 13.03.2013 Сообщений: 14,059 Записей в блоге: 9 |
|
19.02.2016, 15:00 |
14 |
Слишком много ПК для этого способа В первом посту речь шла о сервере.
0 |
0 / 0 / 0 Регистрация: 11.12.2011 Сообщений: 79 |
|
19.02.2016, 15:12 [ТС] |
15 |
Не хочет зараза( Миниатюры
0 |
1882 / 1106 / 426 Регистрация: 22.01.2016 Сообщений: 3,050 |
|
19.02.2016, 15:17 |
16 |
Не хочет зараза( А вы не на контроллере домена пытаетесь развернуть RDS-роль? Если да, то формально в 2012 сервере так делать нельзя. Вот неофициальное руководство, как это обойти. Но делать так не лучшая идея…
0 |
0 / 0 / 0 Регистрация: 11.12.2011 Сообщений: 79 |
|
19.02.2016, 15:20 [ТС] |
17 |
А вы не на контроллере домена пытаетесь развернуть RDS-роль? Если да, то формально в 2012 сервере так делать нельзя. Да один сервер, он контроллер домена и на нем же хочу удаленные рабочие столы.
0 |
Модератор 6871 / 3818 / 477 Регистрация: 13.03.2013 Сообщений: 14,059 Записей в блоге: 9 |
|
19.02.2016, 15:53 |
18 |
Чтоб пользователи (до 10) заходили по удаленке в 1С и всё, даже рабочие столы им не нужны по сути. Просто подключение по удаленке и сразу запуск 1С RemoteApp в помощь.
0 |
1882 / 1106 / 426 Регистрация: 22.01.2016 Сообщений: 3,050 |
|
19.02.2016, 16:09 |
19 |
Да один сервер, он контроллер домена Ну, ссылку я вам дал. Сам так не пробовал и что-то советовать про RDS на DC не могу… Добавлено через 14 минут
RemoteApp в помощь. А сами пробовали RemoteApp на DC? https://support.microsoft.com/ru-ru/kb/2833839 This configuration, will provide desktop sessions to users based on the number of Remote Desktop Services client access license (RDS CALs) installed on the server, but will not provide access to RemoteApp programs or the RDWeb site. Вот удалённый рабочий стол ещё можно получить…
0 |
0 / 0 / 0 Регистрация: 11.12.2011 Сообщений: 79 |
|
19.02.2016, 17:17 [ТС] |
20 |
Вот неофициальное руководство, как это обойти. Но делать так не лучшая идея… тоже ошибка ошибка ошибка…не разворачиваются указанные роли и службы. Может есть другой способ? Пойду пока снесу винду, поставлю заново, может в ней косяк какой.
0 |
User Profile Disks (UPD, диски профилей пользователей) позволяет хранить профиль каждого пользователей Remote Desktop Services (
%USERPROFILE%
) в отдельном виртуальном VHDX диске. Такой профиль подключается при входе пользователя в Windows и отключается при выходе (с сохранением изменений в профиле). User Profile Disks можно хранить на внешнем файловом ресурсе, благодаря чему пользователь может получить доступ к своему окружению (профили) при входе на любой сервер фермы RDS. UPD диски представляют собой альтернативу использованию технологий перемещаемых профилей (roaming profile) и перенаправления папок (folder redirection) в терминальных сценариях RDS.
В этой статье мы рассмотрим особенности настроить и использовать профили User Profile Disks на серверах с ролью Remote Desktop Services на Windows Server 2022/2019/2016/2012R2.
Содержание:
- Настройка User Profile Disks в Windows Server RDS
- VHDX файлы с UPD профилями пользователей RDS
- Как расширить/сжать диск User Profile Disk с помощью PowerShell?
- Временный профиль при использовании User Profile Disk в RDS
Настройка User Profile Disks в Windows Server RDS
Создайте общую сетевую папку для хранения файлов профилей UPD. Эту папку нужно разместить на любом файловом сервере за пределами фермы RDS ( рекомендуем расположить сетевую папку на кластере для обеспечения высокой доступности UPD профилей). В нашем примере, путь к такому каталогу будет выглядеть так:
\srv01RDSProfiles
.
Создайте в AD группу безопасности, в которую нужно включить все хосты в вашей RDS коллекции. МОжете создать группу с помощью графической консоли ADUC или с помощью PowerShell командлетов из модуля Active Directory for Windows PowerShell:
New-ADGroup mskRDSHCollection1 -path "OU=Groups,OU=MSK,OU=RU,DC=winitpro,DC=loc" -GroupScope Domain -PassThru –Verbose
Add-AdGroupMember -Identity mskRDSHCollection1 -Members msk-rds1$, msk-rds2$, msk-rds3$
Теперь предоставьте права Full Control на папку \srv01RDSProfiles для группы mskRDSHCollection1.
Вы можете включить User Profile Disks в настройках коллекций Remote Desktop при ее создании. Если коллекция уже создана, найдите ее в консоли Server Manager и в верхнем левом углу выберите Tasks-> Edit Properties.
Затем в разделе User Profile Disks включите опцию Enable user profile disks, укажите к созданной ранее сетевой папке (
\srv01RDSProfiles
) и задайте максимальный размер диска с профилем (пусть это будет 7 Гб). Сохраните изменения.
Допустимо использовать пространство имен DFS для хранения UPD профилей DFS сервера. На 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.
Вы можете проверить, что UPD включен для коллекции RDS и получить путь к каталогу, в котором хранятся профиля с помощью команды:
Get-RDSessionCollectionConfiguration -CollectionName mskCorpApp1 –UserProfileDisk
Совет. Для каждой RDS коллекции создается только один vhdx файл с UPD профилем пользователя. Если пользователь подключается к хостам из двух разных RDS коллекций, для каждой из них будет создан отдельный vhdx файл.
По умолчанию UPD диск хранит все содержимое профиля пользователя. Вы можете исключить определенные папки из списка синхронизируемых каталогов. Если каталог исключен из профиля, изменения в нем не будут сохраняться в VHDX диске в сетевом каталоге. Доступные две опции:
- Store all user settings and data on the user profile disk
- Store only the following folders in the user profile disk
При использовании RDS с UPD на Windows Server 2019/2016 со временем вы можете столкнуться со снижением производительности серверов, появления черного экрана при входе в RDP. Подробно проблема описана здесь. Рекомендуем сразу включить на всех RDS хостах параметр реестра DeleteUserAppContainersOnLogoff:
New-ItemProperty -Path “HKLM:SYSTEMCurrentControlSetServicesSharedAccessParametersFirewallPolicy” -Type DWord -Path -Name DeleteUserAppContainersOnLogoff -Value 1
VHDX файлы с UPD профилями пользователей RDS
После того, как вы изменили настройки коллекции и включили UPD, в целевом каталоге будет создан файл UVHD-template.vhdx.
Этот файл представляет собой шаблон виртуального диска с профилем пользователя. Когда новый пользователей подключается к серверу RDS по RDP, этот шаблон копируется и переименовывается в vhdx файл, содержащий в имени SID пользователя. Для каждого пользователя создается отдельный VHDX файл.
Совет. Информацию о событиях входа пользователей можно отслеживать в журнале Event Viewer -> Application (источник User Profile Service) и Applications and Services Logs -> -Microsoft -> Windows -> User Profile Service -> Operational.
Чтобы понять, какому пользователю принадлежит VHDX файл, нужно сопоставить имя UPD файла с именем пользователя. Можно вручную преобразовать SID в имя учетной записи с помощью командлета Get-ADUser:
Get-ADUser -Identity S-1-5-21-305647651-3952524288-2944781117-23711116
Или воспользуйтесь скриптом ShowUPDFolderDetails.ps1, который выводит имена UPD файлов и их владельцев:
$UPDShare = "\srv01RDSProfiles"
$UserProfiles = @()
$fc = new-object -com scripting.filesystemobject
$folder = $fc.getfolder($UPDShare)
"Username,SiD" >> export.csv
foreach ($i in $folder.files)
{
$sid = $i.Name
$sid = $sid.Substring(5,$sid.Length-10)
if ($sid -ne "template")
{
$securityidentifier = new-object security.principal.securityidentifier $sid
$user = ( $securityidentifier.translate( [security.principal.ntaccount] ) )
$UserProfile = New-Object PSObject -Property @{
UserName = $user
UPDFile=$i.Name
}
$UserProfiles += $UserProfile
}
}
$UserProfiles| select UserName, UPDFile
Т.к. UPD профиль представляет собой обычный файл виртуального диска в формате VHDX, вы можете смонтировать его и просмотреть содержимое. Щелкните правой кнопкой по файлу и выберите Mount.
Как вы видите, содержимое VHDX диска представляет набор каталогов и файлов обычного профиля пользователя.
UPD профиль может монтируется в монопольном режиме. Это значит, что, если профиль пользователя сейчас подключен в RDS сессии пользователя или смонтирован вручную, вы не сможете открыть его с ошибкой: The file couldn’t be mounted because it’s in use.
На сервере RD Session Host профиль пользователя в файле VHDX монтируется в каталог C:users<username> и выглядит таким образом:
Обратите внимание, что UPD диск привязан к версии Windows Server на RDS хосте. Вы не сможете перенести UPD профиль пользователя с RDS сервера с одной версии Windows Server на другую.
Запись данных в файл vhdx ведется в реальном времени. Т.е. при копировании данных в профиль пользователя на сервере RDS, размер vhdx файла на общем хранилище увеличивается сразу.
Если в Windows уже есть каталог с профилем пользователя, каталог со старым профилем переименовывается в формат <username>-BACKUP-<number>.
VHDX диск монтируется при старте сессии пользователя на VDI или RDS сервере. Каждый UPD профиль монтируется в каталог C:Users. Список смонтированных VHDX дисков с профилями отображается в консоли Disk Management.
Как расширить/сжать диск User Profile Disk с помощью PowerShell?
Вы можете расширить виртуальный vhdx диск с UPD профилем конкретного пользователя с помощью PowerShell командлета Resize-VirtualDisk из модуля Hyper-V (на компьютере должны быть установлены компоненты управления Hyper-V: Enable-WindowsOptionalFeature -Online –FeatureName Microsoft-Hyper-V-Management-Clients )
Net use U: \srv01RDSProfiles
Resize-VHD -Path u:UVHD-<SID>.vhdx -SizeBytes 30GB
Net use U: /delete
Теперь нужно расширить раздел из графического интерфейса консоли Управления дисками (Disk Manager). Действие –> Подключить виртуальный жесткий диск -> Расширить том.
Либо воспользуйтесь таким PowesShell скриптом:
<#
.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 \srv01RDSProfilesUVHD-<SID>.vhdx –ToMinimumSize
А затем:
Optimize-vhd -path \srv01RDSProfilesUVHD-<SID>.vhdx -mode full
Временный профиль при использовании User Profile Disk в RDS
Одной из частых проблем, с которых вы можете столкнуться при использовании RDS – периодическое появление временных профилей пользователей.
We can’t sign in to your account. You’ve have been signed in with a temporary profile. You can’t access your files, and files created in this profile will be deleted when you sign out. To fix this, sigh out and try signing later.
При этом для пользователя создается временный профиль:
Event ID 1511 Source: User Profile Service Windows cannot find the local profile and is logging you on with a temporary profile. Changes you make to this profile will be lost when you log off.
Чаще всего это связано с тем, что в предыдущей сессии VHDX файл пользователя не был освобожден. Вы можете найти RDSH хост, на котором сейчас подключен VHDX диск пользователя. Вы можете использовать такой PowerShell скрипт (запускается на сервере с ролью RD Connection Broker)
$UserToFind = "a.novak"
$User = $env:USERDOMAIN + '' + $UserToFind
$RDCollection = Get-RDSessionCollection | where {$_.ResourceType -eq 'Remote Desktop'}
$RDHosts = Get-RDSessionHost -CollectionName $RDCollection.CollectionName | select SessionHost
$Array = Invoke-Command -ComputerName $RDHosts.SessionHost -ScriptBlock { Get-Disk | select Location,DiskNumber | where {$_.Location -notmatch "Integrated"} }
foreach ($VHD in $Array){
$DiskID = (Get-Item $VHD.Location).Name.Substring(5).Split(".")[0]
$objSID = New-Object System.Security.Principal.SecurityIdentifier ($DiskID)
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
if ($objUser.Value -eq $User){
$result = "$($objUser.Value) disk number $($VHD.DiskNumber) on $($VHD.PSComputername)"
}else{
$result = "$($User) - no active RSH sessions were found."
}
}
$result
Можно удаленно отмонтировать UPD диск командой:
Invoke-Command -ComputerName $VHD.PSComputername -ScriptBlock { Dismount-VHD -DiskNumber $VHD.DiskNumber }
Чтобы уменьшить количество проблем с временными профилями на RDS, рекомендуем настроить таймауты для RDS сессий пользователей (установите отключение через 2-4 часа для неактивных сессий). Также вы можете включить параметр GPO, который запрещает создание временных профилей: Computer Configuration -> Administrative Templates -> System -> User profiles, включите параметр Do not log users on with temporary profiles.
После освобождении VHDX диска администратору нужно вручную удалить временный профиль пользователя:
- Удалите ветки с SID пользователя в разделе реестра
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList
. В этом примере есть две ветки, одна из которых с суффиксом .bak); - Удалите TEMP папку пользователя из каталога
C:Users
.Подробнее об удалении профилей пользователей в Windows в статье по ссылке.
В этой статье мы рассмотрели, как настроить профили User Profile Disks в RDS на Windows Server. Настройка UPD намного проще чем процесс настройки перемещаемых профилей и перенаправляемых папок. Диски привязаны к коллекции RDS и не могут повредиться при попытке совместного использования профиля несколькими терминальными серверами (в отличии от обычных профилей). Диски профилей пользователей могут храниться на SMB шарах, CSV, SOFS, в SAN или на локальных дисках.
Задача: Перенести профили и папки сотрудников с одного сервера на другой
У меня на работе что-то стал тупить сервер (физический S5000VSA, 2 sockets Intel Xeon CPU E6405 2.00Ghz, 4Gb RAM
) на котором располагаются профили и перемещаемые папки пользователей. Вот просто так система подвисала и ничего с ней делать нельзя было, но проходило какое-то время и как ни в чем не бывало. Но вот у пользователей в связи с использованием перемещаемых профилей и папок "Мои документы", "Рабочий стол", "Application Data"
происходило повисание программ, с которыми они работают, отваливается рабочий стол и ничего сделать нельзя, проходит какое-то время и все возвращается к работе как ни в чем не бывало. Перво-наперво был проверено состояние RAID
контроллера через утилиту MegaRAID Storage Manager
. RAID
массив в оптимальном состоянии, ошибок нет. Удалены оставшиеся от предыдущего системного администратора зачем-то развернутые роли, не относящиеся к работе. Такое ощущение, что он учился на боевом окружении. Нагрузки по памяти, по сети нет. Предварительно с него были вынесены LUN
где располагались "Почтовые архивы пользователей"
, LUN
с дистрибутивами, LUN
где располагался "Консультант+"
. Но все это ни к чему не привело, по данным анализа за сетевыми интерфейсами через Zabbix
, мы сетевую пропускную способность линка 1Gbps
даже и близко не использовали.
Поэтому я принял решение, что нужно на новом сервере развернуть VM
и перенести на него: Профили
Шаг №1:
Разворачиваю виртуальную машину на ESXi 6.7.0
и именую ее как srv-shares02
(текущий srv-shares01
), ось использую Windows Server 2012 R2 Std.
Шаг №2:
Создаю каталог на srv-shares02
где будут размещаться профили с соответствующими правами доступа:
Ниже какие права делаю я:
C:Windowssystem32>net share Profiles=D:Profiles /GRANT:«Authenticated Users»,FULL C:Windowssystem32>icacls D:Profiles /inheritance:d C:Windowssystem32>icacls D:Profiles /remove «Users» /T C:Windowssystem32>icacls D:Profiles /grant «CREATOR OWNER»:(OI)(CI)(IO)(F) C:Windowssystem32>icacls D:Profiles /grant «NT AUTHORITYAuthenticated Users»:(OI)(CI)(RX) C:Windowssystem32>icacls D:Profiles /grant «NT AUTHORITYSYSTEM»:(OI)(CI)(F) C:Windowssystem32>icacls D:Profiles /grant «POLYGONekzorchik»:(OI)(CI)(F) C:Windowssystem32>icacls D:Profiles /grant «BUILTINAdministrators»:(OI)(CI)(F) |
Шаг №3:
Я использую DFS
как доступ к сетевым ресурсам, у меня есть дефолтные пути, в которые я добавляю:
\polygon.localUsers
Archives – почтовые архивы, где путь до сервера \srv-cons.polygon.localArchives
Documents – общий диск, \srv-shares01.polygon.localDocuments
Forwarded folders – перемещаемые папки, \srv-shares01.polygon.localForwarded folders
Profiles – профили, \srv-shares01.polygon.localProfiles
Создаю каталог
Profiles2 - \srv-shares02.polygon.localProfiles
Шаг №4:
У каждой доменной учетной записи (к примеру, alektest4
) в свойствах прописан на вкладке Profile
(User profile)
Profile path: \polygon.localUsersProfilesalektest4
Шаг №5:
Перехожу к процедуре переноса профилей в домене для пользователей, которые отделены у меня контейнером Office Users
. Действия ниже проделываем вручную с srv-shares01
На компьютере пользователя выполняем Logoff
или лучше выключаем компьютер
В свойствах учетной записи в домене во вкладке Profile
меняем путь:
Profile path: на \polygon.localusersProfiles2alektest4
Затем на srv-shares01
запускаю консоль командной строки с правами администратора и переношу профиль пользователя с srv-shares01
C:Windowssystem32>robocopy D:SharesUsersProfilesalektest4.V6 «\polygon.localusersProfiles2alektest4.V6» /J /E /COPYALL /Z /R:3 |
На заметку: имя alektest4.V6
– это профиль на Windows 10 Pro
, если имя alektest4.V2
– это профиль Windows 8.
После завершения копирования, включаем компьютер пользователя и авторизуемся под пользователем (он может сделать это сам) и его профиль теперь на другом сервере и считается успешно перенесенным.
Шаг №6:
Теперь проработаю шаги по перемещению папок пользователя (все пользователя в OU=Office Users
), это:
AppData(Roaming): \polygon.localusersForwarded folders%USERNAME%Application Data
Desktop: \polygon.localusersForwarded folders%USERNAME%Desktop
Documents: \polygon.localusersForwarded folders%USERNAME%My Documents
У меня есть GPO
которая была: GPO_Office_Users_Policy
User Configuration – Policies – Windows Settings – Folder Redirection
– и через правый клик на AppData (Roaming)
открываю свойства
Setting: Basic – Redirect everyone’s folder to the same location
Target folder location: Redirect to the following location
Root Path: \polygon.localusersForwarded folders%USERNAME%Application Data
И для других папок по аналогии.
Также в этой политике предопределены доверенные сайты
User Configuration – Policies – Administrative Templates – Windows Components – Internet Explorer – Internet Control Panel – Security Page –
Site to Zone Assignment List: Enabled
Value name: *.gs.service.nalog.ru
Value: 2
И многие сайты *.sberbank.ru,*.service.nalog.ru
-
Value name: \polygon.local
Value: 1
В этой политики ограничение распространения стоит: OU=Office Users
, а Scope: Authenticated Users
Через вкладку Delegation – Advanced
добавляю созданную под это дело (перемещение) группу: GRP_GPO_Office_Users_Policy_Deny
где права выставляю, как Deny (Apply group policy)
Шаг №7:
Создаю дубль такой политики выше, именую ее как: GPO_Office_Users_Forward
В этой политики ограничение распространения стоит: OU=Office Users
, а Scope:
указываю группу GRP_GPO_Office_Users_Forward
Шаг №8:
Создаю каталог на srv-shares02
где будут располагаться перемещаемые папки пользователя:
C:Windowssystem32>net share users=«D:Forwarded folders» /GRANT:«Authenticated Users»,FULL C:Windowssystem32>icacls «D:Forwarded folders» /inheritance:d C:Windowssystem32>icacls «D:Forwarded folders» /remove «Users» /T C:Windowssystem32>icacls «D:Forwarded folders» /grant «CREATOR OWNER»:(OI)(CI)(IO)(F) C:Windowssystem32>icacls «D:Forwarded folders» /grant «NT AUTHORITYAuthenticated Users»:(OI)(CI)(RX) C:Windowssystem32>icacls «D:Forwarded folders» /grant «NT AUTHORITYSYSTEM»:(OI)(CI)(F) C:Windowssystem32>icacls «D:Forwarded folders» /grant «POLYGONekzorchik»:(OI)(CI)(F) C:Windowssystem32>icacls «D:Forwarded folders» /grant «BUILTINAdministrators»:(OI)(CI)(F) |
Шаг №9:
Создаю новый путь в DFS:
\polygon.localUsersForwarded folder 2 - \srv-shares02users
Шаг №10:
Итого текущая последовательность действия по перемещению папок пользователя:
1) Выходим на компьютере где пользователь или выключаем его компьютер
2) Учетную запись пользователя папки которого перемещаем включаем в группы:
GRP_GPO_Office_Users_Forward
GRP_GPO_Office_Users_Policy_Deny
3) на srv-shares01
запускаем консоль командной строки
robocopy «\srv-shares01Forwarded foldersalektest4» «\srv-shares02usersalektest4» /J /E /COPYALL /Z /R:3 |
4) Авторизуемся на компьютере
Проверяем работу всех программ или ждем покуда пользователь начнет жаловаться, обычно это в какие-либо программах нужно поменять путь.
На заметку: Важно не переносите перемещаемые папки пользователей в рабочее время, т.к. просадите скорость доступа к основному серверу, у меня было так.
Итого я практически разобрал, как успешно мигрировать профили пользователей и перемещаемые папки на другой сервер. Теперь после рабочего дня или в выходные данная миграция будет выполнена, а мне как бонус более стабильная работа и оплата переработок.
На этом у меня все, с уважением автор блога Олло Александр
Email: support@ekzorchik.ru
Telegram: @aka_ekzorchik