กำหนดค่า PowerShell ของ Hyper-V VM


13

ฉันจะกำหนดค่า Hyper-V VM ใหม่ได้อย่างไร

ฉันต้องการเปลี่ยนไฟล์กำหนดค่า VM จุดตรวจสอบและตำแหน่งฮาร์ดไดรฟ์เสมือนด้วย Powershell

Google-FU ของฉันชี้ไปที่การเคลื่อนที่เท่านั้นฉันมี VM ประมาณ ~ 100 VM เพื่อเปลี่ยนฉันสามารถย้ายไฟล์ได้ฉันไม่รังเกียจการหยุดทำงานเล็กน้อยเมื่อเดินผ่านตัวช่วยสร้างสำหรับแต่ละ VM ใช้เวลาประมาณ 5 ถึง 15 นาทีต่อ VM และสิ่งเหล่านั้นเล็กกว่าฉันต้องสามารถทำทั้งหมด 100 ใน 2 ชั่วโมง

หากฉันต้องการชี้แจงโปรดแจ้งให้เราทราบ

== ฉันกำลังติดอยู่ที่ไหน ==

ใช่ฉันเคยเห็นลิงก์นั้นและดูคำสั่งส่วนใหญ่ แต่ก็ไม่มีใครทำสิ่งที่ฉันกำลังมองหา

ไฟล์ทั้งหมดเข้าด้วยกันมีขนาดประมาณ 14 TB

~ 100 VM's ถูกทำคลัสเตอร์ระหว่าง 7 Hosts ที่เก็บข้อมูลที่ใช้ร่วมกันคือดิสก์หมุน EMC และฉันต้องการย้ายไปยัง 3Par ssd

ตอนนี้สิ่งที่ฉันสามารถทำได้สำเร็จก็คือการปิด VM ลงย้ายไฟล์ลบ VM ทั้งหมดและสร้าง PowerShell VIA ขึ้นใหม่ซึ่งเมื่อฉันบอก CTO ของฉันนั่นอาจเป็นวิธีเดียวที่เขาเกี่ยวกับลูกแมว

สิ่งที่ฉันต้องการที่จะสามารถที่จะไม่ย้าย VM เพียงปรับแต่งพวกเขา

ในงานอื่น ๆ สามารถเปลี่ยน:

ป้อนคำอธิบายรูปภาพที่นี่

ถึง:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันต้องการที่จะสามารถทำได้โดยใช้ powershell ฉันยังต้องสามารถทำสิ่งเดียวกันสำหรับจุดตรวจสอบและไฟล์การกำหนดค่าและส่วนประกอบ Hyper-V VM อื่น ๆ ทั้งหมด

ฉันสามารถทนการหยุดทำงานได้ประมาณ 2 ชั่วโมงในการทำ MOVE ผ่านตัวช่วยสร้างสำหรับ VM ทั้งหมดไม่เพียง แต่จะทำให้เมาส์ของฉันเสื่อมสภาพ แต่ใช้เวลาประมาณ 6 ชั่วโมง

ฉันได้ทำการค้นคว้าและทดสอบกลยุทธ์ที่แตกต่างกันไปสองสามสัปดาห์แล้ว

==== One More Shot ====

ฉันไม่ต้องการ "ย้าย" ทั้งหมดที่ฉันต้องการจะทำคือเปลี่ยนการตั้งค่าจากภายในการเคลื่อนย้าย Hyper-V จะใช้เวลานานมันเร็วกว่ามากที่ฉันจะคัดลอกไฟล์ผ่านเครือข่ายและเพียงอัปเดตพา ธ ใน Hyper-V ฉันสามารถปิดเครื่องได้

ฉันคิดว่ามันไม่สามารถทำได้?


คุณมีงานวิจัยแบบไหนแล้ว? เอกสารในโมดูล hyper-v นั้นค่อนข้างดีสำหรับฉัน คุณติดอยู่ที่ไหน
Zoredache

@Zoredache โปรดดูการอัปเดต
Anthony Fornito

1
หากพวกเขาเป็นกลุ่มคุณเพียงแค่ต้องย้ายที่เก็บข้อมูลโดยใช้ตัวเลือกย้ายที่เก็บข้อมูล มันอยู่ใน GUI และควรส่งผลให้ไม่มีการหยุดทำงาน blogs.msdn.microsoft.com/clustering/2012/04/26/…
Drifter104

Im thinking it cannot be done?ฉันคิดว่ามันสามารถทำได้ แต่มันจะเป็นสคริปต์ที่ยาวและซับซ้อน ทุกอย่างเกี่ยวกับ VM สามารถถูกจัดการได้อย่างสมบูรณ์ผ่านทาง PowerShell ฉันสงสัยว่าคุณกำลังทำให้ชีวิตของคุณยากขึ้นโดยไม่ให้เครื่องมือจัดการการย้ายไฟล์ให้คุณ
Zoredache

@ Zoredache ในโลกที่สมบูรณ์แบบที่ฉันมี 6 ชั่วโมงใช่มันจะดีกว่าที่จะใช้เครื่องมือ แต่ฉันมี 2
Anthony Fornito

คำตอบ:


8

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

Get-VM -Name ('ansible-test-acs',
              'ansible-test-web',
              'ansible-test-db') |
ForEach-Object {
    # move everything to d:\hyper-v\vm_name on hv-srv-01
    $MoveOptions = @{
        'Name'                   = $_.Name
        'DestinationHost'        = 'hv-srv-01'
        'IncludeStorage'         = $true
        'DestinationStoragePath' = 'D:\Hyper-V\{0}' -f $_.Name
    }
    $MoveOptions
    Move-VM @MoveOptions -WhatIf
    # Move-VM @MoveOptions
}

ย้ายที่เก็บข้อมูล VM ไปยังเส้นทางใหม่

('ansible-test-web', 'ansible-test-db') |
ForEach-Object {
    Move-VMStorage $_ `
            –DestinationStoragePath "E:\Hyper-V\$_"
}

หากคุณคัดลอก VM และไฟล์ทั้งหมดไปยังตำแหน่งใหม่และคุณต้องการให้ Hyper-V เริ่มใช้ตำแหน่งใหม่คุณควรจะสามารถทำสิ่งต่างๆได้

Remove-VM oldvmname
Import-VM -Register -Path 'path to VM config file'

ขอบคุณสำหรับรหัส แต่มันยังคงย้ายการปรับปรุงการดูของ VM
Anthony Fornito

คุณเห็นตัวเลือกในการย้ายที่เก็บข้อมูลใช่ไหม
Zoredache

ใช่ แต่ฉันไม่ต้องการ 'ย้าย' ที่เก็บข้อมูลฉันได้คัดลอกไฟล์ vhdx ไปยังตำแหน่งใหม่แล้วฉันยังสามารถใช้คำสั่ง Set-VMHardDiskDrive ซึ่งทำงานเพื่อเปลี่ยนไดเรกทอรีของที่เก็บข้อมูลเมื่อ VM ปิดอยู่ ซึ่งก็ดี แต่ฉันไม่สามารถหาวิธีการ 'เปลี่ยน' ตัวชี้สำหรับแฟ้มการกำหนดค่า VM
Anthony Fornito

หากคุณคัดลอกไฟล์ทั้งหมดจริง ๆ แล้วคุณแน่ใจแล้วลบการลบและนำเข้า VM อีกครั้ง คำตอบอัพเดทด้วยตัวอย่าง
Zoredache
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.