반응형

Host OS: Ubuntu 14.04.1 Desktop (amd64)

Host OS (이동 대상): Ubuntu 14.04 Server (amd64)

Guest OS: Windows 10 (64-bit)


개인 PC에서 개인용 윈도우10 VM 하나를 만들어서 KVM에서 돌리다가, PC의 디스크 속도가 받쳐주질 못해서 서버에 옮기기로 했다.


원래 개인 PC에서 VM을 쓰려고 했던 이유는 guest OS에 원격접속할 때 네트워크 지연 시간을 극단적으로 줄이려는 목적이었고, 실제로 지연 시간은 매우 적었지만 물리적인 하드디스크 1개에서 host OS (Ubuntu)와 guest OS (Windows 10)를 모두 써 보니 전체적인 속도가 느려지고 말았다. 안 그래도 디스크를 많이 쓰는 경향이 있는데 SSD도 아니라서 bottleneck이 되고 말았다. 그래서 같은 건물에 있어서 어차피 LAN의 범위 안에 있는 자원이 충분한 서버에 VM을 옮기기로 했다.


VirtualBox처럼 간단하게 이미지 파일만 복사하면 되는 것 같지는 않아서 찾아본 결과, 나와 같은 목적으로 VM을 다른 호스트 머신에 복사해서 성공한 사례가 있었다. [1]



정리하면:


1. clone 명령으로 옮길(==복사할) 이미지를 만든다. 사실은 새로 안 만들고 바로 옮겨도 될 것 같다. 

즉, 굳이 복사할 필요성을 못 느낀다면 원래 있던 VM 이름과 이미지 파일 위치, xml 파일 위치를 기억해 두고 바로 2번부터 시작한다.


# virt-clone --original=[원래 있던 VM 이름] --name=[새로 만들 VM 이름] -f [생성할 img 파일 위치] --mac [랜카드 맥주소]


예를 들어,

# virt-clone --original=testvm1 --name=newvm -f /var/lib/libvirt/images/skylit_newvm.img --mac 00:12:34:56:78:90



2. 기존 호스트 머신에서 방금 생성한 img 파일과 설정 파일(xml)을 새로운 호스트 머신에 옮긴다.

서로 네트워크로 연결돼 있다면 scp를 쓰는 게 제일 빠를 듯. 일반적으로 virt-manager에 의해서 생성되는 VM 이미지가 저장되는 위치는 /var/lib/libvirt/images/ 이다. (루트 권한으로만 접근 가능)그리고 xml파일은 /etc/libvirt/qemu/ 에 [새로 만든 VM 이름].xml 로 생성된다.


예를 들어, 아래 두 파일을 새로운 호스트 머신으로 옮긴다.

  • /var/lib/libvirt/images/newvm.img
  • /etc/libvirt/qemu/newvm.xml



3. 새로운 호스트 서버의 콘솔에서, virt-manager에서 인식할 수 있도록 새로 옮긴 VM 이미지를 추가한다.

$ virsh define /etc/libvirt/qemu/[옮겨온 VM 이름].xml



4. 이제 virt-manager를 실행하면 목록에 방금 옮겨온 VM 이름이 추가되어 있음을 확인할 수 있다.



<주의사항>


옮겨 가는 새로운 호스트 머신의 KVM 설정에 따라서 기존 호스트 머신에서 설정한 것이 작동하지 않을 수도 있다.

대표적으로 CPU 설정, 메모리 용량, display 설정 등이 있다. 


  • CPU는 가상 CPU로 특정 모델(e.g. Intel SandyBridge)을 지정해 두었는데 새로운 호스트 머신에서 해당 CPU 모델을 가상화하지 못할 수 있으므로, CPU 프로파일을 한번 확인해 볼 필요는 있다.
  • 메모리의 경우, [1] 에서도 언급되었듯이 물리적인 전체 메모리 용량을 넘어서는 등의 자원 할당 문제가 있는지 살펴봐야 한다.
  • Display의 경우, 필자는 기존 호스트 머신에서 SPICE 프로토콜을 썼는데 옮겨 가는 새로운 호스트 머신에 SPICE를 설치해 두지 않아서 virt-manager를 통해서는 화면을 볼 수 없었다. 하지만 네트워크 관련 설정에 문제가 없어서 원격 접속하는 데에는 문제가 없었다.




<참고자료>

[1] http://serverfault.com/questions/399835/clone-kvm-qemu-vm-to-a-different-server


반응형
블로그 이미지

Bryan_

,
반응형

Host OS: Ubuntu 14.04.1 LTS (amd64)

Guest OS: Windows 10 (64-bit)


연구실 PC가 메모리가 넉넉한 편이라서(16GB) 가상 머신으로 윈도우를 시험삼아 돌려 보고 있는데, 이상하게 오랜만에 가상머신에 원격으로 접속하면 (원격 데스크탑 RDP 사용) 바탕화면이 뜨는데 상당히 오랜 시간이 걸린다. 정확히 재지 않았지만, 1분은 확실히 넘는 것 같다.


가상머신 구성은 다음과 같다:

  • 가상 머신 관리는 QEMU KVM을 사용
  • 윈도우 가상 머신에 CPU 2 Cores (물리적으로 2개, 쓰레드 기준으로 4개), 6GB 메모리, 180GB의 하드디스크를 할당
  • 평소에 항상 PC를 켜 두고, 리눅스를 주로 사용하다가 몇 시간에 한 번씩 윈도우 가상 머신에 RDP로 연결(리미너 원격 클라이언트 또는 FreeRDP 사용)

보통 맨 처음 가상 머신을 부팅시키고 나면 직접 Virtual Machine Manager 어플리케이션에서 확인하든 RDP로 원격접속하든 상관 없이 바로 바탕화면이 나오는데, 윈도우에서의 작업을 마치고 원격 접속 연결만 해제한 채 (즉, 켜진 상태로) 오랜 시간을 쓰지 않으면, 나중에 다시 접속할 때 위와 같이 상당히 오랜 시간이 걸린다. 그리고 그 때 PC의 물리적인 상태를 보면 HDD 램프가 빠르게 깜빡거리면서 하드디스크에 지속적으로 열심히 접근하고 있다.


확인해본 결과, 우분투는 기본적으로 물리적인 메모리에 상주하는 어플리케이션을 가급적이면 스왑 영역(가상 메모리 영역; 즉 하드디스크)에 옮겨 두려는 경향이 크다는 것을 알게 되었다. 그리고 그 경향을 조절하는 설정 변수가 Swappiness이다. 0부터 100 사이의 값 중에서 기본값이 60으로 되어 있다. 60이라는 숫자가 정량적으로 얼마만큼의 메모리 영역을 스왑 영역으로 보내는지는 확실하지 않지만, 경향성이 매우 높은 편에 속한다는 사실에는 이견이 없어 보인다.


인터넷에서 대부분의 우분투 사용자들이 개인 PC에서 우분투를 쓸 때 성능을 개선하기 위해서 가장 먼저 swappiness부터 조정한다는 것 또한 알 수 있었다. 설정 방법은 /etc/sysctl.conf 파일에 아래와 같이 한 줄을 추가하거나, 이미 있으면 숫자를 아래와 같이 조정한다:

vm.swappiness=10


인터넷에서는 보통 swappiness 값을 10 으로 권장하는 분위기이다. 실제로 나도 swappiness 값을 조정하고 나서 윈도우 가상 머신의 원격 데스크탑 접속 로딩 시간이 꽤 단축되는 것을 체감할 수 있었다. 하지만 여전히 몇 시간 후에 다시 접속하면 약 30초 가량의 딜레이가 발생하였다. 그래서 아예 vm.swappiness 값을 3으로 더욱 낮게 설정했더니, 그제서야 길어도 10초 이내로 바로 원격 데스크탑 화면이 나타났다.


개인적인 경험으로 볼 때, 물리적 메모리가 16GB이고 가상 머신을 한 개만 운용하고 있으며, 이외에 메모리를 많이 소비하는 다른 프로그램을 쓰지 않기 때문에 swappiness 값을 매우 낮게 줘도 앞으로 쓰는 데는 문제가 없을 것 같다.


하지만 근본적으로는 서버에서 가상 머신을 돌리는 것이 속도를 개선하는 가장 확실한 방법인 것 같다. 실제로 연구실에서 운용하는 24코어에 64GB 메모리, 5TB의 하드디스크를 갖고 있는 서버에서 동일한 스펙의 가상 머신을 돌리는 것이 개인 PC에서 돌릴 때에 비해 속도가 월등하게 빨랐다. 즉, 그래픽 측면의 이질감과 불편함(폰트 같은 것이 깔끔하게 표시되지 못하고, 게임을 실행하지 못하는 문제)만 감수할 수 있다면, 서버에서 가상 머신을 돌리는 것(결국 클라우드 환경)이 좋을 수밖에 없다.


아직 연구실에 오픈스택(OpenStack)을 적용하지는 못했는데 (당장 이 쪽으로 연구실 구성원 중에 연구주제가 있는 것은 아니고, 운영상의 목적만 있음), 서버 여러 대와 몇몇 잉여 데스크탑 본제들을 조합해서 클라우드 환경을 만들어서 돌려보고 싶다. 일단은 졸업이 급하니 졸업하고 나서 해 봐야겠다. ㅜㅜ


반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 14.04.2 LTS (amd64)


KVM에서 이미 만들어 둔 가상 머신의 디스크 크기(즉, img 파일의 크기와 직결)를 바꾸고 싶을 때 (일반적으로는 늘리고 싶을 때), 아래와 같이 하면 쉽게 된다.


디스크 크기를 변경할 VM을 종료하고 나서, VM 이미지 파일이 있는 곳으로 간다.

이미지 파일 위치는 우분투의 경우 /var/lib/libvirt/images/ 이다.

또는 virt-manager GUI에서 VM 정보 확인하는 창에서 Disk 항목을 선택해서 볼 수도 있다.




해당 디렉토리는 루트 권한이 없으면 열람이 안되기 때문에 루트 계정을 써서 접근한다.

$ cd /var/lib/libvirt/images

$ sudo su

# qemu-img resize [크기 조정할 이미지파일 이름.img] +100G

Image resized.

#


이렇게 설정하고 VM의 디스크 정보를 확인해 보면 용량이 100GB 늘어나 있는 것을 볼 수 있다.

참고로 윈도우 계열(윈도우xp, 7, 8, 10)의 경우 이미지가 늘어나더라도 내 컴퓨터에서 하드디스크를 보면 늘리기 전의 용량으로 되어 있을 텐데, "디스크 관리자"를 이용해서 파티션을 확장해 줘야 한다. (http://skylit.tistory.com/67 참고)


반응형
블로그 이미지

Bryan_

,