Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

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

ไม่เหมือนกับ 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 ฟรี) คุณสามารถส่งออกได้แม้ใช้งานเครื่องเสมือนโดยไม่ต้องหยุดการทำงาน

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

ระบุไดเร็กทอรีที่คุณต้องการส่งออกเครื่องเสมือนไป

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

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

ผู้ดูแลระบบจำนวนมากใช้การส่งออก VM เป็นวิธีที่ง่ายที่สุดในการสำรองข้อมูล VM ใน Hyper-V

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

คุณสามารถส่งออกจุดตรวจสอบเฉพาะ (ภาพรวม) ของเครื่องเสมือน ในการดำเนินการ เพียงคลิกขวาที่จุดตรวจที่จำเป็นในแผนผังจุดตรวจ แล้วเลือก ส่งออก .

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

หากต้องการนำเข้า VM ให้คลิกชื่อโฮสต์ใน Hyper-V Manager แล้วเลือก นำเข้าเครื่องเสมือน .

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

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

  • ลงทะเบียนเครื่องเสมือนแบบแทนที่ (ใช้ ID เฉพาะที่มีอยู่) — เพื่อลงทะเบียน VM ในไดเร็กทอรีที่มีไฟล์ที่นำเข้า (VM ID ยังคงเหมือนเดิม)
  • กู้คืนเครื่องเสมือน (ใช้ ID เฉพาะที่มีอยู่) — เพื่อคัดลอกไฟล์ VM ไปยังโฟลเดอร์อื่น (จะเก็บ VM ID ดั้งเดิมไว้)
  • คัดลอกเครื่องเสมือน (สร้าง ID ที่ไม่ซ้ำใหม่) — เพื่อคัดลอก VM ไปยังไดเร็กทอรีอื่นและสร้าง VM ID ใหม่

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

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 จะถูกใช้

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

จากนั้นเลือกไดเร็กทอรีที่จะจัดเก็บดิสก์เสมือนของเครื่องเสมือน (ไฟล์ vhdx)

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

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

จะส่งออก นำเข้า และโคลน Hyper-V VM ด้วย PowerShell ได้อย่างไร

มาดูวิธีการโคลนเครื่องเสมือน Hyper-V โดยใช้การส่งออก/นำเข้าโดยใช้ PowerShell

หากต้องการส่งออก VM ให้เรียกใช้คำสั่งด้านล่าง:

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

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

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

  • CaptureSavedState – เพื่อส่งออกหน่วยความจำ (โดยค่าเริ่มต้น)
  • CaptureDataConsistentState – เพื่อส่งออกสถานะ VM จากจุดตรวจสอบการผลิต Hyper-V
  • CaptureCrashConsistentState – อย่าบันทึกเนื้อหาหน่วยความจำ

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'

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

หลังจากส่งออก 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 ).

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

โปรดทราบว่า 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

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

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

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

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

ก่อนที่จะเชื่อมต่อ 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 -> จัดการ -> โคลน .

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

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

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

โปรดทราบว่ามี "ฉันเรียกใช้ Sysprep บน VM แล้ว ” ในตัวช่วยสร้างโคลน หากคุณไม่ได้กำหนดภาพโดยทั่วไปโดยใช้ Sysprep และไม่ได้เปิดใช้งานตัวเลือกนี้ Hyper-V จะสร้างสแน็ปช็อตของ VM ต้นทาง เรียกใช้ Sysprep และโคลนไปยัง VM ใหม่ (VM ต้นทางจะรีสตาร์ทหลายครั้งและจะ ไม่สามารถใช้งานได้ในระหว่างกระบวนการ) จากนั้น VM ต้นทางจะกลับสู่สถานะเดิม และสแนปชอตจะถูกลบออก

เมื่อทำการโคลน VM ใดๆ ที่มีระบบปฏิบัติการแขกที่ไม่ใช่ Windows ให้เปิดใช้งานตัวเลือกที่อธิบายไว้ข้างต้นเสมอ

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

รอจนกระทั่ง VM ถูกโคลน ระบบจะกำหนดรหัสใหม่ให้กับ VM ใหม่โดยอัตโนมัติ

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