Virtual Machine With Raw Image

Bookmark and Share

Raw(국어로는 뭐라 표현해야 하나?) 이미지를 이용하는 방식에 대한 시험이다. VM에게 raw partition이나 lvm 볼륨을 주지 않고 이미지 파일을 할당할 경우, Qcow 방식 또는 Raw 이미지 방식 등에서 고를 수 있다. (물론 vmdk 방식도 있고) 그 중 raw 이미지를 사용하는 경우에는 다음과 같은 장단점을 갖게 된다.

  • disk를 미리 할당하기 때문에 이미지가 VM 입장에서의 디스크 크기보다 커지는 일이 없다.
  • 그런데 hole을 지원하는 파일시스템에서는 최소한의 공간만 활용하도록 하는 것도 가능하다.
  • 단, snapshot 방식이나 base image 방식을 사용하여 변경점을 추적하거나 할 수가 없다.

대충은 그런데, … 어쨌든 다양한 시도와 시험이 필요한 시기이다.

설치하기

설치 스크립트

설치하기

설치 스크립트를 이용하여 다음과 같이 진행하였다.

sio4@jangseung:/box/vms$ ./create-vm.sh 
name of vm: u904j64t
size of ram: 512
number of cpus: 2
path of cdrom: 
disk size of sys: 4
disk size of opt: 8
Formatting '/box/vms/u904j64t/u904j64t-sys.img', fmt=raw, size=4194304 kB
Formatting '/box/vms/u904j64t/u904j64t-opt.img', fmt=raw, size=8388608 kB
Connecting to uri: qemu:///system
Domain u904j64t defined from u904j64t/u904j64t.xml

sio4@jangseung:/box/vms$

이번엔 별도의 /tmp용 파티션을 만들지 않았다. swap도 마찬가지다. 어떤 것이 가장 적절한 파일시스템 구조인지 아직 잘… 모르겠다. 일단 이렇게 저렇게 해보고, 그리고 유연하게 가자.(정적 영역, 동적 영역, 임시 영역 등에 대한 관리는 다음 기회에 다시 고민하기) 그리고또 한 가지가 cdrom을 미리 지정하지 않았다. virt-manager의 cdrom 지정 기능을 써보려는 것이다. 일단은 그냥 예전처럼 스크립트로 간다.

예전같으면 이렇게 했을 텐데,

sio4@jangseung:/box/vms$ virt-viewer -c qemu:///system --wait u904j64t &
[1] 21899
sio4@jangseung:/box/vms$ virsh start u904j64t
Connecting to uri: qemu:///system
Domain u904j64t started

sio4@jangseung:/box/vms$

일단은 virt-manager에서 vm 목록에 대한 컨텍스트 메뉴의 "Run" 메뉴와 "Open" 메뉴를 이용하여 시스템을 시작시키고 콘솔을 보면서 작업을 진행하였다. 일단 설치는 정상적으로 끝났다. (지난 번 qcow2 이미지를 사용한 방식에서는 디스크가 둘 이상인 경우에는 부트로더 설치 과정에서 오류가 났었는데…)

이제 재부팅 순서.

virt-manager에서 "Detail" 메뉴를 선택하여 CDROM을 제거하고 Boot Option을 hd로 바꾸어 재부팅을 시도하였다. 그런데 역시 안되네… 이미 실행중인 VM에는 적용되지 않는 것인가? 일단 destroy시키고 수동으로 xml 설정을 바꿔줬다. (복제를 위해서라도 필요한 작업)

여기서 잠깐 작업을 멈추고 깨끗한 상태에서 복제를 한다.

(OS 설치 부분은 같은 얘기이니 다음 페이지를 참고하자. Install Ubuntu 9.04 JeOS)

복제하기

복제 스크립트

복제하기

snapshot이나 base image 방식의 작업은 cow 이미지에서만 사용할 수 있다. 그래서 raw 이미지를 기반으로 한 VM은 연결된 클론을 만들 수 없고 복제 방식을 써야 한다.

sio4@jangseung:/box/vms$ ./copyvm.sh u904j64t km
Connecting to uri: qemu:///system
Domain mykm defined from km.xml

sio4@jangseung:/box/vms$

예전에 작성해둔 스크립트를 이용하여 VM을 복제하고 등록까지 마쳤다.

그리고 이번에는 좀 다르게… raw 이미지가 네이티브에서 마운트가 가능하다는 점을 이용하여 다음과 같은 설치 후 작업을 진행한다.

sio4@jangseung:/box/vms$ sudo mount -t ext3 -o loop,offset=32256 raw-qemu.img /mnt
sio4@jangseung:/box/vms$

이렇게 로 이미지를 마운트하고,

sio4@jangseung:/box/vms$ sudo vi /mnt/etc/hostname 
sio4@jangseung:/box/vms$ sudo vi /mnt/etc/hosts

필요한 수정을 가한다. 수정 후 마운트를 풀고,

sio4@jangseung:/box/vms$ sudo umount /mnt

이제 새로운 시스템을 써보자!

풀어야 할 문제

궁금하다

raw 이미지를 복사하면 사용량이 오히려 준다. 뭐지?

sio4@jangseung:/box/vms$ cp -a u904j64t/u904j64t-opt.img new.img
sio4@jangseung:/box/vms$ du -sh mykm/* u904j64t/* new.img
3.5M    mykm/mykm-opt.img
529M    mykm/mykm-sys.img
4.0K    mykm/mykm.xml
260M    u904j64t/u904j64t-opt.img
594M    u904j64t/u904j64t-sys.img
4.0K    u904j64t/u904j64t.xml
3.5M    new.img
sio4@jangseung:/box/vms$

결과는 이렇게 생겼다. 그런데 왜? 일단, 파일시스템이 '홀'을 지원하는 방식에 대해서도 좀 알아야 할 것 같고, cp 명령이 복사하는 방식에 대해서도 알아야 할 것 같다.

어쨌든, cp 명령은 Sparse file을 잘 처리한다. 그런데 tar를 이용하여 이 VM을 보관할 때에는 옵션에 -S 즉, —sparse 옵션에 주의하여야 한다. (그렇지 않으면 파일의 크기가 본 크기로 커져버린다.)

(Sparse File 알아보기)

Bookmark and Share


따로 명시하지 않는 한에서 이 사이트의 모든 콘텐츠는 다음의 라이선스를 따릅니다: Creative Commons Attribution-NonCommercial 3.0 License