가상화와 QEMU/KVM · 디스크 이미지: qcow2, 백킹파일, 스냅샷 · 실습
qcow2 이미지 다루기
목표
qcow2 이미지를 만들고, 정보를 읽고, 변환하고, 백킹 체인을 세워 골든 이미지 패턴을 손으로 재현합니다.
왜 중요한가
qcow2 의 진짜 힘은 백킹 파일입니다. 읽기는 백킹에서, 쓰기는 오버레이에만 하기 때문에 골든 이미지 하나로 VM 수십 대를 만들 수 있습니다. 여기에는 두 가지 규칙이 따라옵니다. 백킹 파일은 절대 수정하면 안 되고(오버레이가 조용히 깨집니다), 백킹 경로가 이미지 안에 기록되므로 파일을 옮기면 rebase 로 참조를 고쳐야 합니다. 그리고 qemu-img info 의 virtual size 와 disk size 를 구분하지 못하면 씬 프로비저닝 오버커밋을 놓칩니다.
단계
1. /root/vm 디렉터리를 만들고 /root/vm/base.qcow2 를 2G 크기의 qcow2 로 만드세요.
2. 그 이미지의 가상 크기(바이트) 와 실제 점유(바이트) 를 각각 한 줄씩(가상 크기가 먼저) /root/vm/size.txt 에 적으세요. 실제 점유가 가상 크기보다 훨씬 작아야 합니다.
3. /root/vm/plain.raw 를 raw 포맷 2G 로 만들고, qcow2 와 raw 의 실제 점유를 qcow2=<바이트> / raw=<바이트> 두 줄로 /root/vm/formats.txt 에 적으세요.
4. plain.raw 를 qcow2 로 변환해 /root/vm/converted.qcow2 를 만드세요. qemu-img info 에서 포맷이 qcow2 로 나와야 합니다.
5. base.qcow2 를 백킹으로 하는 오버레이 /root/vm/vm01.qcow2 를 만드세요. 백킹 포맷을 명시해야 합니다.
6. cluster_size 를 1M 로 지정한 /root/vm/big.qcow2 를 4G 로 만들고, qemu-img info 출력에서 cluster_size 가 보이는 줄을 /root/vm/cluster.txt 로 저장하세요.
7. base.qcow2 를 /root/vm/golden/base.qcow2 로 옮기고, vm01.qcow2 의 백킹 참조를 새 경로로 고치세요. 고친 뒤 qemu-img info --backing-chain /root/vm/vm01.qcow2 가 오류 없이 두 이미지를 모두 보여 줘야 하며, 그 출력을 /root/vm/chain.txt 로 저장하세요.
8. /root/vm/inventory.csv 를 만드세요. 첫 줄은 file,format,virtual_size,backing 헤더이고, vm01.qcow2, converted.qcow2, big.qcow2 세 이미지에 대해 각각 한 줄씩 적으세요. backing 은 백킹 파일 경로 또는 none 입니다.
참고
qemu-img create -f qcow2 <파일> 2G,qemu-img info --output=json <파일>,qemu-img convert -f raw -O qcow2 <입력> <출력>순서입니다.- 오버레이는
qemu-img create -f qcow2 -b <백킹> -F qcow2 <오버레이>입니다. - 백킹 경로 수정은
qemu-img rebase -u -F qcow2 -b <새경로> <오버레이>입니다. - 흔한 실수 1: 5번에서
-F를 빠뜨리는 경우. 최근 qemu-img 는 경고를 내거나 거부합니다. - 흔한 실수 2: 7번에서 파일만 옮기고 rebase 를 안 하면
Could not open backing file이 납니다.
단계 8개
- qcow2 이미지 만들기
- 가상 크기와 실제 크기
- raw 와 비교
- 포맷 변환
- 백킹 파일로 오버레이 만들기
- cluster_size 지정
- 백킹 경로 바꾸기
- 이미지 인벤토리