ค้นหาเว็บไซต์

การกำหนดค่า User Profile Disks (UPD) บน Windows Server RDS


User Profile Disk (UPD) ช่วยให้คุณสามารถจัดเก็บโปรไฟล์ของผู้ใช้ Remote Desktop Services แต่ละคน (

%USERPROFILE%

) ในไฟล์ VHDX (ดิสก์เสมือน) แยกต่างหาก ดิสก์โปรไฟล์ดังกล่าวเชื่อมต่อเมื่อผู้ใช้เข้าสู่ระบบ Windows และจะถูกตัดการเชื่อมต่อเมื่อผู้ใช้ออกจากระบบ (โดยบันทึกการเปลี่ยนแปลงโปรไฟล์) คุณสามารถจัดเก็บดิสก์โปรไฟล์ผู้ใช้บนไฟล์ที่ใช้ร่วมกันภายนอก เพื่อให้ผู้ใช้สามารถเข้าถึงสภาพแวดล้อมส่วนบุคคล (โปรไฟล์) เมื่อพวกเขาเข้าสู่ระบบเซิร์ฟเวอร์ใดๆ ในฟาร์ม RDS UPD เป็นทางเลือกแทนเทคโนโลยีการเปลี่ยนเส้นทางโปรไฟล์ข้ามเขตหรือโฟลเดอร์ในโซลูชันเทอร์มินัล RDS

ในบทความนี้ เราจะอธิบายวิธีกำหนดค่าและจัดการดิสก์โปรไฟล์ผู้ใช้บนโฮสต์ที่มีบทบาทบริการเดสก์ท็อประยะไกลที่ทำงานบน Windows Server 2022, 2019, 2016 หรือ 2012R2

เปิดใช้งานดิสก์โปรไฟล์ผู้ใช้บน Windows Server RDS

สร้างโฟลเดอร์เครือข่ายที่ใช้ร่วมกันเพื่อจัดเก็บไฟล์โปรไฟล์ UPD โฟลเดอร์นี้ต้องอยู่บนเซิร์ฟเวอร์ไฟล์นอกฟาร์ม RDS เพื่อให้แน่ใจว่าโปรไฟล์ UPD มีความพร้อมใช้งานสูง เราขอแนะนำให้คุณวางโฟลเดอร์เครือข่ายในคลัสเตอร์ เส้นทางไปยังไดเร็กทอรีดังกล่าวมีลักษณะดังนี้ในตัวอย่างของเรา:

\\fs01\RDSProfiles

สร้างกลุ่มความปลอดภัยใน AD และเพิ่มโฮสต์ทั้งหมดในคอลเลกชัน RDS ของคุณ คุณสามารถสร้างกลุ่มโดยใช้คอนโซลกราฟิก ADUC หรือใช้ cmdlets จากโมดูล Active Directory สำหรับ Windows PowerShell:

New-ADGroup munRDSHCollection1 -path "OU=Groups,OU=MUN,DC=a-d,DC=loc" -GroupScope Domain -PassThru -Verbose
Add-AdGroupMember -Identity munRDSHCollection1 -Members munrds1$, munrds2$, munrds3$

หากต้องการเพิ่มคอมพิวเตอร์ลงในกลุ่ม AD คุณต้องเพิ่ม $ ต่อท้ายชื่อคอมพิวเตอร์ (ซึ่งเป็นส่วนหนึ่งของแอตทริบิวต์ SAMAccountName)

ตอนนี้ให้สิทธิ์ การควบคุมทั้งหมด ในโฟลเดอร์ \fs01\RDSProfiles สำหรับกลุ่ม munRDSHCollection1

คุณสามารถเปิดใช้งาน User Profile Disks ในการตั้งค่า Remote Desktop Collection เมื่อคุณสร้าง หากมีคอลเล็กชันอยู่แล้ว ให้ค้นหาในคอนโซลตัวจัดการเซิร์ฟเวอร์และเลือก งาน-> แก้ไขคุณสมบัติ ที่มุมขวาบน

โหมด User Profile Disks สามารถเปิดใช้งานและกำหนดค่าได้ในการตั้งค่าคอลเลกชันของบริการเดสก์ท็อประยะไกล โหมดนี้สามารถเปิดใช้งานได้เมื่อสร้างคอลเล็กชันใหม่ หรือคุณสามารถกลับมาที่คอลเล็กชันใหม่ได้ในภายหลัง

จากนั้นไปที่แท็บ User Profile Disks เลือกตัวเลือก เปิดใช้งานดิสก์โปรไฟล์ผู้ใช้ ระบุเส้นทางไปยังโฟลเดอร์ที่ใช้ร่วมกันที่สร้างไว้ก่อนหน้านี้ (\fs01\RDSProfiles) และกำหนดขนาดดิสก์โปรไฟล์สูงสุด (ให้เป็น 7 GB) บันทึกการเปลี่ยนแปลง

คุณสามารถใช้เนมสเปซ 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 "\\a-d.site\namespace\UserProfileDisk" is not available.

คุณสามารถตรวจสอบว่าเปิดใช้งาน UPD สำหรับคอลเลกชัน RDS หรือไม่ และรับเส้นทางไปยังไดเร็กทอรีที่เก็บโปรไฟล์ด้วยคำสั่ง PowerShell:

Get-RDSessionCollectionConfiguration -CollectionName munCorpApp1 -UserProfileDisk

เคล็ดลับ ในคอลเลกชัน RDS เดียว สามารถมีไฟล์โปรไฟล์ VHDX ได้เพียงหนึ่งไฟล์สำหรับผู้ใช้หนึ่งคน หากผู้ใช้เชื่อมต่อกับทรัพยากรจากสองคอลเล็กชันที่แตกต่างกัน ระบบจะสร้างดิสก์โปรไฟล์แยกต่างหากสำหรับแต่ละคอลเล็กชัน

ตามค่าเริ่มต้น ดิสก์โปรไฟล์ผู้ใช้จะมีเนื้อหาโปรไฟล์ผู้ใช้ทั้งหมด คุณสามารถยกเว้นบางโฟลเดอร์จากรายการไดเร็กทอรีที่ซิงโครไนซ์หรือระบุว่าควรบันทึกเฉพาะบางโฟลเดอร์เท่านั้น ดังนั้น การเปลี่ยนแปลงใดๆ ที่ทำกับโฟลเดอร์ในรายการไดเร็กทอรีที่แยกออกในระหว่างเซสชันเทอร์มินัลของผู้ใช้จะไม่ถูกบันทึกลงในดิสก์ VHDX ในโฟลเดอร์ที่ใช้ร่วมกัน มีสองตัวเลือก:

  • เก็บการตั้งค่าและข้อมูลผู้ใช้ทั้งหมดไว้ในดิสก์โปรไฟล์ผู้ใช้

  • เก็บเฉพาะโฟลเดอร์ต่อไปนี้ในดิสก์โปรไฟล์ผู้ใช้

หากคุณใช้ RDS กับ UPD บน Windows Server 2019/2016 เมื่อเวลาผ่านไป คุณอาจพบว่าประสิทธิภาพโฮสต์ RDS ลดลงและหน้าจอดำเมื่อเข้าสู่ระบบผ่าน RDP เราขอแนะนำให้คุณเปิดใช้งานตัวเลือกรีจิสทรี DeleteUserAppContainersOnLogoff ทันทีบนโฮสต์ RDS ทั้งหมด

New-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy” -Type DWord -Path -Name DeleteUserAppContainersOnLogoff -Value 1

ดิสก์โปรไฟล์ผู้ใช้ในไฟล์ VHDX บน RDS

หลังจากที่คุณเปลี่ยนการตั้งค่าคอลเลกชันและเปิดใช้งาน UPD แล้ว ไฟล์ชื่อ UVHD-template.vhdx จะถูกสร้างขึ้นในโฟลเดอร์ UPD เป้าหมาย

ไฟล์นี้เป็นเทมเพลตสำหรับดิสก์โปรไฟล์ของผู้ใช้ เมื่อผู้ใช้เข้าสู่ระบบเซิร์ฟเวอร์ RDS เป็นครั้งแรก เทมเพลตนี้จะถูกคัดลอกและเปลี่ยนชื่อเป็นไฟล์ VHDX โดยมี SID ของผู้ใช้อยู่ในชื่อ สำหรับผู้ใช้แต่ละคน ไฟล์ VHDX แยกต่างหากจะถูกสร้างขึ้น

คำใบ้ สำหรับบันทึกโดยละเอียดเกี่ยวกับการใช้ UPD เพื่อเข้าสู่ระบบเซิร์ฟเวอร์ โปรดดูที่ Event Viewer -> Application (พร้อมแหล่งที่มาของ User Profile Service) และ Applications and Services Logs -> -Microsoft -> Windows -> User Profile บริการ -> การดำเนินงาน

คุณสามารถจับคู่ชื่อไฟล์ UPD กับผู้ใช้ที่เป็นเจ้าของได้ ตัวอย่างเช่น คุณสามารถแปลง SID เป็นชื่อบัญชีผู้ใช้ได้ด้วยตนเองโดยใช้ Get-ADUser cmdlet:

Get-ADUser -Identity S-1-5-21-32549751-3956249758-2943215497-23733695

หรือใช้สคริปต์ ShowUPDFolderDetails.ps1 ซึ่งแสดงชื่อไฟล์ UPD ในโฟลเดอร์ที่ระบุและเจ้าของ:

$UPDShare = "\\fs01\RDSProfiles"
$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 คุณจึงเมานต์และดูเนื้อหาได้จากโฮสต์ Windows ใดก็ได้ คลิกขวาที่ไฟล์แล้วเลือก เมานต์

อย่างที่คุณเห็น ดิสก์ VHDX มีชุดของโฟลเดอร์และไฟล์ของโปรไฟล์ผู้ใช้มาตรฐาน

ในโฮสต์เซสชัน RD โปรไฟล์ผู้ใช้ในไฟล์ VHDX จะถูกต่อเชื่อมกับ C:\users\ และมีลักษณะดังนี้:

โปรไฟล์ UPD ติดตั้งในโหมดเอกสิทธิ์เฉพาะบุคคล ซึ่งหมายความว่าหากโปรไฟล์ผู้ใช้เชื่อมต่อกับเซสชัน RDS ของผู้ใช้หรือติดตั้งด้วยตนเอง คุณจะไม่สามารถเปิดได้โดยมีข้อผิดพลาด: ไม่สามารถเมานต์ไฟล์ได้เนื่องจากมีการใช้งานอยู่

ดิสก์โปรไฟล์ผู้ใช้จากเซิร์ฟเวอร์ RDS ไม่สามารถโยกย้ายระหว่างเวอร์ชันของ Windows Server

ข้อมูลถูกเขียนไปยังไฟล์ VHDX ตามเวลาจริง ซึ่งหมายความว่าเมื่อข้อมูลถูกคัดลอกไปยังโปรไฟล์ผู้ใช้บนเซิร์ฟเวอร์ RDS ขนาดของไฟล์ vhdx บนที่เก็บข้อมูลที่ใช้ร่วมกันจะเพิ่มขึ้นทันที

หากมีโฟลเดอร์โปรไฟล์ผู้ใช้อยู่แล้วใน Windows โฟลเดอร์ที่มีโปรไฟล์เก่าจะถูกเปลี่ยนชื่อเป็น -BACKUP-

ดิสก์ VHDX จะถูกเมาต์เมื่อผู้ใช้เข้าสู่ระบบโฮสต์ VDI หรือ RDS โปรไฟล์ UPD แต่ละโปรไฟล์ถูกเมาต์เข้ากับไดเร็กทอรี C:\Users รายการดิสก์ VHDX ที่เมาท์และจุดเชื่อมต่อของโปรไฟล์ผู้ใช้จะปรากฏในการจัดการดิสก์

จะขยาย/ลดดิสก์โปรไฟล์ผู้ใช้ด้วย PowerShell ได้อย่างไร

คุณสามารถขยายหรือย่อภาพดิสก์ VHDX เสมือนด้วยโปรไฟล์ UPD ของผู้ใช้เฉพาะโดยใช้ cmdlet PowerShell Resize-VirtualDisk จากโมดูล Hyper-V (ต้องติดตั้งเครื่องมือการจัดการ Hyper-V บนคอมพิวเตอร์:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-Clients

):

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

ตอนนี้คุณต้องเพิ่มขนาดโวลุ่มจากคอนโซลการจัดการดิสก์ GUI (การกระทำ -> แนบ VHD -> ขยายโวลุ่ม)

หรือใช้สคริปต์ PowerShell ต่อไปนี้เพื่อขยายไฟล์ VHDX เป็นขนาดสูงสุดที่มีให้โดยอัตโนมัติ:

<#
.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 \\fs01\RDSProfiles\UVHD-<SID>.vhdx -ToMinimumSize

จากนั้นปรับการจัดสรรพื้นที่ในไฟล์ให้เหมาะสม:

Optimize-vhd -path \\fs01\RDSProfiles\UVHD-<SID>.vhdx -mode full

ปัญหาโปรไฟล์ชั่วคราวเมื่อใช้ดิสก์โปรไฟล์ผู้ใช้บน 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.

A temporary profile is created for the user in this case:
Event ID 1511
Source: User Profile Service

มีการสร้างโปรไฟล์ชั่วคราวสำหรับผู้ใช้เนื่องจาก Windows ไม่พบโปรไฟล์ในเครื่อง การเปลี่ยนแปลงที่คุณทำกับโปรไฟล์นี้จะสูญหายไปเมื่อคุณออกจากระบบ

ส่วนใหญ่มักเป็นเพราะไฟล์ VHDX ของผู้ใช้ไม่ได้ปิดในเซสชันก่อนหน้า ใช้ PowerShell ต่อไปนี้เพื่อค้นหาโฮสต์ RDSH ซึ่งติดตั้งไดรฟ์ VHDX ของผู้ใช้ (เรียกใช้สคริปต์บนโฮสต์ที่มีบทบาทนายหน้าการเชื่อมต่อ RD):

$UserToFind = "a.smith"
$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 ที่ป้องกันการสร้างโปรไฟล์ชั่วคราว: การกำหนดค่าคอมพิวเตอร์ -> เทมเพลตการดูแลระบบ -> ระบบ -> โปรไฟล์ผู้ใช้ เปิดใช้งานตัวเลือก ห้ามผู้ใช้เข้าสู่ระบบด้วยโปรไฟล์ชั่วคราว

การตั้งค่านโยบายนี้อาจทำให้ “

The User Profile Service failed the sign-in, user profile cannot be loaded

” หากไม่มีโฟลเดอร์โปรไฟล์ผู้ใช้

ผู้ดูแลระบบต้องลบโปรไฟล์ผู้ใช้ชั่วคราวบนโฮสต์ RDS ด้วยตนเองหลังจากปล่อยดิสก์ VHDX:

  • ลบคีย์ย่อยด้วย SID ของผู้ใช้ภายใต้คีย์รีจิสทรีต่อไปนี้

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

    . ในตัวอย่างนี้ มีคีย์ย่อยสองคีย์ โดยคีย์ย่อยหนึ่งคีย์ลงท้ายด้วย .bak (ลบทั้งสองคีย์);

  • ลบโฟลเดอร์โปรไฟล์ TEMP ของผู้ใช้ออกจากไดเร็กทอรี C:\Users

    ดูบทความที่ลิงก์สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการลบโปรไฟล์ผู้ใช้ใน Windows

เทคโนโลยี User Profile Disk ซึ่งเปิดตัวเมื่อเกือบสิบปีที่แล้ว (ใน Windows Server 2012) มีข้อเสียหลายประการ ปัจจุบัน Microsoft แนะนำให้ใช้ คอนเทนเนอร์ FSLogix ที่ใหม่กว่าเพื่อจัดเก็บโปรไฟล์ผู้ใช้ RDS

ดังนั้นเราจึงดูวิธีกำหนดค่า User Profile Disks ในสภาพแวดล้อม RDS/VDI บน Windows Server การกำหนดค่า UPD นั้นง่ายกว่าการกำหนดค่าโปรไฟล์ข้ามเขตหรือโฟลเดอร์ที่เปลี่ยนเส้นทาง ดิสก์โปรไฟล์ผู้ใช้ถูกผูกไว้กับคอลเลกชัน RDS และไม่สามารถเสียหายได้เมื่อโปรไฟล์ผู้ใช้ถูกแชร์ระหว่างเซิร์ฟเวอร์เทอร์มินัลหลายเครื่อง (ไม่เหมือนกับโฟลเดอร์โปรไฟล์ผู้ใช้มาตรฐาน) ดิสก์โปรไฟล์ผู้ใช้สามารถจัดเก็บไว้ใน SMB ที่ใช้ร่วมกัน, CSV, SOFS, SAN หรือดิสก์ในเครื่อง

บทความที่เกี่ยวข้อง