ครั้งหนึ่งผมเห็นว่า virtual machine ทดสอบหนึ่งกำลังหมดพื้นที่ว่างบน system drive C: ผมเพิ่มขนาดดิสก์ในการตั้งค่า virtual machine และสลับไปที่ guest OS (Windows 10) เพื่อขยายขนาด system partition โดยใช้ unallocated space เมื่อผมเปิด Disk Management console (diskmgmt.msc) ผมสังเกตว่ามี recovery partitions สองตัวบนไดรฟ์ และ unallocated space ปรากฏ หลัง recovery partition ที่สอง (มีป้าย Windows RE) ด้วยเหตุผลบางอย่าง recovery partition ตั้งอยู่หลัง partition หลัก (C:) และไม่ให้ขยาย primary volume โดยใช้ unallocated space
ในบทความนี้ เราจะพิจารณาสองวิธีที่แตกต่างกันในการลบและสร้าง recovery partition ใหม่สำหรับคอมพิวเตอร์ EFI และ BIOS ดังนั้น ก่อนดำเนินการตามขั้นตอนที่อธิบายด้านล่าง ให้ค้นหาว่าสถาปัตยกรรมใดถูกใช้บนคอมพิวเตอร์ของคุณ ยังขอแนะนำอย่างยิ่งให้ backup (หรือทำ snapshot) ข้อมูลสำคัญของคุณก่อนลองเปลี่ยนแปลง partition table
วิธีย้าย Recovery และขยาย System Partition บนคอมพิวเตอร์ UEFI-based
บน virtual machine ของผม Windows 10 ติดตั้งในโหมด UEFI (Partition style: GPT)

如你所見 ในภาพหน้าจอด้านล่าง ปุ่ม "Extend Volume" ไม่ทำงาน (gray) คุณสามารถขยาย partition โดยใช้ built-in tools ของ Windows ได้หากมี unallocated space อยู่ทาง ขวา ของมัน (Windows 10 ไม่สามารถขยาย primary partition ไปทางขวาเข้า unallocated space ได้) ในกรณีของผม ผมไม่สามารถขยาย C: drive ได้เพราะถูกบล็อกโดย recovery partition (Windows RE) ดังนั้น ก่อนขยายขนาด system partition ผมจะต้องลบ recovery partition
ในภาพหน้าจอ คุณเห็นว่ามี recovery partitions สองตัว (Recovery และ Windows RE) เพื่อเข้าใจว่าตัวไหนถูกใช้โดย Windows เป็น active recovery partition คุณต้องกำหนด drive letters ให้ partitions ของคุณ ตัวอย่างเช่น คุณสามารถกำหนด drive letters E: และ R: โดยใช้ Disk Management หรือ Diskpart.exe: select disk 0 -> select part 1 -> assign letter r: เพื่อตรวจสอบ active recovery partition ให้รันคำสั่ง:
bcdedit /enum all
โปรดสังเกตส่วนต่อไปนี้:
- Windows Boot Manager (ระบุ partition ที่มี BCD bootloader) ในกรณีของผม bootloader อยู่บน EFI partition:
Windows Boot Manager -------------------- identifier {bootmgr} device partition=\Device\HarddiskVolume2 path \EFI\Microsoft\Boot\bootmgfw.efi description Windows Boot Manager locale en-US inherit {globalsettings} default {current} resumeobject {dbaf5561-4424-11e9-b766-b7001b047795} displayorder {current} toolsdisplayorder {memdiag} timeout 30
- ตอนนี้ดูค่าในส่วน Windows Boot Loader ไฟล์ Winre.wim (recovery environment) อยู่บน partition ที่สองที่มีป้าย Windows RE volume label
Windows Boot Loader ------------------- identifier {dbaf5563-4424-11e9-b766-b7001b047795} device ramdisk=[E:]\Recovery\WindowsRE\Winre.wim,{dbaf5564-4424-11e9-b766-b7001b047795} path \windows\system32\winload.efi description Windows RE locale en-us inherit {bootloadersettings} displaymessage Windows RE osdevice ramdisk=[E:]\Recovery\WindowsRE\Winre.wim,{dbaf5564-4424-11e9-b766-b7001b047795} systemroot \windows nx OptIn bootmenupolicy Standard winpe Yes
เพื่อขยายขนาด Windows volume หลัก เราจะต้องลบ recovery partition ทางขวาของมัน ขยาย volume และสร้าง recovery partition ใหม่
แทนที่จะสร้าง recovery partition ใหม่ ในกรณีส่วนใหญ่ จะเพียงพอที่จะย้าย recovery environment files ไปยัง drive C: จากนั้นคุณจะสามารถปฏิเสธการใช้แยก WinRE partition 500MB ได้ ไฟล์ recovery environment จะถูกเก็บไว้บน partition ที่ Windows ติดตั้งอยู่
เพื่อคัดลอกไฟล์ Winre.wim ไปยัง system volume และตั้งค่าตำแหน่ง WinRE.wim ใหม่ ให้รันคำสั่งเหล่านี้:
reagentc /disable
md c:\Recovery\WinRE
xcopy e:\Recovery\WindowsRE\Winre.wim c:\Recovery\WinRE /h
reagentc /setreimage /path c:\Recovery\WinRE /target C:\Windows
reagentc /enable
หากคุณพยายามลบ recovery partition จาก Disk Management GUI โดยคลิก Delete Volume (บางครั้ง disk properties ไม่พร้อมใช้งานเลย) ข้อผิดพลาดต่อไปนี้จะปรากฏ:

Virtual Disk Manager Cannot delete a protected partition without the force protected parameter set.

คุณสามารถลบ protected partition ได้เฉพาะโดยใช้เครื่องมือ diskpart เปิด command prompt ด้วยสิทธิ์ elevated และรันคำสั่ง diskpart เลือก partition ที่คุณต้องการลบ (สังเกตผลลัพธ์คำสั่งของคุณ เนื่องจากหมายเลขดิสก์และ partitions อาจแตกต่างกัน)
DISKPART> rescan
DISKPART> list disk
DISKPART> select disk 0
DISKPART> list part
DISKPART> select part 5
DISKPART> delete partition override
DiskPart successfully deleted the selected partition.
DISKPART> Rescan
พารามิเตอร์ override ช่วยให้ diskpart ลบ partition ใดๆ ได้ไม่ว่าจะเป็นประเภทใด (ไม่ว่าจะเป็น active, system, หรือ boot partition)
ตอนนี้คุณสามารถเปิด Disk Management และขยาย system partition (ตัวเลือก Extend Volume พร้อมใช้งานแล้ว) หากคุณต้องการสร้าง recovery partition ใหม่ (แนะนำให้เก็บไว้หรือย้ายไปที่ system partition ตามที่อธิบายข้างต้น) ให้ทิ้งพื้นที่ unallocated 500MB ไว้บนไดรฟ์ของคุณ ในภาพหน้าจอด้านล่าง ผมขยาย Windows partition ของผม 1.5GB และทิ้ง 500MB ไว้ท้ายไดรฟ์
หากมี vendor recovery partitions อื่นๆ บนดิสก์ที่ป้องกันไม่ให้คุณขยาย main volume ให้ตรวจสอบบทความ "How to Delete an OEM Partition?"

หลังจากขยาย main partition แล้ว ผมเหลือพื้นที่ว่าง 500MB สำหรับ WinRE recovery partition

Windows ตรวจจับ recovery partition โดยป้ายเฉพาะ: GUID — de94bba4-06d1-4d40-a16a-bfd50179d6ac และ GPT attribute 0x8000000000000001
มาสร้าง partition ใหม่และกำหนดแอตทริบิวต์เหล่านี้ให้:
DISKPART> create part primary
DISKPART> format quick fs=ntfs label="WinRE"
DISKPART> assign letter="R"
DISKPART> set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
DiskPart successfully set the partition ID
DISKPART> gpt attributes=0x8000000000000001
DiskPart successfully assigned the attributes to the selected GPT partition.
Exit

จากนั้นคัดลอก WinRE files จาก Windows 10 installation disk (image) ไปยัง recovery partition ใหม่ของคุณ
Mount install.wim file จาก Windows 10 install ISO image ของคุณและแยกไฟล์ WinRE (Winre.wim) จากมัน:
md C:\WinISO
md C:\WinISO\mount
dism /mount-wim /wimfile:F:\sources\install.wim /index:1 /mountdir:C:\WinISO\mount /readonly
md R:\Recovery\WinRE
copy C:\WinISO\mount\Windows\System32\Recovery\Winre.wim R:\Recovery\WinRE\
dism /unmount-wim /mountdir:C:\WinISO\mount /discard
จากนั้นเพียงย้ายไฟล์ WinRE ไปยัง recovery partition และอัปเดต bootloader configuration:
reagentc /disable
reagentc /setreimage /path R:\Recovery\WinRE /target C:\Windows
reagentc /enable
ที่นี่คุณสามารถหาบทความเต็มเกี่ยวกับ WinRE environment ใน Windows

ดังนั้น เราได้สร้าง recovery partition ใหม่และลงทะเบียน path ใหม่ไปยัง WinRE image หากคุณมีปัญหาการบูท Windows recovery environment ของคุณจะบูทอัตโนมัติ
หากคุณมีปัญหากับ EFI bootloader หรือ EFI partition ให้ติดตามลิงก์เพื่ออ่านบทความที่เกี่ยวข้อง
วิธีลบ Recovery Partition และย้าย BCD บน PC แบบ BIOS-based
หากคอมพิวเตอร์ของคุณใช้ BIOS (ไม่ใช่ UEFI) คุณสามารถย้าย Windows boot manager (BCD) และ recovery environment files ไปยัง volume C: ก่อนลบ recovery partition ได้ดังนี้
ขั้นแรก คุณต้องย้าย BCD files จาก drive E: ไปยัง drive C: (ผมกำหนด drive letter นี้ให้ recovery partition ของผม):
Reg unload HKLM\BCD00000000
robocopy e:\ c:\ bootmgr
robocopy e:\boot c:\boot /s
bcdedit /store c:\boot\bcd /set {bootmgr} device partition=C:
bcdedit /store c:\boot\bcd /set {memdiag} device partition=C:
ในกรณีที่มีปัญหา BCD ใดๆ คุณสามารถสร้าง BCD file และ Master Boot Record (MBR) ใหม่ได้ตามคำแนะนำนี้
จากนั้นย้าย recovery wim image:
reagentc /disable
md c:\Recovery\WinRE
xcopy e:\Recovery\WindowsRE\Winre.wim c:\Recovery\WinRE /h
reagentc /setreimage /path c:\Recovery\WinRE /target C:\Windows
reagentc /enable
ตอนนี้คุณสามารถลบ recovery partition โดยใช้ diskpart (ตามที่แสดงด้านบน) และขยาย system partition ของคุณได้สำเร็จ