Microsoft MVP성태의 닷넷 이야기
Windows: 63. 윈도우 서버 2012 - Hyper-V의 새로운 기능 Live Migration [링크 복사], [링크+제목 복사]
조회: 15452
글쓴 사람
홈페이지
첨부 파일
 

윈도우 서버 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 이 서비스를 계속하게 됩니다.

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





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





[최초 등록일: ]
[최종 수정일: 9/27/2012 ]

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

비밀번호

댓글 쓴 사람
 



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

[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
12041정성태10/23/20193오류 유형: 572. mstest.exe - The load test results database could not be opened.
12040정성태10/23/20194오류 유형: 571. Unhandled Exception: System.Net.Mail.SmtpException: Transaction failed. The server response was: 5.2.0 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied
12039정성태10/22/201915스크립트: 16. cmd.exe의 for 문에서는 ERRORLEVEL이 설정되지 않는 문제
12038정성태10/17/201932오류 유형: 570. SQL Server 2019 RC1 - SQL Client Connectivity SDK 설치 오류
12037정성태10/15/2019132.NET Framework: 867. C# - Encoding.Default 값을 바꿀 수 있을까요?파일 다운로드1
12036정성태10/21/201998.NET Framework: 866. C# - 고성능이 필요한 환경에서 GC가 발생하지 않는 네이티브 힙 사용파일 다운로드1
12035정성태10/13/201997개발 환경 구성: 461. C# 8.0의 #nulable 관련 특성을 .NET Framework 프로젝트에서 사용하는 방법파일 다운로드1
12034정성태10/12/2019157개발 환경 구성: 460. .NET Core 환경에서 (프로젝트가 아닌) C# 코드 파일을 입력으로 컴파일하는 방법 [1]
12033정성태10/11/2019114개발 환경 구성: 459. .NET Framework 프로젝트에서 C# 8.0 컴파일러를 사용하는 방법
12032정성태10/8/201990.NET Framework: 865. .NET Core 2.2/3.0 웹 프로젝트를 IIS에서 호스팅(Inproc, out-of-proc)하는 방법 - AspNetCoreModuleV2 소개
12031정성태10/7/201932오류 유형: 569. Azure Site Extension 업그레이드 시 "System.IO.IOException: There is not enough space on the disk" 예외 발생
12030정성태10/21/2019892.NET Framework: 864. .NET Conf 2019 Korea - "닷넷 17년의 변화 정리 및 닷넷 코어 3.0" 발표 자료 [1]파일 다운로드1
12029정성태9/27/2019108제니퍼 .NET: 29. Jennifersoft provides a trial promotion on its APM solution such as JENNIFER, PHP, and .NET in 2019 and shares the examples of their application.
12028정성태9/26/2019135.NET Framework: 863. C# - Thread.Suspend 호출 시 응용 프로그램 hang 현상을 해결하기 위한 시도파일 다운로드1
12027정성태9/26/201949오류 유형: 568. Consider app.config remapping of assembly "..." from Version "..." [...] to Version "..." [...] to solve conflict and get rid of warning.
12026정성태9/26/201964.NET Framework: 862. C# - Active Directory의 LDAP 경로 및 정보 조회
12025정성태9/25/2019164제니퍼 .NET: 28. APM 솔루션 제니퍼, PHP, .NET 무료 사용 프로모션 2019 및 적용 사례 (8)
12024정성태9/20/2019152.NET Framework: 861. HttpClient와 HttpClientHandler의 관계
12023정성태9/19/2019192.NET Framework: 860. ServicePointManager.DefaultConnectionLimit와 HttpClient의 관계파일 다운로드1
12022정성태9/12/2019408개발 환경 구성: 458. C# 8.0 (Preview) 신규 문법을 위한 개발 환경 구성 [3]
12021정성태9/12/2019175[예약]
12020정성태9/11/2019135VC++: 134. SYSTEMTIME 값 기준으로 특정 시간이 지났는지를 판단하는 함수
12019정성태9/11/2019135Linux: 23. .NET Core + 리눅스 환경에서 Environment.CurrentDirectory 접근 시 주의 사항
12018정성태9/25/201984오류 유형: 567. IIS - Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive. (D:\lowSite4\web.config line 11)
12017정성태9/11/2019303오류 유형: 566. 비주얼 스튜디오 - Failed to register URL "http://localhost:6879/" for site "..." application "/". Error description: Access is denied. (0x80070005)
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...