Microsoft MVP성태의 닷넷 이야기
Windows: 63. 윈도우 서버 2012 - Hyper-V의 새로운 기능 Live Migration [링크 복사], [링크+제목 복사],
조회: 29561
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 2개 있습니다.)
(시리즈 글이 12개 있습니다.)
Windows: 63. 윈도우 서버 2012 - Hyper-V의 새로운 기능 Live Migration
; https://www.sysnet.pe.kr/2/0/1356

개발 환경 구성: 211. Hyper-V - Generation 2 유형의 VM 생성 시 ISO 부팅이 안된다면?
; https://www.sysnet.pe.kr/2/0/1603

개발 환경 구성: 236. Hyper-V에 설치한 리눅스 VM의 VHD 크기 늘리는 방법
; https://www.sysnet.pe.kr/2/0/1742

개발 환경 구성: 317. Hyper-V 내의 VM에서 다시 Hyper-V를 설치: Nested Virtualization
; https://www.sysnet.pe.kr/2/0/11218

개발 환경 구성: 405. Hyper-V 가상 머신에서 직렬 포트(Serial Port, COM Port) 사용
; https://www.sysnet.pe.kr/2/0/11720

.NET Framework: 798. C# - Hyper-V 가상 머신의 직렬 포트와 연결된 Named Pipe 간의 통신
; https://www.sysnet.pe.kr/2/0/11722

디버깅 기술: 169. Hyper-V의 VM에 대한 메모리 덤프를 뜨는 방법
; https://www.sysnet.pe.kr/2/0/12284

개발 환경 구성: 608. Hyper-V 가상 머신에 Console 모드로 로그인하는 방법
; https://www.sysnet.pe.kr/2/0/12859

개발 환경 구성: 664. Hyper-V에 설치한 리눅스 VM의 VHD 크기 늘리는 방법 - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/13246

Windows: 259. Hyper-V Generation 1 유형의 VM을 Generation 2 유형으로 바꾸는 방법
; https://www.sysnet.pe.kr/2/0/13564

개발 환경 구성: 718. Hyper-V - 리눅스 VM에 새로운 디스크 추가
; https://www.sysnet.pe.kr/2/0/13706

Windows: 280. Hyper-V의 3가지 Thread Scheduler (Classic, Core, Root)
; https://www.sysnet.pe.kr/2/0/13901




윈도우 서버 2012 - Hyper-V의 새로운 기능 Live Migration

24GB 메모리로 퍽퍽하게 구성했던 테스트 시스템에 64GB 메모리의 시스템이 새롭게 추가되어 마음이 넉넉해졌는데요. ^^

64GB 램을 가진 새로운 작업 PC
; https://www.sysnet.pe.kr/0/0/442

더욱 즐거운 것은, 새롭게 2012에 추가된 "Live Migration" 기능으로 시스템 간 VM 이동이 너무나 간편해졌다는 점입니다. 기존의 Windows Server 2008 R2에서는 VM 이동을 하려면 우선 VM 인스턴스를 중지시키고 "Export..." 메뉴를 선택하여 내보내기한 다음, 그것을 대상 컴퓨터에 복사한 후 거기서 다시 "Import Virtual Machine..." 메뉴를 이용하여 가져오기를 하는 복잡한 절차를 거쳤습니다.

그런데, 이제는 Hyper-V 관리 콘솔에서 "Move..." 메뉴를 선택함으로써 VM 이동이 가능하다는 것 자체도 편리한데, 거기에다 VM 인스턴스를 멈출 필요가 없어 서비스가 중지되지 않는다는 대단한 장점이 있습니다. (물론, VMWare의 vSphere 같은 제품들에서는 이미 지원하던 기능이었지만, Hyper-V는 윈도우 라이선스만 있으면 무료라는 차이점이 있습니다.)

실제로 Live migration을 사용해 보니, 그 관리의 편이성에 웃음이 다 나왔습니다. ^^




우선, Live migration이 되려면 Hyper-V가 설치된 양측 컴퓨터 모두 "Live migration" 설정이 되어 있어야 합니다. 이 말인즉, 양쪽의 컴퓨터 모두 Windows Server 2012이어야만 가능한 기능입니다.

설정 방법은 Hyper-V 관리자에서 "Enable incoming and outgoing live migrations" 옵션을 켜주시면 됩니다.

hyper-v_live_mig_1.png

세부 옵션을 통해서, 동시 마이그레이션을 할 인스턴스의 수와 IP를 지정할 수 있습니다. 이 중에서 IP 옵션 지정은 쓸만합니다. 왜냐하면, 호스트 머신에서 VM을 위해 할당된 네트워크 카드로 "live migration"을 지정하면 네트워크 대역폭에 문제가 발생할 여지가 있기 때문입니다. VM 인스턴스가 보통 수십 ~ 수백 GB에 달하기 때문에, 서비스 중인 VM들의 원활한 통신을 위해서는 별도의 네트워크 카드를 양측 Hyper-V 머신에 추가해서 분리된 네트워크 망을 이용하는 것이 권장됩니다. (또는, cross-cable 등으로 직접 연결하거나.)

참고로, 만약 sender PC에서 "Live migration" 설정이 안 된 경우 다음과 같은 오류가 나오고,

Live migrations are not enabled on this computer.

This computer is not configured for live migration of virtual machines. To enable live migration, modify the Hyper-V settings.


receiver PC에서 설정이 안 된 경우에는 다음과 같은 오류가 "Move..." 기능을 사용할 때 발생합니다.

The destination computer "..." is not configured to send or receive live migrations of virtual machines. To fix this problem, modify the Hyper-V settings on the destination computer.

The destination computer is not configured to send or receive live migrations of virtual machines.


그 외, 강제 사항은 아니지만 2가지 정도 구성을 맞춰주는 것이 좋은데요. 하나는, Hyper-V 호스트 측의 하드 디스크 구성입니다. 예를 들어, 이동하려는 VM이 sender PC에서는 "E:\" 드라이브에 있었는데, receiver PC에서는 C와 D드라이브만 있다면 "Move..." 기능 사용 시에 다음과 같은 오류 화면이 나옵니다.

There was an error during move operation.

Virtual machine migration operation failed at migration destination.

Failed to create planned Virtual Machine at migration destination.

Failed to create external configuration store at 'E:\...\win2008r2': The system cannot find the path specified.. (0x80070003)


오류라고는 하지만, 위의 메시지를 뿌려준 후 새롭게 복사될 폴더를 지정할 수 있는 화면이 제공되기 때문에 마이그레이션 작업에는 영향이 없지만, 그래도 관리의 편이성을 생각하면 양측 모두 유사한 디스크 환경을 마련해 주는 것이 좋을 듯 싶습니다.

또 다른 하나도 마찬가지 형식의 오류인데요. 보통 Hyper-V 호스트 측에서 네트워크 카드를 VM 측에 가상화로 제공해 주면서 "Virtual Switch"를 만드는데, sender PC의 Hyper-V에서는 "TestNet"이라는 이름으로 제공한 경우, receiver PC의 Hyper-V에 그 이름의 "Virtual Switch"가 없다면 오류가 발생합니다. 역시나 오류 화면이 뜨지만, receiver PC에서 제공되는 "Virtual Switch"를 지정할 수 있는 화면이 이어서 제공되기 때문에 마이그레이션을 계속할 수는 있지만, 관리상으로 보면 둘 다 똑같은 것이 좋기 때문에 역시 맞춰주는 것이 좋겠습니다.

이것으로 양측의 hyper-v에 대한 설정은 끝이 납니다.




이후, live migration을 하는 것은 너무나 쉽습니다. sender PC 측의 hyper-v 관리자에서 대상 VM을 선택하고 "Move..." 메뉴를 선택하는 것으로 시작되는데요.

hyper-v_live_mig_2.png

VM을 옮길 것인지 / VM에 속한 storage 파일(예: vhd)을 옮길 것인지를 선택할 수 있습니다.

hyper-v_live_mig_3.png

제 경우에는 VM으로 진행하고, 각각의 VM이 별도의 폴더로 관리되도록 "Move the virtual machine's data by selecting where to move the items." 옵션을 선택했습니다.

hyper-v_live_mig_4.png

마지막으로, VHD 파일은 VM과 같은 경로에 놓이도록 "Move the virtual machine's data automatically"로 지정하면,

hyper-v_live_mig_5.png

이후, VM이 대상 Hyper-V 머신으로 이동을 합니다. 물론 ^^ 번개처럼 이동하지는 않기 때문에 다음과 같이 진행 상태를 Hyper-V 관리 콘솔을 이용해서 확인할 수 있고,

hyper-v_live_mig_6.png

위의 작업이 모두 완료되면, 원본 Hyper-V에서는 VM이 자동으로 삭제되고, 대상 Hyper-V에서 VM이 서비스를 계속하게 됩니다.

오~~~ 너무 멋지지 않나요? ^^





[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 2/24/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2012-09-26 11시26분
[Lyn] 와... 이게 된단말이에요?
[guest]
2012-09-27 12시30분
"Lyn" 님... 그러게요. 이런게 된다네요. ^^ 세상 많이 좋아졌습니다.
정성태
2012-09-27 03시59분
[Lyn] 글을 읽으면서 제 머리속에선 "이런걸 주문받았으면 내가 구현할 수 있었을까?" 라는 함수에서 No를 리턴하고 있습니다 (...)
[guest]
2012-09-27 01시40분
^^ 운영체제 기술을 가지고 있다는 것이 대단한 것 같습니다.
정성태
2012-09-28 02시56분
[wafe] 이번에 윈도우8을 깔고 Hyper-V 세팅을 해 봤는데 Move... 메뉴가 있더군요. 윈8에서도 되나 보죠?
[guest]
2012-09-29 02시08분
"wafe"님 덧글 보고 ^^ 윈도우 8을 살펴봤는데, Live migration 기능이 부분적으로 제공됩니다. 즉, Storage만 옮길 수 있는 것으로, 운영 중에 VHD 파일만 다른 서버로 옮기는 것이 가능합니다. 그렇게 되면, 해당 VHD 파일을 기반으로 대상 서버에서 다시 VM을 만들어 주는 식으로 복원이 됩니다. 윈도우 8이 클라이언트 운영체제라는 것을 감안하면, 그 정도 기능이면 충분하지 않을까 싶습니다. ^^
정성태

... 121  122  123  124  125  126  127  128  129  130  [131]  132  133  134  135  ...
NoWriterDateCnt.TitleFile(s)
1780정성태10/15/201424171오류 유형: 249. The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID
1779정성태10/15/201419690오류 유형: 248. Active Directory에서 OU가 지워지지 않는 경우
1778정성태10/10/201418145오류 유형: 247. The Netlogon service could not create server share C:\Windows\SYSVOL\sysvol\[도메인명]\SCRIPTS.
1777정성태10/10/201421233오류 유형: 246. The processing of Group Policy failed. Windows attempted to read the file \\[도메인]\sysvol\[도메인]\Policies\{...GUID...}\gpt.ini
1776정성태10/10/201418284오류 유형: 245. 이벤트 로그 - Name resolution for the name _ldap._tcp.dc._msdcs.[도메인명]. timed out after none of the configured DNS servers responded.
1775정성태10/9/201419402오류 유형: 244. Visual Studio 디버깅 (2) - Unable to break execution. This process is not currently executing the type of code that you selected to debug.
1774정성태10/9/201426604개발 환경 구성: 246. IIS 작업자 프로세스의 20분 자동 재생(Recycle)을 끄는 방법
1773정성태10/8/201429772.NET Framework: 471. 웹 브라우저로 다운로드가 되는 파일을 왜 C# 코드로 하면 안되는 걸까요? [1]
1772정성태10/3/201418559.NET Framework: 470. C# 3.0의 기본 인자(default parameter)가 .NET 1.1/2.0에서도 실행될까? [3]
1771정성태10/2/201428058개발 환경 구성: 245. 실행된 프로세스(EXE)의 명령행 인자를 확인하고 싶다면 - Sysmon [4]
1770정성태10/2/201421682개발 환경 구성: 244. 매크로 정의를 이용해 파일 하나로 C++과 C#에서 공유하는 방법 [1]파일 다운로드1
1769정성태10/1/201424105개발 환경 구성: 243. Scala 개발 환경 구성(JVM, 닷넷) [1]
1768정성태10/1/201419523개발 환경 구성: 242. 배치 파일에서 Thread.Sleep 효과를 주는 방법 [5]
1767정성태10/1/201424627VS.NET IDE: 94. Visual Studio 2012/2013에서의 매크로 구현 - Visual Commander [2]
1766정성태10/1/201422468개발 환경 구성: 241. 책 "프로그래밍 클로저: Lisp"을 읽고 나서. [1]
1765정성태9/30/201426047.NET Framework: 469. Unity3d에서 transform을 변수에 할당해 사용하는 특별한 이유가 있을까요?
1764정성태9/30/201422273오류 유형: 243. 파일 삭제가 안 되는 경우 - The action can't be comleted because the file is open in System
1763정성태9/30/201423848.NET Framework: 468. PDB 파일을 연동해 소스 코드 라인 정보를 알아내는 방법파일 다운로드1
1762정성태9/30/201424547.NET Framework: 467. 닷넷에서 EIP/RIP 레지스터 값을 구하는 방법 [1]파일 다운로드1
1761정성태9/29/201421565.NET Framework: 466. 윈도우 운영체제의 보안 그룹 이름 및 설명 문자열을 바꾸는 방법파일 다운로드1
1760정성태9/28/201419823.NET Framework: 465. ICorProfilerInfo::GetILToNativeMapping 메서드가 0x80131358을 반환하는 경우
1759정성태9/27/201430969개발 환경 구성: 240. Visual C++ / x64 환경에서 inline-assembly를 매크로 어셈블리로 대체하는 방법파일 다운로드1
1758정성태9/23/201437869개발 환경 구성: 239. 원격 데스크톱 접속(RDP)을 기존의 콘솔 모드처럼 사용하는 방법 [1]
1757정성태9/23/201418396오류 유형: 242. Lync로 모임 참여 시 소리만 들리지 않는 경우 - 두 번째 이야기
1756정성태9/23/201427396기타: 48. NVidia 제품의 과다한 디스크 사용 [2]
1755정성태9/22/201434199오류 유형: 241. Unity Web Player를 설치해도 여전히 설치하라는 화면이 나오는 경우 [4]
... 121  122  123  124  125  126  127  128  129  130  [131]  132  133  134  135  ...