ไม่เหมือนกับ VMWare Hyper-V ไม่มีฟีเจอร์ในตัวในการโคลนเครื่องเสมือน (การโคลนทำได้เฉพาะใน Virtual Machine Manager) ในการสร้างสำเนาเต็มของ VM ที่มีอยู่ คุณจะต้องใช้คุณลักษณะการนำเข้าและส่งออกของ Hyper-V ในบทความนี้ เราจะแสดงวิธีการโคลนเครื่องเสมือนใน Hyper-V โดยใช้การนำเข้าและส่งออกด้วย Hyper-V Manager GUI, PowerShell และ Windows Admin Center (WAC)
เมื่อทำการโคลนเครื่องเสมือนที่ใช้ Windows โปรดจำไว้ว่าสำเนา VM จะมี SID เดียวกันกับแหล่งที่มา คุณต้องใช้เครื่องมือ Sysprep เพื่อรีเซ็ต Windows guest SID หากคุณได้สร้างอิมเมจ Windows อ้างอิง ให้รันคำสั่งด้านล่างก่อนที่จะทำการโคลน:
%WINDIR%\system32\sysprep\sysprep.exe /generalize /shutdown /oobe
VM จะปิดตัวลงและ SID ใหม่จะถูกสร้างขึ้นในการเริ่มต้นครั้งถัดไปบนทั้ง VM ต้นทางและสำเนาโคลน นอกจากนี้ ไม่แนะนำให้โคลน VM ที่เข้าร่วมโดเมน Active Directory
สารบัญ:
- ส่งออกและนำเข้า VM ใน Hyper-V Manager
- วิธีการส่งออก นำเข้า และโคลน Hyper-V VM ด้วย PowerShell
- วิธีการโคลนเครื่องเสมือน Hyper-V โดยใช้ Windows Admin Center
ส่งออกและนำเข้า VM ใน Hyper-V Manager
ขั้นแรก ส่งออก VM ไปยังไดเร็กทอรีแยกต่างหาก เปิดคอนโซล Hyper-V Manager คลิกขวาที่ VM แล้วเลือก ส่งออก ในเมนูบริบท
ใน Hyper-V บน Windows Server 2012 R2 และใหม่กว่า (รวมถึงเซิร์ฟเวอร์ Hyper-V ฟรี) คุณสามารถส่งออกได้แม้ใช้งานเครื่องเสมือนโดยไม่ต้องหยุดการทำงาน
ระบุไดเร็กทอรีที่คุณต้องการส่งออกเครื่องเสมือนไป
สถานะการส่งออก VM จะแสดงในบานหน้าต่างสถานะ VM ในคอนโซล Hyper-V ของคุณ
ผู้ดูแลระบบจำนวนมากใช้การส่งออก VM เป็นวิธีที่ง่ายที่สุดในการสำรองข้อมูล VM ใน Hyper-Vคุณสามารถส่งออกจุดตรวจสอบเฉพาะ (ภาพรวม) ของเครื่องเสมือน ในการดำเนินการ เพียงคลิกขวาที่จุดตรวจที่จำเป็นในแผนผังจุดตรวจ แล้วเลือก ส่งออก .
หากต้องการนำเข้า VM ให้คลิกชื่อโฮสต์ใน Hyper-V Manager แล้วเลือก นำเข้าเครื่องเสมือน .
จากนั้นระบุพาธไปยังไดเร็กทอรีที่มีโฟลเดอร์ที่มีไฟล์ VM ที่นำเข้า เมื่อคุณนำเข้า VM ใน Hyper-V คุณจะได้รับ 3 ตัวเลือกสำหรับการลงทะเบียน VM บนโฮสต์:
- ลงทะเบียนเครื่องเสมือนแบบแทนที่ (ใช้ ID เฉพาะที่มีอยู่) — เพื่อลงทะเบียน VM ในไดเร็กทอรีที่มีไฟล์ที่นำเข้า (VM ID ยังคงเหมือนเดิม)
- กู้คืนเครื่องเสมือน (ใช้ ID เฉพาะที่มีอยู่) — เพื่อคัดลอกไฟล์ VM ไปยังโฟลเดอร์อื่น (จะเก็บ VM ID ดั้งเดิมไว้)
- คัดลอกเครื่องเสมือน (สร้าง ID ที่ไม่ซ้ำใหม่) — เพื่อคัดลอก VM ไปยังไดเร็กทอรีอื่นและสร้าง VM ID ใหม่
VM แต่ละรายการบนโฮสต์ Hyper-V มี ID ที่ต้องไม่ซ้ำกันภายในโฮสต์ หากคุณนำเข้าหรือโคลน VM ไปยังโฮสต์อื่น คุณไม่จำเป็นต้องเปลี่ยนรหัส VM
หากคุณพยายามนำเข้า 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 ใหม่ เราได้เลือกตัวเลือกที่สาม วิซาร์ดจะแจ้งให้คุณระบุโฟลเดอร์ที่คุณต้องการวางไฟล์ VM ตามค่าเริ่มต้น โฟลเดอร์ที่ระบุในการตั้งค่าโฮสต์ Hyper-V จะถูกใช้
จากนั้นเลือกไดเร็กทอรีที่จะจัดเก็บดิสก์เสมือนของเครื่องเสมือน (ไฟล์ vhdx)
จากนั้นเครื่องเสมือนที่ลอกแบบใหม่จะปรากฏในคอนโซล Hyper-V ของคุณ
จะส่งออก นำเข้า และโคลน Hyper-V VM ด้วย PowerShell ได้อย่างไร
มาดูวิธีการโคลนเครื่องเสมือน Hyper-V โดยใช้การส่งออก/นำเข้าโดยใช้ PowerShell
หากต้องการส่งออก VM ให้เรียกใช้คำสั่งด้านล่าง:
Export-VM -Name win10 -Path 'C:\VHD\export'
หากคุณต้องการส่งออก VM ที่ทำงานอยู่ คุณสามารถใช้ CaptuteLiveState ตัวเลือกที่กำหนดวิธีการส่งออกหน่วยความจำ VM มีสามตัวเลือก:
CaptureSavedState
– เพื่อส่งออกหน่วยความจำ (โดยค่าเริ่มต้น)CaptureDataConsistentState
– เพื่อส่งออกสถานะ VM จากจุดตรวจสอบการผลิต Hyper-VCaptureCrashConsistentState
– อย่าบันทึกเนื้อหาหน่วยความจำ
Export-VM -Name win10 -Path 'C:\VHD\export' -CaptureLiveState CaptureCrashConsistentState
หากคุณต้องการส่งออกสถานะ VM จากจุดตรวจสอบเฉพาะ ให้ระบุชื่อ
ขั้นแรก แสดงรายการจุดตรวจที่พร้อมใช้งานสำหรับ VM:
Get-VMSnapshot -VMName win10
จากนั้นส่งออกด่านโดยใช้ชื่อ:
Export-VMSnapshot -Name “win10 - (6/17/2021 - 3:12:205 PM) Standard” -VMName win10 -Path 'C:\VHD\export'
หลังจากส่งออก VM แล้ว คุณสามารถนำเข้าได้ หากคุณต้องการลงทะเบียน VM ให้รันคำสั่งต่อไปนี้:
Import-VM -Path "C:\VHD\export\win10\Virtual Machines\212cadd2-6543-bc2d-ca11-321ffa223f3b.vmcx"
ใน เส้นทาง ตัวเลือก ระบุตำแหน่งของไฟล์การกำหนดค่า 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\
)
SnapshotFilePath
) และ pagefile (SmartPagingFilePath
).
โปรดทราบว่า 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
จากนั้นคุณสามารถเปลี่ยนชื่อไฟล์ฮาร์ดดิสก์เสมือนได้เช่นกัน:
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 ของอะแดปเตอร์เสมือนของคุณ (คุณสามารถระบุที่อยู่ MAC แบบคงที่ใหม่หรือกำหนดค่าการรับที่อยู่ MAC แบบไดนามิก)
Set-VMNetworkAdapter -VMName win10_2 -DynamicMacAddress
Start-VM -Name win10_2
ก่อนที่จะเชื่อมต่อ VM ใหม่ของคุณกับเครือข่าย ขอแนะนำให้เปลี่ยนชื่อและเปลี่ยนที่อยู่ IP เป็นที่อยู่ใหม่ (หากคุณใช้ DHCP ใน LAN คุณสามารถข้ามขั้นตอนนี้ได้) จากนั้น คุณจะสามารถเชื่อมต่อกับ VM ใหม่ของคุณผ่าน PowerShell Direct โดยใช้คำสั่ง Invoke-Command หรือ Enter-PSSession cmdlet:
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 โดยใช้ Windows Admin Center
คุณสามารถโคลน Hyper-V VM ได้โดยตรงโดยไม่ต้องส่งออกและนำเข้าใน Windows Admin Center v2009 หรือใหม่กว่า
เรียกใช้ WAC เลือกส่วนเครื่องเสมือน จากนั้นคลิก VM -> จัดการ -> โคลน .
จากนั้นระบุชื่อ VM ใหม่ของคุณและเลือกไดเร็กทอรีที่คุณต้องการวางไฟล์
โปรดทราบว่ามี "ฉันเรียกใช้ Sysprep บน VM แล้ว ” ในตัวช่วยสร้างโคลน หากคุณไม่ได้กำหนดภาพโดยทั่วไปโดยใช้ Sysprep และไม่ได้เปิดใช้งานตัวเลือกนี้ Hyper-V จะสร้างสแน็ปช็อตของ VM ต้นทาง เรียกใช้ Sysprep และโคลนไปยัง VM ใหม่ (VM ต้นทางจะรีสตาร์ทหลายครั้งและจะ ไม่สามารถใช้งานได้ในระหว่างกระบวนการ) จากนั้น VM ต้นทางจะกลับสู่สถานะเดิม และสแนปชอตจะถูกลบออก
เมื่อทำการโคลน VM ใดๆ ที่มีระบบปฏิบัติการแขกที่ไม่ใช่ Windows ให้เปิดใช้งานตัวเลือกที่อธิบายไว้ข้างต้นเสมอ
รอจนกระทั่ง VM ถูกโคลน ระบบจะกำหนดรหัสใหม่ให้กับ VM ใหม่โดยอัตโนมัติ