4.4. virsh를 통한 실시간 KVM 마이그레이션
virsh 명령을 사용하여 게스트 가상 머신을 다른 호스트 물리적 시스템으로 마이그레이션할 수 있습니다. migrate 명령은 다음 형식의 매개 변수를 허용합니다.
# virsh migrate --live GuestName DestinationURL
실시간 마이그레이션이 필요하지 않은 경우
--live 옵션이 제거될 수 있습니다. 추가 옵션은 4.4.2절. “virsh migrate 명령에 대한 추가 옵션” 에 나열됩니다.
GuestName 매개변수는 마이그레이션할 게스트 가상 머신의 이름을 나타냅니다.
DestinationURL 매개변수는 대상 호스트 물리적 시스템의 연결 URL입니다. 대상 시스템은 동일한 하이퍼바이저를 사용하고 libvirt 가 실행되고 있는 동일한 버전의 Red Hat Enterprise Linux를 실행해야 합니다.
참고
일반 마이그레이션 및 피어 투 피어 마이그레이션을 위한
DestinationURL 매개변수는 다른 의미가 있습니다.
- 일반 마이그레이션:
DestinationURL은 소스 게스트 가상 머신에 표시된 대로 대상 호스트 물리적 시스템의 URL입니다. - 피어 투 피어 마이그레이션:
DestinationURL은 소스 호스트 물리적 시스템에서 표시된 대로 대상 호스트 물리적 시스템의 URL입니다.
명령을 입력하면 대상 시스템의 루트 암호를 입력하라는 메시지가 표시됩니다.
중요
마이그레이션이 성공하려면 소스 서버의
/etc/hosts 파일에 있는 대상 호스트 물리적 시스템에 대한 항목이 필요합니다. 다음 예에 표시된 대로 이 파일에서 대상 호스트 물리적 시스템의 IP 주소 및 호스트 이름을 입력합니다. 이 예에서는 대상 호스트 물리적 시스템의 IP 주소와 호스트 이름을 대체합니다.
10.0.0.20 host2.example.com
예: virsh를 사용한 실시간 마이그레이션
이 예에서는 host1.example.com 에서 host2.example.com 으로 마이그레이션합니다. 환경의 호스트 물리적 시스템 이름을 변경합니다. 이 예에서는 guest1-rhel6-64 라는 가상 머신을 마이그레이션합니다.
이 예제에서는 공유 스토리지를 완전히 구성하고 모든 사전 요구 사항을 충족한다고 가정합니다(여기에 나열됨: 마이그레이션 요구 사항).
게스트 가상 머신이 실행 중인지 확인
소스 시스템host1.example.com에서guest1-rhel6-64가 실행 중인지 확인합니다.[root@host1 ~]# virsh list Id Name State ---------------------------------- 10 guest1-rhel6-64 running게스트 가상 머신 마이그레이션
다음 명령을 실행하여 게스트 가상 머신을 대상host2.example.com으로 실시간 마이그레이션합니다. libvirt에 전체 액세스 권한이 필요함을 확인하기 위해 대상 URL의 끝에/system을 추가합니다.# virsh migrate --live guest1-rhel6-64 qemu+ssh://host2.example.com/system명령을 입력하면 대상 시스템의 루트 암호를 입력하라는 메시지가 표시됩니다.wait
마이그레이션은 게스트 가상 시스템의 로드 및 크기에 따라 다소 시간이 걸릴 수 있습니다. virsh 는 오류만 보고합니다. 게스트 가상 시스템은 완전히 마이그레이션될 때까지 소스 호스트 물리적 시스템에서 계속 실행됩니다.참고마이그레이션 중에 완료 백분율 표시 수는 프로세스가 완료되기 전에 여러 번 감소할 수 있습니다. 이는 마이그레이션을 시작한 후 변경된 소스 메모리 페이지를 다시 복사해야 하므로 전체 진행 상황을 다시 계산하기 때문입니다. 따라서 이 동작이 예상되며 마이그레이션에 문제가 표시되지 않습니다.게스트 가상 머신이 대상 호스트에 도착했는지 확인합니다.
대상 시스템host2.example.com에서guest1-rhel6-64가 실행 중인지 확인합니다.[root@host2 ~]# virsh list Id Name State ---------------------------------- 10 guest1-rhel6-64 running
실시간 마이그레이션이 완료되었습니다.
참고
libvirt는 TLS/SSL, UNIX 소켓, SSH 및 암호화되지 않은 TCP를 포함한 다양한 네트워킹 방법을 지원합니다. 다른 방법을 사용하는 방법에 대한 자세한 내용은 5장. 원격 게스트 관리 를 참조하십시오.
참고
virsh migrate 명령을 사용하여 실행 중이 아닌 게스트 가상 머신을 마이그레이션할 수 없습니다. 실행 중인 게스트 가상 머신을 마이그레이션하려면 다음 스크립트를 사용해야 합니다.
virsh dumpxml Guest1 > Guest1.xml
virsh -c qemu+ssh://<target-system-FQDN> define Guest1.xml
virsh undefine Guest1
4.4.1. virsh로 마이그레이션에 대한 추가 팁 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
각 마이그레이션이 별도의 명령 쉘에서 실행되는 여러 개의 동시 실시간 마이그레이션을 수행할 수 있습니다. 그러나 이 작업은 주의해서 수행해야 하며 각 마이그레이션 인스턴스가 각 측면(소스 및 대상)에서 하나의 MAX_CLIENT를 사용하므로 주의해야 합니다. 기본 설정은 20이므로 설정을 변경하지 않고 10개의 인스턴스를 실행하기에 충분합니다. 설정을 변경해야 하는 경우 절차 4.1. “libvirtd.conf 구성” 절차를 참조하십시오.
- 절차 4.1. “libvirtd.conf 구성” 에 설명된 대로 libvirtd.conf 파일을 엽니다.
- 처리 제어 섹션을 찾습니다.
################################################################# # # Processing controls # # The maximum number of concurrent client connections to allow # over all sockets combined. #max_clients = 20 # The minimum limit sets the number of workers to start up # initially. If the number of active clients exceeds this, # then more threads are spawned, upto max_workers limit. # Typically you'd want max_workers to equal maximum number # of clients allowed #min_workers = 5 #max_workers = 20 # The number of priority workers. If all workers from above # pool will stuck, some calls marked as high priority # (notably domainDestroy) can be executed in this pool. #prio_workers = 5 # Total global limit on concurrent RPC calls. Should be # at least as large as max_workers. Beyond this, RPC requests # will be read into memory and queued. This directly impact # memory usage, currently each request requires 256 KB of # memory. So by default upto 5 MB of memory is used # # XXX this isn't actually enforced yet, only the per-client # limit is used so far #max_requests = 20 # Limit on concurrent requests from a single client # connection. To avoid one client monopolizing the server # this should be a small fraction of the global max_requests # and max_workers parameter #max_client_requests = 5 ################################################################# max_clients및max_workers매개 변수 설정을 변경합니다. 두 매개변수 모두에서 숫자가 동일해야 합니다.max_clients는 마이그레이션당 2개의 클라이언트를 사용하고max_workers는 종료 단계에서 수행 단계에서 대상의 작업자 1명과 대상의 작업자 1개를 소스에 사용합니다.중요max_clients및max_workers매개 변수 설정은 libvirtd 서비스에 대한 모든 게스트 가상 머신 연결에 적용됩니다. 즉, 동일한 게스트 가상 머신을 사용하고 동시에 마이그레이션을 수행하는 모든 사용자는max_clients및max_workers매개 변수 설정에 설정된 제한으로도 보류됩니다. 따라서 동시 실시간 마이그레이션을 수행하기 전에 최대값을 주의 깊게 고려해야 합니다.- 파일을 저장하고 서비스를 다시 시작합니다.참고시작되었지만 아직 인증되지 않은 ssh 세션이 너무 많기 때문에 마이그레이션 연결이 끊어지는 경우가 있을 수 있습니다. 기본적으로
sshd는 언제든지 "사전 인증됨"에 있는 세션만 10개를 허용합니다. 이 설정은 sshd 구성 파일의MaxStartups매개변수(/etc/ssh/sshd_config)에 의해 제어되며 일부 조정이 필요할 수 있습니다. DoS 공격을 방지하기 위해 제한 사항이 배치되고 일반적으로 리소스를 과도하게 사용할 수 있으므로 이 매개변수를 조정하는 작업은 주의해야 합니다. 이 값을 너무 높게 설정하면 목적을 무효화합니다. 이 매개변수를 변경하려면/etc/ssh/sshd_config파일을 편집하고 MaxStartups 행의 시작 위치에서 # 을 제거하고,10(기본값)을 더 높은 숫자로 변경합니다. 파일을 저장하고sshd서비스를 다시 시작하십시오. 자세한 내용은sshd_config매뉴얼 페이지를 참조하십시오.