User Profile Disks (UPD) là tính năng mới của Remote Desktop Services trong Windows Server 2012. User Profile Disks là giải pháp thay thế cho roaming profiles và folder redirection trong các kịch bản RDS. Ý tưởng của UPD là dữ liệu người dùng và ứng dụng (tức là hồ sơ người dùng) được lưu trữ dưới dạng một đĩa VHDX riêng biệt trên file chuyên dụng trên thư mục chia sẻ mạng. Đĩa ảo này được mount vào phiên người dùng ngay khi người dùng đăng nhập vào máy chủ RDS, và unmount khi họ đăng xuất (tất cả thay đổi hồ sơ người dùng được lưu vào đĩa vhdx).
Trong bài viết này, chúng tôi sẽ mô tả cách cấu hình và sử dụng User Profile Disks trên máy chủ với vai trò Remote Desktop Services chạy trên Windows Server 2012 / 2012 R2 / 2016.
Cấu hình User Profile Disks trên Windows Server RDS
Trước hết, cần tạo thư mục chia sẻ trên bất kỳ máy chủ file công ty nào để lưu trữ hồ sơ người dùng dưới dạng đĩa VHDX (nếu bạn muốn tính sẵn sàng cao cho đĩa UPD, bạn có thể đặt file UPD trên tài nguyên file cụm). Trong ví dụ của chúng tôi, đường dẫn đến thư mục này trông như sau: \\rdvh1\DemoLabOficeApp. Các máy chủ là một phần của bộ sưu tập RDS phải được cấp quyền truy cập đầy đủ (Full Access) vào thư mục chia sẻ này.
Mẹo. Trong một bộ sưu tập RDS đơn lẻ, chỉ có thể tồn tại một file hồ sơ VHDX cho một người dùng. Nếu người dùng kết nối với tài nguyên từ hai bộ sưu tập khác nhau, một đĩa hồ sơ riêng biệt nên được tạo cho mỗi bộ sưu tập.
Chế độ User Profile Disks có thể được bật và cấu hình trong cài đặt bộ sưu tập Remote Desktop Services. Chế độ này có thể bật khi tạo bộ sưu tập mới, hoặc bạn có thể quay lại nó sau.

Trong ví dụ của chúng tôi, bộ sưu tập đã tồn tại, vì vậy trong console Server Manager, chọn bộ sưu tập này và ở góc trên bên trái nhấp Tasks -> Edit Properties.

Sau đó trong phần User Profile Disks tích Enable user profile disks, chỉ định đường dẫn đến thư mục chia sẻ đã tạo trước đó (\\rdvh1\DemoLabOficeApps) và kích thước tối đa đĩa hồ sơ (hãy để là 20 GB). Lưu thay đổi.

Sau khi lưu thay đổi, hãy đảm bảo quyền NTFS cho thư mục Profile Disks đã được thay đổi. Trong trường hợp của chúng tôi, bộ sưu tập gồm một máy chủ RDSH01, được cấp quyền full control.

Quyền Full Control đã được cấp cho máy chủ RDSH01 ở cấp độ thư mục chia sẻ.

Khi thêm máy chủ RD Session Host mới vào bộ sưu tập RDS, wizard tự động thay đổi quyền thư mục và cấp quyền truy cập cho máy chủ mới. Rất tiện lợi, vì khi mở rộng trang trại terminal, bạn không cần nhớ đặt quyền cho thư mục hồ sơ.
UPD: Hồ sơ người dùng dưới dạng file VHDX
Đi đến thư mục chia sẻ mạng với hồ sơ người dùng. Một file UVHD-template.vhdx hiện đang được lưu ở đây.

File này là template đĩa hồ sơ người dùng. Khi người dùng đăng nhập vào máy chủ RDS lần đầu tiên, template này được sao chép và đổi tên thành file VHDX, chứa SID người dùng trong tên file.

Mẹo. Để khớp tên file UPD với tên người dùng, bạn phải dùng script riêng. Ví dụ, ShowUPDFolderDetails.ps1 hoặc bạn có thể chuyển đổi SID thành tên tài khoản bằng cmdlet Get-ADUser:
Get-ADUser -Identity S-1-5-21-32549751-3956249758-2943215497-23733695

Hãy xem đĩa hồ sơ người dùng chứa gì. Để làm điều đó, chuột phải vào file VHDX và chọn Mount. Đĩa UPD chỉ có thể dùng trong một phiên trên một host RDS (truy cập độc quyền). Bạn không thể mount đĩa VHDX UPD nếu người dùng đang sử dụng nó trên máy chủ RDS.

Như bạn thấy, đĩa VHDX chứa một tập hợp thư mục và file của hồ sơ người dùng tiêu chuẩn. Khi đăng nhập, người dùng có quyền truy cập hoàn toàn trong suốt đến dữ liệu lưu trữ trong hồ sơ.

Phía máy chủ RD Session Host, file .vhdx của người dùng được mount vào C:\users\<username> và trông như sau:

Lưu ý rằng ổ đĩa UPD bị gắn liền với phiên bản Windows OS của máy chủ RDS. Bạn không thể chuyển (sử dụng) hồ sơ người dùng UPD từ máy chủ RDS từ một phiên bản Windows Server sang phiên bản khác.
Dữ liệu được ghi vào file vhdx theo thời gian thực. Điều này có nghĩa là khi sao chép dữ liệu vào hồ sơ người dùng trên máy chủ RDS, kích thước file vhdx trên lưu trữ chia sẻ tăng ngay lập tức.
Nếu thư mục hồ sơ người dùng đã tồn tại trong hệ thống, thư mục với hồ sơ cũ được đổi tên thành <username>-BACKUP-<number>.

Đĩa VHDX được mount khi phiên người dùng bắt đầu trên máy chủ VDI hoặc RDS. Danh sách các đĩa UPD kết nối với hồ sơ có thể liệt kê bằng tiện ích mountvol.
Mặc định, User Profile Disk chứa toàn bộ nội dung hồ sơ người dùng. Tuy nhiên, bạn có thể loại trừ một số thư mục khỏi danh sách thư mục đồng bộ trong cài đặt bộ sưu tập RDS, hoặc chỉ định rằng chỉ một số thư mục nhất định nên được lưu. Do đó, tất cả thay đổi được thực hiện trong phiên terminal của người dùng đối với các thư mục trong danh sách thư mục bị loại trừ không được lưu vào đĩa VHDX trên thư mục chia sẻ.

Tùy chọn thứ hai cho phép bạn cấu hình chỉ lưu các thư mục được chỉ định trong hồ sơ UPD.

Nếu cần, tùy chọn cuối cùng cho phép triển khai các kịch bản lưu cài đặt Start Screen, được lưu trong file appsfolder.itemdata-ms. Trong ví dụ này, chúng tôi chỉ thêm đường dẫn đến \AppData\Local\Microsoft\Windows folder làm đường dẫn bổ sung để lưu trong UPD.

Thay đổi kích thước User Profile Disks bằng PowerShell
Bạn có thể mở rộng ổ đĩa vhdx ảo với hồ sơ UPD của người dùng bằng cmdlet PowerShell Resize-VirtualDisk từ module Hyper-V.
Net use U: \\rdvh1\DemoLabOficeApps
Resize-VHD -Path u:\UVHD-<SID>.vhdx -SizeBytes 40GB
Net use U: /delete
Nếu bạn muốn chạy cmdlet Resize-VHD từ máy tính để bàn Windows 10, bạn phải cài đặt tính năng Hyper-V -> Hyper-V Platform -> Hyper-V Services.

Bây giờ bạn cần mở rộng volume từ GUI của console Disk Management (Action -> Attach VHD -> Extend volume).

Hoặc dùng script PowerShell sau để tự động mở rộng file vhdx lên đến kích thước tối đa có sẵn:
<#
.Synopsis
Script này mở rộng kích thước file VHDX và resize partition disk lên 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
}
Lưu ý rằng bạn không thể mở rộng đĩa UPD của người dùng với phiên RDS đang hoạt động.
Để giảm kích thước file UPD (giả sử bạn đã xóa dữ liệu người dùng bên trong file vhdx và kích thước file trên đĩa nhỏ hơn kích thước được gán cho nó), bạn có thể dùng lệnh:
resize-VHD \\rdvh\DemoLabOficeApps\UVHD-<SID>.vhdx –ToMinimumSize
Và sau đó:
Optimize-vhd -path \\rdvh1\DemoLabOficeApps\UVHD-<SID>.vhdx -mode full
Vậy, chúng ta đã thảo luận các đặc điểm chính của User Profile Disks trong giải pháp RDS/VDI chạy Windows Server 2016 và 2012 R2. Cấu hình UPD dễ dàng hơn nhiều so với cấu hình roaming profiles hoặc redirected folders. Các đĩa được kết nối với bộ sưu tập RDS và không thể bị hỏng khi sử dụng hồ sơ chung bởi nhiều máy chủ (khác với hồ sơ tiêu chuẩn). User Profile Disks có thể lưu trữ trong chia sẻ SMB, CSV, SOFS, SAN hoặc trên đĩa cục bộ. Ngoài ra, Microsoft lưu ý rằng tốc độ tải môi trường desktop của người dùng trong trường hợp sử dụng UPD được giảm thiểu.
Nếu bạn dự định lưu trữ hồ sơ UPD trên máy chủ DFS, hãy lưu ý rằng chúng phải cài đặt Windows Server 2012 R2. Nếu bạn dùng phiên bản Windows Server trước đó, bạn sẽ nhận được lỗi:
Unable to enable user disks on rVHDShare. Could not create template VHD. Error Message: The network location "\\woshub.com\namespace\UserProfileDisk" is not available.
Cũng khuyến khích sử dụng phiên bản SMB 3.02 phía máy chủ file (Windows Server 2012 R2) hoặc cao hơn.
Dù sao, vì User Profile Disks là công nghệ khá mới, trước khi triển khai UPD hàng loạt, khuyến khích kiểm tra hoạt động và các vấn đề có thể xảy ra trong môi trường test.