24 August 2016

How to Learn KVM-QEMU QCOW2 QEMU-IMG and Snapshots Tools


         ถ้ากล่าวถึงเรื่อง Virtualization หรือ Cloud คนมักจะนึกถึง Virtual Machine (VM) โดยพวก VM เหล่านี้ทุกสิ่งที่อย่างจะเป็น ของปลอมหรือของจำลองทั้งหมด
       
         QCOW2 virtual disk format เป็นตัวที่น่าสนใจเป็นอย่างมากๆ Advanced feature จะใช้ผ่าน QEMU image tools พวกการสร้าง virtual disk หรือการสร้าง Snapshots บน Image (virtual disk) เป็นต้น


เบื้องต้นเริ่มลองใช้คำสั่งกันเลย

1. คำสั่ง Dump information เกี่ยวกับ image file.

Command Format:
qemu-img info {image-name}

image-name คือ ชื่อของ virtual-disk
Example Command:
root@ubuntu#qemu-img info hda.qcow2
image: hda.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 2.3G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
root@ubuntu# du -sh *
2.4G    hda.qcow2
root@ubuntu#

2. คำสั่งสร้างไฟล์ QCOW2 image

Command Format:
qemu-img create -f qcow2 {image-name}  {max-storage}

image-name คือ ชื่อของ virtual-disk ที่จะสร้าง
max-storage คือ ขนาดที่ใหญ่ที่สุดที่สร้างใช้งานได้ของ virtual-disk ที่จะสร้างมา


Example Command:
root@ubuntu# qemu-img create -f qcow2 virtioa.qcow2 100G
Formatting 'virtioa.qcow2', fmt=qcow2 size=107374182400 encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16
root@ubuntu#
root@ubuntu#du -sh *
196K    virtioa.qcow2
root@ubuntu#

3. คำสั่งสร้าง virtual-disk image ใหม่ โดยอ้างอิงไฟล์ backing image อีกไฟล์หนึ่งๆ เป็น Based Image

Command Format:
qemu-img create -b {image-name-1} -f qcow2 -l {image-name-2}

image-name-1 คือ ชื่อที่จะอ้างอิงไฟล์ backing image
image-name-2 คือ ชื่อของ virtual-disk ที่จะสร้างมาใหม่ โดยอ้างอิง based image ไปที่ image-name-1

Additional
จากคำสั่งนี้ image-name-2 จะอ้างอิง base image จาก image-name-1 โดยถ้ามีการเพิ่ม/เปลี่ยนแปลงข้อมูลใดๆ จะทำที่ไฟล์ image-name-2 เนื่องจากมีการอ้างอิงไฟล์ image-name-1 ทุกอย่างๆ จะทำให้เราไม่ควรจะเปลี่ยนแปลง image-name-1 เพราะจะทำให้ image-name-2 มีปัญหาหรือ Corrupted เลย จะเรียกอีกอย่างว่าพังนั้นเอง

Example Command:
root@ubuntu#qemu-img create -b /opt/unetlab/addons/qemu/linux-ubuntu16.04/virtioa.qcow2 -f qcow2 -l virtioa.qcow2
root@ubuntu#
root@ubuntu#qemu-img info virtioa.qcow2
image: virtioa.qcow2
file format: qcow2
virtual size: 100G (107374182400 bytes)
disk size: 341M
cluster_size: 65536
backing file: /opt/unetlab/addons/qemu/linux-ubuntu16.04/virtioa.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
root@ubuntu#
root@ubuntu#qemu-img info /opt/unetlab/addons/qemu/linux-ubuntu16.04/virtioa.qcow2
image: /opt/unetlab/addons/qemu/linux-ubuntu16.04/virtioa.qcow2
file format: qcow2
virtual size: 100G (107374182400 bytes)
disk size: 4.3G
cluster_size: 65536
backing file: /opt/unetlab/addons/qemu/linux-UBT16.04/virtioa.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
root@ubuntu#


4. คำสั่งดูรายการ (list) Snapshot ของไฟล์

Command Format:
qemu-img snapshot -l {image-name}
image-name คือ ชื่อของ virtual-disk

Example Command:
root@ubuntu# qemu-img snapshot -l virtioa.qcow2
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         snap1                     0 2016-08-24 12:02:39   00:00:00.000
2         snap2                     0 2016-08-24 12:05:48   00:00:00.000
root@ubuntu#

5. คำสั่งสร้าง (Create) Snapshot

Command Format:
qemu-img snapshot -c {snapshot-name} {image-name}
snapshot-name คือ ชื่อของ snapshot
image-name คือ ชื่อของ virtual-disk

Example Command:
root@ubuntu#qemu-img snapshot -c snap1 virtioa.qcow2


6. คำสั่งใช้ (Apply) Snapshot

Command Format:
qemu-img snapshot -a {snapshot-name}  {image-name}
snapshot-name คือ ชื่อของ snapshot
image-name คือ ชื่อของ virtual-disk

Example Command:
root@ubuntu#qemu-img snapshot -a snap1 virtioa.qcow2

7. คำสั่งลบ (Delete) Snapshot

Command Format:
/opt/qemu/bin/qemu-img snapshot -d {snapshot-name}  {image-name}
snapshot-name คือ ชื่อของ snapshot
image-name คือ ชื่อของ virtual-disk

Example Command:
/opt/qemu/bin/qemu-img snapshot -d snap1 virtioa.qcow2

8. คำสั่ง Convert หรือ Export เพื่อสร้างเป็น Standalone image โดยไม่มีการส่วนของ Snapshot และการอ้างอิง Backing Image

Command Format:
qemu-img convert -p -f qcow2 {image-name-1} -O qcow2 {image-name-2}
image-name-1 คือ ชื่อของ virtual-disk ตัวที่ต้องการ Convert หรือ Export
image-name-2 คือ ชื่อของ virtual-disk ตัวที่เป็น Standalone image

Example Command:
/opt/qemu/bin/qemu-img convert -p -f qcow2 virtioa.qcow2 -O qcow2 virtioa.qcow2.backup

ลองทดสอบใช้งานกันดูครับ เดี๋ยวบทความหน้าจะมานำคำสั่งไปใช้งานครับ........

URL Refer:
http://linux.die.net/man/1/qemu-img

No comments:

Post a Comment