시간을 줄여주는 블로그(IT, Azure)

Azure VM(Linux, Windows)이 부팅되지 않을 때 조치 방법(Nested Hyper-V) 본문

Azure/Azure Virtual Machine

Azure VM(Linux, Windows)이 부팅되지 않을 때 조치 방법(Nested Hyper-V)

서희 아빠 2020. 6. 11. 13:39

오늘은 Azure를 운영중일 때 또는 ASR이나 3rd party솔루션으로 기존 Physical/Virtual 된 장비를 복제하여 이관할 때 발생할 수 있는 일에 대해서 얘기해 보겠습니다.

보통 Azure의 marketplace에서 제공되는 이미지는 특별히 문제가 발생되지 않는데, 복제된 템플릿 이미지는 정상적으로 Azure VM으로 부팅이 되지 않을 때가 있습니다. NIC와 관련된 이슈가 대부분인데, 부트 영역이 손상되는 경우도 있을 수 있습니다.

저는 보통 다음의 단계로 문제를 확인 후 조치 합니다.

  • VM->리소스 상태를 확인하여 Azure 자체의 이슈가 있는지 확인
  • Linux : 직렬 콘솔을 통해서 연결이 되는지 확인
  • Windows : 부트진단이 활성화 되어 있으면 부트진단->스크린샷에서 정상적으로 부팅되었는지 여부 확인
  • 공통 : 정상 부팅 되었을 때 연결이 되지 않을 경우 다시 배포(Redeploy)를 실행하여 호스트 변경

일반적으로는 위 과정으로 해결이 되지만, 안될 때  최후의 보루로 하기 방법을 활용해 볼 수 있습니다.

Hyper-v나 Container를 공부해 보신 분이면 "중첩가상화" 혹은 Netsted Hyper-v라는 내용을 들어보신적 있으실 겁니다.
단순하게 생각하면 Hyper-V Host위에 구성된 VM이 Hyper-V Host가 되어 그 안에 가상화를 중첩하여 사용하는 것 입니다. Azure에서도 지원이 되고 Windows Server 2016 VM에  Hyper-V 구성하여 VM을 생성할 수 있습니다.

Intel의 VT-D와 하이퍼쓰레딩 지원하는 CPU를 쓰면 사용이 가능하며, Azure VM에서는 v3가 붙은 VM들에서 지원 합니다. 이 기술을 응용하여 Windows 컨테이너를 돌리는 것인데요, 급할 때 이 기능을 통해서 부팅 불가 이슈를 처리할 수 있습니다.

진행 순서는 다음과 같습니다.

  1. Azure VM(Windows 2016이상)으로 Nested Hyper-V를 구성합니다.(참고URL:https://docs.microsoft.com/ko-kr/azure/virtual-machines/windows/nested-virtualization)
  2. 부팅 문제가 있는 가상 머신의 OS디스크를 소스로 스냅샷을 생성 합니다.
  3. 위 과정에서 생성된 스냅샷을 소스로 디스크를 만듭니다.
  4. 생성된 디스크를 Nested Hyper-V로 구성한 VM에 추가 합니다.
  5. VM을 생성 후는 중요해서 스크린샷을 참고하여 진행 합니다.
    GEN1으로 생성, 디스크는 나중에 추가로 설정

시작->실행->diskmgmt.msc 입력하여 디스크 관리자 실행->attach된 디스크 오프라인으로 변경

Hyper-V 관리자에서 VM 설정->IDE Controller->Physical Disk로 선택 후 오프라인 된 디스크 연결(Passthrough Disk)

위 과정을 진행하면 VM을 start하여 부팅이 가능 합니다.


이후 부팅에 문제가 되는 부분을 수정(프로그램 삭제, MBR fix, IP오류등) 한 뒤 기존 문제가 되는 VM의 OS Disk와 Swap을 해 주면 부트 문제를 해결할 수 있습니다.

모르고 프로젝트할 때 너무 힘들었던 기억이 납니다. 읽는 분께 도움이 되길 바라겠습니다.

운영을 상시로 하시는 업을 가지고 계시면 만들어 놓고 꺼두세요 OS디스크는 HDD로 만드시면 큰 비용없이 급하게 필요할때 유용하게 쓸 수 있습니다. 스냅샷도 무조건 HDD입니다.

 

Comments