Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

การนำเข้า ส่งออก และโคลน Virtual Machines ใน Hyper-V

ไม่เหมือน VMWare Hyper-V ไม่มีฟีเจอร์สำเร็จรูปสำหรับการโคลน Virtual Machines (การโคลนพร้อมใช้งานเฉพาะใน Virtual Machine Manager) เพื่อสร้างสำเนาเต็มรูปแบบของ VM ที่มีอยู่ คุณจะต้องใช้ฟีเจอร์ Import และ Export ของ Hyper-V ในบทความนี้ เราจะแสดงวิธีโคลน Virtual Machine ใน Hyper-V โดยใช้ Import และ Export ด้วย Hyper-V Manager GUI, PowerShell และ Windows Admin Center (WAC)

⚠ สำคัญ: เมื่อโคลน Virtual Machine ที่รัน Windows ให้จำว่า VM Copy จะมี SID เหมือนกับ Source คุณต้องใช้เครื่องมือ Sysprep เพื่อรีเซ็ต Windows Guest SID หากคุณสร้าง Reference Windows Image ให้รันคำสั่งด้านล่างในมันก่อนโคลน: %WINDIR%\system32\sysprep\sysprep.exe /generalize /shutdown /oobe VM จะปิดเครื่องและ SID ใหม่จะถูกสร้างขึ้นที่การเริ่มต้นครั้งต่อไปบน Source VM และ Clone Copy ของมันทั้งสอง นอกจากนี้ ไม่แนะนำให้โคลน VM ที่เข้าร่วม Active Directory Domain

Export และ Import VMs ใน Hyper-V Manager

ขั้นแรก ส่งออก VM ไปยังไดเรกทอรีแยกต่างหาก เปิดคอนโซล Hyper-V Manager คลิกขวาที่ VM และเลือก Export ในเมนูบริบท

💡 หมายเหตุ: ใน Hyper-V บน Windows Server 2012 R2 และใหม่กว่า (รวมถึง Free Hyper-V Server) คุณสามารถส่งออก Virtual Machines ที่กำลังทำงานได้แม้โดยไม่ต้องหยุดพวกมัน

ระบุไดเรกทอรีที่คุณต้องการส่งออก Virtual Machine ไป

สถานะการส่งออก VM จะแสดงในแผ่นสถานะ VM ในคอนโซล Hyper-V ของคุณ

💡 การใช้งานทั่วไป: หลาย Admin ใช้ VM Export เป็นวิธีที่ง่ายที่สุดในการสำรอง VM ใน Hyper-V

คุณสามารถส่งออก Checkpoint (Snapshot) เฉพาะของ Virtual Machine ได้ ในการทำเช่นนี้ ให้คลิกขวาที่ Checkpoint ที่ต้องการในต้นไม้ Checkpoints และเลือก Export

การ Import VM

ในการ Import VM ให้คลิกชื่อโฮสต์ใน Hyper-V Manager และเลือก Import Virtual Machine

จากนั้นระบุเส้นทางไปยังไดเรกทอรีที่โฟลเดอร์พร้อมไฟล์ VM ที่นำเข้าตั้งอยู่ เมื่อคุณ Import VM ใน Hyper-V คุณจะได้รับตัวเลือก 3 แบบของการลงทะเบียน VM บนโฮสต์:

  • Register the virtual machine in-place (use the existing unique ID) — เพื่อลงทะเบียน VM ในไดเรกทอรีที่มีไฟล์ที่นำเข้า (VM ID คงเดิม)
  • Restore the virtual machine (use the existing unique ID) — เพื่อคัดลอกไฟล์ VM ไปยังโฟลเดอร์อื่น (Original VM ID ถูกเก็บไว้)
  • Copy the virtual machine (create a new unique ID) — เพื่อคัดลอก VM ไปยังไดเรกทอรีอื่นและสร้าง VM ID ใหม่

แต่ละ VM บนโฮสต์ Hyper-V มี ID ที่ต้องไม่ซ้ำกันภายในโฮสต์ หากคุณ Import หรือ Clone VM ไปยังโฮสต์อื่น คุณไม่จำเป็นต้องเปลี่ยน VM ID

หากคุณพยายาม Import VM ด้วย ID ซ้ำ จะเกิดข้อผิดพลาดดังนี้:

The operation failed because a virtual machine with the same identifier already exists. Select a new identifier and try the operation again.

เพื่อสร้าง VM Clone พร้อม ID ใหม่ เราได้เลือกตัวเลือกที่สาม Wizard จะพรอมต์ให้คุณระบุโฟลเดอร์ที่คุณต้องการวางไฟล์ VM โดยค่าเริ่มต้น โฟลเดอร์ที่ระบุในการตั้งค่าโฮสต์ Hyper-V จะถูกใช้

จากนั้นเลือกไดเรกทอรีที่ Virtual Disks ของ Virtual Machine (ไฟล์ vhdx) จะถูกเก็บ

จากนั้น VM ที่โคลนใหม่จะปรากฏในคอนโซล Hyper-V ของคุณ

วิธี Export, Import และ Clone Hyper-V VMs ด้วย PowerShell

Export VM

Export-VM -Name win10 -Path 'C:\VHD\export'

หากคุณต้องการส่งออก VM ที่กำลังทำงาน คุณสามารถใช้ตัวเลือก CaptureLiveState ซึ่งกำหนดวิธีการส่งออกหน่วยความจำของ VM มี 3 ตัวเลือก:

  • CaptureSavedState – ส่งออกหน่วยความจำ (ค่าเริ่มต้น)
  • CaptureDataConsistentState – ส่งออกสถานะ VM จาก Hyper-V Production Checkpoint
  • CaptureCrashConsistentState – ไม่บันทึกเนื้อหาหน่วยความจำ
Export-VM -Name win10 -Path 'C:\VHD\export' -CaptureLiveState CaptureCrashConsistentState

หากคุณต้องการส่งออกสถานะ VM จาก Checkpoint เฉพาะ ให้ระบุชื่อของมัน

ขั้นแรก แสดงรายการ Checkpoints ที่พร้อมใช้งานสำหรับ VM:

Get-VMSnapshot -VMName win10

จากนั้นส่งออก Checkpoint โดยชื่อของมัน:

Export-VMSnapshot -Name "win10 - (6/17/2021 - 3:12:205 PM) Standard" -VMName win10 -Path 'C:\VHD\export'

Import VM

หลังจาก VM ถูกส่งออกแล้ว คุณสามารถนำเข้าได้ หากคุณต้องการลงทะเบียน VM ในที่เดิม (In-place) ให้รันคำสั่งต่อไปนี้:

Import-VM -Path "C:\VHD\export\win10\Virtual Machines\212cadd2-6543-bc2d-ca11-321ffa223f3b.vmcx"

ในตัวเลือก Path ให้ระบุตำแหน่งของไฟล์การกำหนดค่า VM (รูปแบบไฟล์ VMCX แทนที่รูปแบบ XML ของไฟล์การกำหนดค่า VM ใน Hyper-V Server 2016) เพื่อคัดลอก VM ไปยังโฟลเดอร์อื่นพร้อม ID เดียวกัน ใช้ตัวเลือก Copy เพื่อสร้าง VM ID ใหม่ ใช้ตัวเลือก GenerateNewId:

Import-VM -Path "C:\VHD\export\win10\Virtual Machines\212cadd2-6543-bc2d-ca11-321ffa223f3b.vmcx" -VhdDestinationPath "C:\VHD\win10_2" -VirtualMachinePath "C:\VHD\win10_2"

VhdDestinationPath ระบุไดเรกทอรีที่ไฟล์ VHDX ของ VM จะถูกคัดลอกไป และ VirtualMachinePath ตั้งค่าไดเรกทอรีของไฟล์การกำหนดค่า VM หากตัวเลือกไม่ได้ตั้งค่า ไฟล์ VM จะถูกคัดลอกไปยังไดเรกทอรีค่าเริ่มต้นที่ระบุในการตั้งค่าโฮสต์ Hyper-V (C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines\)

คุณยังสามารถตั้งค่าโฟลเดอร์สำหรับเก็บ Checkpoints (SnapshotFilePath) และ Pagefile (SmartPagingFilePath) ได้

จัดการ VM ที่โคลนแล้ว

สังเกตว่า VM ที่โคลนปรากฏในคอนโซล Hyper-V ด้วยชื่อ VM ต้นทาง มาเปลี่ยนชื่อมัน แต่เราต้องการ VMID ก่อน:

get-vm | select VMNAME,VMId

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

get-vm | Where-Object {$_.VMId -eq "9a9d3332-f332-a231-8abc-9221aab32287"} | Rename-VM -NewName win10_2

จากนั้นคุณสามารถเปลี่ยนชื่อไฟล์ Virtual Hard Disk ได้เช่นกัน:

Get-VHD -VMId 9a9d3332-f332-a231-8abc-9221aab32287 | Select Path | Rename-Item -NewName win10_2.vhdx
Remove-VMHardDiskDrive -VMName win10_2 -ControllerType SCSI -ControllerLocation 0 -ControllerNumber 0
Add-VMHardDiskDrive -VMName win10_2 -ControllerType SCSI -ControllerNumber 0 -ControllerLocation 0 -Path "C:\VHD\win10_2\win10_2.vhdx"

เปลี่ยนที่อยู่ MAC ของ Virtual Adapter (คุณสามารถระบุ MAC Address แบบ Static ใหม่หรือกำหนดให้รับ MAC Address แบบ Dynamic)

Set-VMNetworkAdapter -VMName win10_2 -DynamicMacAddress
Start-VM -Name win10_2

ก่อนเชื่อมต่อ VM ใหม่ของคุณกับเครือข่าย แนะนำให้เปลี่ยนชื่อและเปลี่ยนที่อยู่ IP เป็นใหม่ (หากคุณใช้ DHCP ใน LAN ของคุณ คุณสามารถข้ามขั้นตอนนี้ได้) จากนั้นคุณจะสามารถเชื่อมต่อกับ VM ใหม่ของคุณผ่าน PowerShell Direct โดยใช้ Cmdlet Invoke-Command หรือ Enter-PSSession:

Enter-PSSession -ComputerName win10_2 -Credential (Get-Credential)
Rename-Computer win10_2
Remove-NetIPAddress -InterfaceAlias "Ethernet" -AddressFamily IPV4
New-NetIPAddress -IPAddress 192.168.13.71 -InterfaceAlias "Ethernet" -AddressFamily IPv4 -PrefixLength 24
Restart-Computer

วิธีโคลน Hyper-V Virtual Machines โดยใช้ Windows Admin Center

คุณสามารถโคลน Hyper-V VM ได้โดยตรงโดยไม่ต้อง Export และ Import ใน Windows Admin Center v2009 หรือใหม่กว่า

รัน WAC เลือกส่วน Virtual Machines และจากนั้นคลิก VM -> Manage -> Clone

จากนั้นระบุชื่อ VM ใหม่ของคุณและเลือกไดเรกทอรีที่คุณต้องการวางไฟล์ของมัน

💡 ตัวเลือกใน Wizard: มีตัวเลือก "I have already run Sysprep on my VM" ใน Wizard การโคลน หากคุณไม่ได้ Generalize Image โดยใช้ Sysprep และไม่ได้เปิดใช้งานตัวเลือกนี้ Hyper-V จะสร้าง Snapshot ของ Source VM รัน Sysprep และโคลนไปยัง VM ใหม่ (Source VM จะรีสตาร์ทหลายครั้งและจะไม่พร้อมใช้งานในระหว่างกระบวนการ) จากนั้น Source VM จะถูกคืนสู่สถานะเดิม และ Snapshot จะถูกลบ
⚠ สำคัญ: เมื่อโคลน VM ใดๆ ที่มี Guest OS ไม่ใช่ Windows ให้เปิดใช้งานตัวเลือกที่อธิบายไว้ข้างต้นเสมอ

รอจนกว่า VM จะถูกโคลน ID ใหม่จะถูกมอบหมายให้ VM ใหม่โดยอัตโนมัติ