[server] Hyper-V VM 파워 쉘 구성

Hyper-V VM을 재구성하는 방법

Powershell을 사용하여 VM 구성 파일, 검사 점 및 가상 하드 드라이브 위치를 변경할 수 있기를 원합니다.

내 Google-FU가 이동 중임을 가리키고 있습니다. 약 ~ 100 개의 VM을 변경할 수 있습니다. 파일을 이동할 수 있습니다. 약간의 다운 타임은 신경 쓰지 않습니다. 각 VM의 마법사를 걸을 때마다 약 5 ~ 15 분이 걸립니다. VM과 그 크기가 작은 것이므로 2 시간 안에 100 개를 모두 수행 할 수 있어야합니다.

명확히해야 할 경우 알려주십시오.

== 내가 막히는 곳 ==

예, 나는 그 링크를 보았고 대부분의 명령을 보았지만 아무도 내가 원하는 것을하지 않습니다.

파일은 모두 약 14TB입니다.

~ 100 개의 VM이 7 개의 호스트 사이에 클러스터됩니다. 공유 스토리지는 EMC 회전 디스크이며 3Par ssd로 이동하고 싶습니다.

이제 내가 성공적으로 할 수 있었던 것은 VM을 종료하고 파일을 이동하고 모든 VM을 삭제 한 다음 VIA powershell을 다시 만드는 것입니다. CTO에 말했을 때 새끼 고양이에 대한 유일한 방법 일 수 있습니다.

내가 할 수있는 것은 VM을 이동시키는 것이 아니라 재구성하는 것입니다.

다른 작품에서는 다음을 변경할 수 있습니다.

여기에 이미지 설명을 입력하십시오

에:

여기에 이미지 설명을 입력하십시오

powershell을 사용 하여이 작업을 수행하고 싶습니다. 또한 검사 점, 구성 파일 및 기타 모든 Hyper-V VM 구성 요소에 대해 동일한 작업을 수행 할 수 있어야합니다.

모든 VM의 마우스가 마모 될뿐만 아니라 약 6 시간이 걸리므로 마법사를 통해 이동을 수행하기 위해 약 2 시간의 가동 중지 시간을 허용 할 수 있습니다.

나는 또한 이것을 연구하고 몇 주 동안 다른 전략을 시험해 왔습니다.

==== 하나 더 샷 ====

하이퍼 볼 V 이동 내에서 설정을 변경하는 것이 오래 걸리기 때문에 “이동”을 원하지 않습니다. 네트워크를 통해 파일을 복사하고 경로를 업데이트하는 것이 훨씬 빠릅니다. Hyper-V에서는 컴퓨터를 종료 할 수 있습니다.

할 수 없다고 생각합니까?



답변

이것이 실제로 필요한지 확실하지는 않지만 과거에 모든 스토리지를 포함하여 VM을 새로운 대상으로 마이그레이션하는 데 사용한 Powershell 조각의 예가 있습니다.

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'


답변