새 하드웨어에서 Azure Stack HCI로 마이그레이션

적용 대상: Azure Stack HCI, 버전 21H2 및 20H2; Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2008 R2

이 항목에서는 Windows PowerShell 및 Robocopy를 사용하여 Windows Server 2012 R2, Windows Server 2016 또는 Windows Server 2019의 VM(가상 머신) 파일을 새 Azure Stack HCI 서버 하드웨어로 마이그레이션하는 방법에 대해 설명합니다. Robocopy는 한 서버에서 다른 서버로 파일을 복사하는 강력한 방법입니다. 연결되지 않고 마지막으로 알려진 상태에서 계속 작업하는 경우 다시 시작됩니다. Robocopy는 SMB(서버 메시지 블록)를 통해 다중 스레드 파일 복사도 지원합니다. 자세한 내용은 Robocopy를 참조하세요.

참고

Windows Server에서 Azure Stack HCI로 Hyper-V 실시간 마이그레이션 및 Hyper-V 복제본은 지원되지 않습니다.

마이그레이션하려는 Windows 2012 R2 이상에 VM이 있는 경우 이전 VM 마이그레이션을 참조하세요.

동일한 하드웨어를 사용하여 Azure Stack HCI로 마이그레이션하려면 동일한 하드웨어에서 Azure Stack HCI로 마이그레이션을 참조하세요.

다음 다이어그램에서는 Windows 서버 원본 클러스터 및 Azure Stack HCI 대상 클러스터를 예로 보여줍니다. 독립 실행형 서버에서도 VM을 마이그레이션할 수 있습니다.

Migrate cluster to Azure Stack HCI

예상되는 가동 중지 시간 측면에서 클러스터 간 이중 40GB RDMA East-West 네트워크와 32개의 다중 스레드에 대해 구성된 Robocopy가 있는 단일 NIC를 사용하면 시간당 1.9TB의 전송 속도를 실현할 수 있습니다.

참고

확장된 클러스터에 대한 VM 마이그레이션은 이 문서에서 다루지 않습니다.

시작하기 전에

마이그레이션을 시작하기 전에 고려해야 할 몇 가지 요구 사항과 사항이 있습니다.

  • 모든 Windows PowerShell 명령을 관리자 권한으로 실행해야 합니다.

  • 원본 및 대상 클러스터 모두에 대한 관리자 권한이 있는 도메인 자격 증명이 있어야 하며, 두 클러스터가 모두 포함된 원본 및 대상 OU(조직 구성 단위)에 대한 모든 권한이 있어야 합니다.

  • VM 마이그레이션을 위해 클러스터 간에 Kerberos 인증을 용이하게 하려면 두 클러스터가 동일한 Active Directory 포리스트 및 도메인에 있어야 합니다.

  • 두 클러스터는 모두 이 OU에 설정된 GPO(그룹 정책 Object) 블록 상속이 있는 Active Directory OU에 있어야 합니다. 이렇게 하면 도메인 수준 GPO 및 보안 정책이 마이그레이션에 영향을 주지 않습니다.

  • 클러스터 간에 일관된 Kerberos 인증을 지원하려면 두 클러스터를 동일한 시간 원본에 연결해야 합니다.

  • 원본 클러스터의 VM에서 사용하는 Hyper-V 가상 스위치 이름을 기록해 둡니다. VM을 가져오기 전에 Azure Stack HCI 대상 클러스터 "가상 머신 네트워크"에 동일한 가상 스위치 이름을 사용해야 합니다.

  • 원본 VM에 대한 ISO 이미지 파일을 제거합니다. 이 작업은 하드웨어 섹션VM 속성에서 Hyper-V 관리자를 사용하여 수행됩니다. 가상 CD/DVD 드라이브에 대해 제거 를 선택합니다.

  • 원본 클러스터의 모든 VM을 종료합니다. 이는 마이그레이션 프로세스 전체에서 버전 제어 및 상태를 유지 관리하는 데 필요합니다.

  • Azure Stack HCI가 필요에 따라 VM을 가져오고 업데이트하는 VM 버전을 지원하는지 확인합니다. 이 작업을 수행하는 방법은 VM 버전 지원 및 업데이트 섹션을 참조하세요.

  • 원본 클러스터의 모든 VM을 백업합니다. 모든 애플리케이션 및 데이터의 크래시 일관성 백업 및 모든 데이터베이스의 애플리케이션 일치 백업을 완료합니다. Azure에 백업하려면 Azure Backup 사용을 참조하세요.

  • 이전 상태로 롤백해야 하는 경우 원본 클러스터 VM 및 도메인 컨트롤러의 검사점 만들기 물리적 서버에는 적용되지 않습니다.

  • 가장 효율적인 엔드투엔드 전송 패킷 크기를 제공하기 위해 최대 점보 프레임 크기가 원본 및 대상 클러스터 스토리지 네트워크, 특히 RDMA 네트워크 어댑터와 해당 스위치 네트워크 포트 간에 동일한지 확인합니다.

  • 원본 클러스터의 Hyper-V 가상 스위치 이름을 기록해 둡다. 대상 클러스터에서 다시 사용합니다.

  • Azure Stack HCI 하드웨어는 최소한 원본 하드웨어와 동일한 용량 및 구성을 가져야 합니다.

  • 가장 빠른 파일 전송을 용이하게 하기 위해 원본 클러스터와 대상 클러스터 간의 실제 거리 또는 네트워크 홉 수를 최소화합니다.

VM 버전 지원 및 업데이트

이 표에는 Windows 서버 OS 버전 및 해당 VM 버전이 나열되어 있습니다.

VM이 실행 중인 OS 버전에 관계없이 Azure Stack HCI로 직접 마이그레이션할 수 있도록 지원되는 최소 VM 버전은 버전 5.0입니다. 이는 Windows Server 2012 R2의 VM에 대한 기본 버전을 나타냅니다. 따라서 예를 들어 버전 2.0, 3.0 또는 4.0에서 실행되는 모든 VM은 마이그레이션 전에 버전 5.0으로 업데이트해야 합니다.

OS 버전 VM 버전
Windows Server 2008 SP1 2.0
Windows Server 2008 R2 3.0
Windows Server 2012 4.0
Windows Server 2012 R2 5.0
Windows Server 2016 8.0
Windows Server 2019 9.0
Azure Stack HCI 9.0

Windows Server 2012 R2, Windows Server 2016 및 Windows Server 2019의 VM의 경우 Robocopy 마이그레이션 스크립트를 실행하기 전에 먼저 원본 하드웨어에서 지원되는 최신 VM 버전으로 모든 VM을 업데이트합니다. 이렇게 하면 성공적인 VM 가져오기를 위해 모든 VM이 버전 5.0 이상인지 확인합니다.

Windows Server 2008 SP1, Windows Server 2008 R2-SP1 및 Windows 2012의 VM의 경우 VM 버전은 버전 5.0보다 작습니다. 또한 이러한 VM은 .vcmx 파일 대신 구성에 .xml 파일을 사용합니다. 따라서 VM을 Azure Stack HCI로 직접 가져오는 것은 지원되지 않습니다. 이러한 경우 이전 VM 마이그레이션에 자세히 설명된 대로 두 가지 옵션이 있습니다.

VM 버전 업데이트

다음 명령은 Windows Server 2012 R2 이상에 적용됩니다. 다음 명령을 사용하여 단일 서버의 모든 VM 버전을 표시합니다.

Get-VM * | Format-Table Name,Version

클러스터의 모든 서버에서 모든 VM 버전을 표시하려면 다음을 수행합니다.

Get-VM –ComputerName (Get-ClusterNode)

모든 VM을 모든 서버에서 지원되는 최신 버전으로 업데이트하려면 다음을 수행합니다.

Get-VM –ComputerName (Get-ClusterNode) | Update-VMVersion -Force

RDMA 권장 사항

RDMA(원격 직접 메모리 액세스)를 사용하는 경우 Robocopy는 이를 활용하여 클러스터 간에 VM을 복사할 수 있습니다. RDMA를 사용하기 위한 몇 가지 권장 사항은 다음과 같습니다.

  • 원본 클러스터와 대상 클러스터 간에 가장 빠른 네트워크 경로를 사용하도록 두 클러스터를 동일한 ToR(랙) 스위치로 커넥트. 스토리지 네트워크 경로의 경우 일반적으로 10GbE/25GbE 이상의 속도를 지원하고 RDMA를 활용합니다.

  • RDMA 어댑터 또는 표준이 원본 클러스터와 대상 클러스터(ROCE 및 iWARP) 간에 다른 경우 Robocopy는 사용 가능한 가장 빠른 네트워크를 통해 TCP/IP를 통해 SMB를 대신 활용합니다. 이는 일반적으로 East-West 네트워크의 이중 10Gbe/25Gbe 이상 속도이며 클러스터 간에 VM VHDX 파일을 복사하는 가장 최적의 방법을 제공합니다.

  • Robocopy가 클러스터(동서 네트워크) 간에 RDMA를 활용할 수 있도록 원본 및 대상 클러스터 간에 라우팅할 수 있도록 RDMA 스토리지 네트워크를 구성합니다.

새 클러스터 만들기

Azure Stack HCI 클러스터를 만들려면 클러스터에 있을 각 새 서버에 Azure Stack HCI OS를 설치해야 합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 Azure Stack HCI 운영 체제 배포를 참조하세요.

Windows Admin Center 또는 Windows PowerShell 사용하여 새 클러스터를 만듭니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 Windows Admin Center 사용하여 Azure Stack HCI 클러스터 만들기 및 Windows PowerShell사용하여 Azure Stack HCI 클러스터 만들기를 참조하세요.

중요

클러스터 간의 Hyper-V 가상 스위치(VMSwitch) 이름은 동일해야 합니다. 대상 클러스터에서 만든 가상 스위치 이름이 모든 서버의 원본 클러스터에서 사용되는 이름과 일치하는지 확인합니다. VM을 가져오기 전에 동일한 스위치 이름을 확인합니다.

참고

Azure에 새 VM을 만들려면 먼저 Azure Stack HCI 클러스터를 Azure에 등록해야 합니다. 자세한 내용은 Azure에 등록을 참조하세요.

마이그레이션 스크립트 실행

다음 PowerShell 스크립트 Robocopy_Remote_Server_.ps1 는 Robocopy를 사용하여 VM 파일 및 해당 종속 디렉터리와 메타데이터를 원본에서 대상 클러스터로 복사합니다. 이 스크립트는 TechNet의 원래 스크립트인 Robocopy Files에서 PowerShell 및 RoboCopy를 사용하여 원격 서버로 수정되었습니다.

스크립트는 지정된 CSV(클러스터 공유 볼륨)에 대한 모든 VM VHD, VHDX 및 VMCX 파일을 대상 클러스터에 복사합니다. 한 번에 하나의 CSV가 마이그레이션됩니다.

마이그레이션 스크립트는 RDMA 및 빠른 네트워크 전송의 이점을 활용하기 위해 각 원본 서버에서 로컬로 실행됩니다. 가상 하드 디스크 파일에 대한 중요 정보를 제공하려면

  1. 각 대상 클러스터 노드가 대상 CSV의 CSV 소유자로 설정되어 있는지 확인합니다.

  2. 복사할 모든 VM VHD 및 VHDX 파일의 위치를 확인하려면 다음 cmdlet을 사용합니다. C:\vmpaths.txt 파일을 검토하여 Robocopy가 4단계에서 시작할 최상위 원본 파일 경로를 확인합니다.

    Get-ChildItem -Path "C:\Clusterstorage\Volume01\*.vhd*" -Recurse > c:\vmpaths.txt
    

    참고

    VHD 및 VHDX 파일이 동일한 볼륨의 다른 경로에 있는 경우 각 경로에 대한 마이그레이션 스크립트를 실행하여 모두 복사해야 합니다.

  3. 원본 클러스터 VM 경로와 대상 클러스터 VM 경로를 일치하도록 다음 세 가지 변수를 변경합니다.

    • $Dest_Server = "Node01"
    • $source = "C:\Clusterstorage\Volume01"
    • $dest = "\\$Dest_Server\C$\Clusterstorage\Volume01"
  4. 각 Windows 서버 원본 서버에서 다음 스크립트를 실행합니다.

<#
#===========================================================================  
# Script: Robocopy_Remote_Server_.ps1
#===========================================================================  
.DESCRIPTION:
Change the following variables to match your source cluster VM path with the destination cluster VM path. Then run this script on each source Cluster Node CSV owner and make sure the destination cluster node is set to the CSV owner for the destination CSV.

        Change $Dest_Server = "Node01"
        Change $source  = "C:\Clusterstorage\Volume01"
        Change $dest = "\\$Dest_Server\C$\Clusterstorage\Volume01"
#>

$Space       = Write-host ""
$Dest_Server = "Node01"
$source      = "C:\Clusterstorage\Volume01"
$dest        = "\\$Dest_Server\C$\Clusterstorage\Volume01"
$Logfile     = "c:\temp\Robocopy1-$date.txt"
$date        = Get-Date -UFormat "%Y%m%d"
$cmdArgs     = @("$source","$dest",$what,$options)  
$what        = @("/COPYALL")
$options     = @("/E","/MT:32","/R:0","/W:1","/NFL","/NDL","/LOG:$logfile","/xf")
 
## Get Start Time
$startDTM = (Get-Date)
 
$Dest_Server     = "Node01"
$TARGETDIR   = \\$Dest_Server\C$\Clusterstorage\Volume01
$Space
Clear
## Provide Information
Write-host ".....Copying Virtual Machines FROM $Source to $TARGETDIR ....................." -fore Green -back black
Write-Host "........................................." -Fore Green

## Kick off the copy with options defined  
robocopy @cmdArgs
 
## Get End Time
$endDTM = (Get-Date)
 
## Echo Time elapsed
$Time = "Elapsed Time: = $(($endDTM-$startDTM).totalminutes) minutes"  
## Provide time it took
Write-host ""
Write-host " Copy Virtual Machines to $Dest_Server has been completed......" -fore Green -back black
Write-host " Copy Virtual Machines to $Dest_Server took $Time        ......" -fore Cyan

VM 가져오기

VM 워크로드의 복원력, 성능 및 규모 향상을 위해 각 CSV 소유자에 대해 VM의 균등한 균형을 사용하도록 클러스터 노드당 하나 이상의 CSV(클러스터 공유 볼륨)를 만드는 것이 가장 좋습니다. 기본적으로 이 잔액은 5분마다 자동으로 발생하며 원본 클러스터 노드와 대상 클러스터 노드 간에 Robocopy를 사용하여 원본 및 대상 CSV 소유자가 가장 최적의 전송 경로 및 속도를 제공하기 위해 일치하도록 하는 경우 고려해야 합니다.

Azure Stack HCI 클러스터에서 다음 단계를 수행하여 VM을 가져오고, 고가용성으로 만들고, 시작합니다.

  1. 다음 cmdlet을 실행하여 모든 CSV 소유자 노드를 표시합니다.

    Get-ClusterSharedVolume
    
  2. 각 서버 노드에 C:\Clusterstorage\Volume 대해 모든 VM에 대한 경로(예: C:\Clusterstorage\volume01)로 이동하여 설정합니다.

  3. 각 CSV 소유자 노드에서 다음 cmdlet을 실행하여 VM 가져오기 전에 볼륨당 모든 VM VMCX 파일에 대한 경로를 표시합니다. 사용자 환경과 일치하도록 경로를 수정합니다.

    Get-ChildItem -Path "C:\Clusterstorage\Volume01\*.vmcx" -Recurse
    

    참고

    Windows Server 2012 R2 및 이전 VM은 VCMX 파일 대신 XML 파일을 사용합니다. 자세한 내용은 이전 VM 마이그레이션 섹션을 참조하세요.

  4. 각 서버 노드에 대해 다음 cmdlet을 실행하여 각 CSV 소유자 노드에서 VM을 가져오고, 등록하고, 고가용성으로 만듭니다. 이렇게 하면 최적의 프로세서 및 메모리 할당을 위해 VM을 균등하게 분산할 수 있습니다.

    Get-ChildItem -Path "C:\Clusterstorage\Volume01\*.vmcx" -Recurse | Import-VM -Register | Get-VM | Add-ClusterVirtualMachineRole
    
  5. 각 노드에서 각 대상 VM을 시작합니다.

    Start-VM -Name
    
  6. 로그온하고 모든 VM이 실행 중이고 모든 앱과 데이터가 있는지 확인합니다.

    Get-VM -ComputerName Server01 | Where-Object {$_.State -eq 'Running'}
    
  7. 모든 발전을 활용하도록 VM을 Azure Stack HCI의 최신 버전으로 업데이트합니다.

    Get-VM | Update-VMVersion -Force
    
  8. 스크립트가 완료되면 Robocopy 로그 파일에서 나열된 오류를 확인하고 모든 VM이 성공적으로 복사되었는지 확인합니다.

이전 VM 마이그레이션

Windows Server 2008 SP1, Windows Server 2008 R2-SP1, Windows Server 2012 또는 Windows Server 2012 R2 VM이 있는 경우 이 섹션이 적용됩니다. 이러한 VM을 처리하는 두 가지 옵션이 있습니다.

  • 이러한 VM을 Windows Server 2012 R2, Windows Server 2016 또는 Windows Server 2019로 먼저 마이그레이션하고, VM 버전을 업데이트한 다음, 마이그레이션 프로세스를 시작합니다.

  • Robocopy를 사용하여 모든 VM VHD를 Azure Stack HCI에 복사합니다. 그런 다음 새 VM을 만들고 복사한 VHD를 Azure Stack HCI의 VM에 연결합니다. 이렇게 하면 이러한 이전 VM에 대한 VM 버전 제한이 무시됩니다.

Windows Server 2012 R2 및 이전 Hyper-V 호스트는 VM 구성에 XML 파일 형식을 사용합니다. 이 형식은 Windows Server 2016 이상 Hyper-V 호스트에 사용되는 VCMX 파일 형식과 다릅니다. 이렇게 하려면 이러한 VM을 Azure Stack HCI에 복사하는 다른 Robocopy 명령이 필요합니다.

옵션 1: 미리 구성된 마이그레이션

Windows Server 2008 SP1, Windows Server 2008 R2-SP 및 Windows Server 2012 호스트되는 VM에 사용되는 2단계 마이그레이션입니다. 사용하는 프로세스는 다음과 같습니다.

  1. 복사할 모든 VM VHD 및 VHDX 파일의 위치를 검색한 다음, 파일을 검토 vmpaths.txt 하여 Robocopy에서 시작할 최상위 원본 파일 경로를 확인합니다. 다음 cmdlet을 사용합니다.

    Get-ChildItem -Path "C:\Clusterstorage\Volume01\*.vhd*" -Recurse > c:\vmpaths.txt
    
  2. 다음 예제 Robocopy 명령을 사용하여 1단계에서 결정된 최상위 경로를 사용하여 먼저 VM을 Windows Server 2012 R2로 복사합니다.

    Robocopy \\2012R2-Clus01\c$\clusterstorage\volume01\Hyper-V\ \\20H2-Clus01\c$\clusterstorage\volume01\Hyper-V\ /E /MT:32 /R:0 /w:1 /NFL /NDL /copyall /log:c:\log.txt /xf

  3. Windows Server 2012 R2 클러스터에서 사용되는 가상 스위치(VMSwitch) 이름이 Windows 2008 R2 또는 Windows Server 2008 R2-SP1 원본에 사용되는 스위치 이름과 같은지 확인합니다. 클러스터의 모든 서버에서 사용되는 스위치 이름을 표시하려면 다음을 사용합니다.

    Get-VMSwitch -CimSession $Servers | Select-Object Name
    

    필요에 따라 Windows Server 20212 R2의 스위치 이름 이름을 바꿉니다. 클러스터의 모든 서버에서 스위치 이름을 바꾸려면 다음을 사용합니다.

    Invoke-Command -ComputerName $Servers -ScriptBlock {rename-VMSwitch -Name $using:vSwitcholdName -NewName $using:vSwitchnewname}
    
  4. VM을 복사하여 Windows Server 2012 R2로 가져옵니다.

    Get-ChildItem -Path "c:\clusterstorage\volume01\Hyper-V\*.xml"-Recurse
    
    Get-ChildItem -Path "c:\clusterstorage\volume01\image\*.xml" -Recurse    | Import-VM -Register | Get-VM | Add-ClusterVirtualMachineRole  
    
  5. Windows Server 2012 R2에서 모든 VM에 대해 VM 버전을 5.0으로 업데이트합니다.

    Get-VM | Update-VMVersion -Force
    
  6. 마이그레이션 스크립트를 실행 하여 VM을 Azure Stack HCI에 복사합니다.

  7. VM 가져오기 프로세스를 따라 3단계와 4단계를 다음으로 바꿔서 XML 파일을 처리하고 VM을 Azure Stack HCI로 가져옵니다.

    Get-ChildItem -Path "c:\clusterstorage\volume01\Hyper-V\*.xml"-Recurse
    
    Get-ChildItem -Path "c:\clusterstorage\volume01\image\*.xml" -Recurse    | Import-VM -Register | Get-VM | Add-ClusterVirtualMachineRole  
    
  8. VM 가져오기의 나머지 단계를 완료합니다.

옵션 2: 직접 VHD 복사

이 메서드는 Robocopy를 사용하여 Windows 2008 SP1, Windows 2008 R2-SP1 및 Windows 2012에서 호스트되는 VM VHD를 Azure Stack HCI에 복사합니다. 이렇게 하면 이러한 이전 VM에 대해 지원되는 최소 VM 버전 제한이 무시됩니다. Windows Server 2008 SP1 및 Windows Server 2008 R2-SP1에서 호스트되는 VM에는 이 옵션을 사용하는 것이 좋습니다.

Windows 2008 SP1 및 Windows 2008 R2-SP1에서 호스트되는 VM은 1세대 VHD가 있는 1세대 VM만 지원합니다. 따라서 복사된 VHD를 새 VM에 연결할 수 있도록 Azure Stack HCI에서 해당 1세대 VM을 만들어야 합니다. 이러한 VHD는 2세대 VHD로 업그레이드할 수 없습니다.

참고

Windows Server 2012 1세대 및 2세대 VM을 모두 지원합니다.

사용하는 프로세스는 다음과 같습니다.

  1. 예제 Robocopy를 사용하여 VM VHD를 Azure Stack HCI에 직접 복사합니다.

    Robocopy \\2012R2-Clus01\c$\clusterstorage\volume01\Hyper-V\ \\20H2-Clus01\c$\clusterstorage\volume01\Hyper-V\ /E /MT:32 /R:0 /w:1 /NFL /NDL /copyall /log:c:\log.txt /xf

  2. 새 1세대 VM을 만듭니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 VM 관리를 참조하세요.

  3. 복사한 VHD 파일을 새 VM에 연결합니다. 자세한 내용은 VHD(가상 하드 디스크) 관리를 참조하세요.

다음 Windows Server 게스트 운영 체제는 2세대 VM을 지원합니다.

  • Windows Server 2019
  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2012
  • Windows 10
  • 64비트 버전의 Windows 8.1(64비트)
  • 64비트 버전의 Windows 8(64비트)
  • Linux( 지원되는 Linux 및 FreeBSD VM 참조)

다음 단계