KVM Overlay Disk Image

+-------------------------+
|     Overlay Image 1     |
|                         |
| - Update to CentOS 5.5  |     +-------------------------+
| - Update kernel         |     |     Overlay Image 2     |
| - Install web server    |     |                         |
| - Add new user          |     | - Do nothing            |
|                         |     |                         |
|   167 MB after commit   |     |         256 kB          |
+-------------------------+     +-------------------------+
                    ^                  ^
                    |                  |
                    |                  |
             +---------------------------------+
             |                                 |
             |           Base Image            |
             |                                 |
             |       (CentOS 5.4 i386)         |
             |                                 |
             |             680 MB              |
             |                                 |
             +---------------------------------+


ในตัวอย่างนี้ เป็นการทดลองสร้าง Overlay Disk Image 2 ตัว บน Base Image ที่ติดตั้ง CentOS 5.4 โดยที่ตัวที่ 1 มีการเปลี่ยนแปลงข้อมูลใน Disk (Update/Install Software, Add User) หลังจากทำการ Commit แล้วพบว่า Overlay Disk มีขนาดเพิ่มขึ้น ในขณะที่ตัวที่ 2 ไม่มีการเปลี่ยนแปลงข้อมูลใด ๆ พบว่ามีขนาดเท่าเดิม รายละเอียดการทดลองมีดังนี้

PATH

เพื่อความสะดวกในการพิมพ์คำสั่ง kvm ที่ได้จากการ compile ในการบ้านที่ 3 (cs797-ex3) จึงมีการกำหนดตัวแปร PATH โดยใช้คำสั่ง export

$ export PATH=/opt/kvm/bin:$PATH


Create Base Image

สร้าง Disk Image สำหรับติดตั้ง Guest OS โดยกำหนดให้มีขนาด 2GB ในรูปแบบ qcow2

$ qemu-img create -f qcow2 centos_base.img 2G

Install Guest OS on Base Image

ทำการติดตั้ง CentOS 5.4 ลงบน Base Image โดยมีขั้นตอนดังนี้

- ดาวน์โหลดไฟล์สำหรับติดตั้ง ในตัวอย่างนี้เป็นการติดตั้งผ่าน http
$ wget http://mirror.issp.co.th/centos/5.4/isos/i386/CentOS-5.4-i386-netinstall.iso

- ทำการติดตั้ง OS โดยเรียกใช้คำสั่ง qemu-system-x86_64 (ติดตั้งแบบ Text Mode โดยการพิมพ์ linux text ที่ boot prompt)
$ qemu-system-x86_64 -hda centos_base.img -cdrom CentOS-5.4-i386-netinstall.iso -boot d -m 256

- ติดตั้งโดยไม่เลือกกลุ่มของซอฟต์แวร์ใด ๆ เลย เพื่อให้ Guest มีขนาดเล็ก

- ดำเนินการติดตั้งจนแล้วเสร็จ

- ทำการ Reboot

- ทำการตรวจสอบข้อมูลของ Guest (Release, Kernel Version, Disk Usage, etc.)

Create Overlay Disk Image

- สร้าง Overlay Disk Image ขึ้นมา 2 ตัว
$ qemu-img create -f qcow2 -b centos_base.img centos_ovl1.img
$ qemu-img create -f qcow2 -b centos_base.img centos_ovl2.img


Modify Guest OS on Overlay 1

- เปิด Guest ขึ้นมาโดยใช้ Overalay 1 (Disk Image) ในคำสั่งเพิ่ม Option -snapshot ด้วย
$ qemu-system-x86_64 -hda centos_ovl1.img -boot c -m 256 -snapshot


- Install/Update ซอฟต์แวร์บน Guest
$ yum update centos-release
$ yum update kernel
$ yum install httpd
$ yum install finger


- Add user ชื่อ phithak
$ mkdir -p /home/users
$ useradd -g users -c "Phithak Thaenkaew" -d /home/users/phithak phithak
$ passwd phithak
$ finger phithak

- เข้าสู่ Command Mode ด้วยการกดปุ่ม Ctrl + Alt + 2

- ทำการ Commit ด้วยคำสั่ง commit all เพื่อบันทึกความเปลี่ยนแปลงลงบน Overlay 1

- ปิด Guest ด้วยคำสั่ง quit ในหน้า Command Mode
(qemu) quit

Guest OS on Overlay 2

- เปิด Guest ขึ้นมาโดยใช้ Overalay 2 (Disk Image)
$ qemu-system-x86_64 -hda centos_ovl2.img -boot c -m 256 -snapshot


- ตรวจสอบข้อมูลของ Guest พบว่า เหมือนกับที่ติดตั้งให้ Base Image โดยไม่ได้มีการ Update ใด ๆ ทั้งสิ้น

- จากนั้น Shutdown

Guest OS on Overlay 1 (Again)

- เปิด Guest ขึ้นมา โดยใช้ Overlay 1 อีกครั้ง พบว่า Version ตอน Boot เป็น 5.5

- ตรวจสอบ Guest แล้วพบว่า ข้อมูลที่ได้ทำการ Update/Install ไว้ ยังอยู่ครบถ้วน

Image Size

- เปรียบเทียบขนาดของ Image ทั้งสาม (ก่อนและหลัง Commit) พบว่า Base Image มีขนาด 680 MB, Overlay 1 มีขนาดเพิ่มขึ้นเป็น 167 MB, Overlay 2 มีขนาด 256 KB เท่ากับตอนที่สร้าง

(ที่มา: การบ้าน หัวข้อ CS797 Exercise 4 – Create a COW Overlay Disk and use QEMU’s commit command วิชา CS797 Advanced Topics in Computer Science – Introduction to Computer Virtualization ภาคเรียนที่ 1/2553 อาจารย์ผู้สอน ดร.กษิดิศ ชาญเชี่ยว ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยธรรมศาสตร์)

References

- http://wiki.qemu.org/download/qemu-doc.html
- http://www.h7.dion.ne.jp/~qemu-win/HowToFloppyCdrom-en.html

Mirror Site

- http://phithak.com/kvm-overlay-disk-image
- http://phithak.wordpress.com/2010/07/18/kvm-overlay-disk-image/

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.