Saturday, July 7, 2012

กลไก Snapshot ใน Virtual Machine


“ Snapshot ”

Snapshot คืออะไร
Snapshot คือ การเก็บสถานะของ Virtual Machine ไว้สำหรับการเรียกใช้คืนในภายหลัง ซึ่งช่วยให้การใช้ Virtual Machine ในงานทดสอบระบบหรือทดสอบโปรแกรมต่างๆ สามารถทำได้สะดวกกว่าการใช้งานเครื่องคอมพิวเตอร์จริง อย่างไรก็ตามหลังจากใช้งานเสร็จแล้วไฟล์ Snapshot นั้นจะยังคงเก็บไว้บนฮาร์ดดิสก์ ซึ่งเราสามารถทำการลบออกได้เพื่อเป็นการประหยัดพื้นที่ฮาร์ดดิสก์ โดยวิธีการลบ Snapshot ของ Virtual Machine ใน VMware มีขั้นตอนดังนี้

ตัวอย่างกลไกการทำ Snapshot ใน VMware ESXI 5.0
ตัวอย่างเช่น สมมติว่าเรามีข้อมูลที่เป็น Text เช่น COMPUTINGแทนด้วยข้อมูลใน OS ที่เราจะทำการ Snapshot ข้อมูลนี้กระจัดกระจายกันอยู่ใน Disk
ในการสร้าง OS ใน Virtual Machine ครั้งแรก โปรแกรม Vmware จะสร้าง ไฟล์  .vmdk ขึ้นมาเพื่อเป็น Base Disk เป็นสถานะเริ่มต้นของข้อมูลและเก็บ Link ที่อยู่ของข้อมูลใน Hard Disk
                File System = .vmx
                File Datastore = .vmdk

ที่มาของรูป : https://www.ibm.com/developerworks/mydeveloperworks/blogs/pcclm/?lang=en

Step 1 : มีหลักการง่ายๆคือ " เก็บเฉพาะส่วนที่แตกต่างระหว่างสถานะปัจจุบันและสถานะเริ่มต้น "
ทำการเปรียบเทียบ Base Disk (.vmdk) กับ Current State ว่ามีข้อมูลไดเพิ่มขึ้นมาหรือข้อมูลใดถูกลบไป
Step 2 : มีหลักการง่ายๆคือ "ขณะที่มีการทำ Snapshot ข้อมูลที่มีการเปลี่ยนแปลงจะถูกบันทึกก่อนตามด้วยข้อมูลที่ถูกลบ (Block สีน้ำเงิน) โดยเทียบกับ Base Disk (.vmdk) " เมื่อมีการทำ Snapshot ไฟล์ที่ชื่อ Snapshot1.vmdk จะถูกสร้างขึ้น การเปลี่ยนแปลงระหว่างข้อมูลต้นฉบับและข้อมูลที่ทำการ Snapshot ไม่ได้เก็บไว้ใน Disk แต่จะมีการเขียนข้อมูลที่แตกต่างลง Snapshot1.vmdk file
ข้อมูลที่อยู่ในไฟล์ Snapshot1.vmdk จะเก็บเฉพาะส่วนที่แตกต่าง (อักษร E และ R)
Step 3 : ถ้ามีการทำ Snapshot อีกครั้งต่อจาก Snapshot อันแรก หลักการทำงานคือ ทำการอ่านข้อมูลจาก Current State และทำการเปรียบเทียบกัน Snapshot1.vmdk เพื่อดูว่ามีการเปลี่ยนแปลงอะไรบ้าง จากรูปจะเห็นว่า Snapshot1.vmdk (“COMPUTER”) และ Current State (“CONTAINER”) มีการเปลี่ยนแปลงคือ “TAINN” เพราะฉนั้น Snapshot2.vmdk จะเก็บเฉพาะ “TAINN”

ที่มาของรูป : https://www.ibm.com/developerworks/mydeveloperworks/blogs/pcclm/?lang=en

สรุปผลที่ได้จากการทำ Snapshot
Step1 - Base Disk  = COMPUTING
                BaseDisk.vmdk = COMPUTING
Step2 - Snapshot1 = COMPUTER
                                Snapshot1.vmdk = “ER”
Step3 - Snapshot2 = CONTAINER
                                Snapshot2.vmdk = “TAINN”

ตัวอย่างการทำ Snapshot ใน VMware Workstation 8.0 ( เครื่องผมลง ESXI ไม่ได้ครับ เนื่องจากไม่รองรับ มันน่าจะเป็นที่สถาปัตยกรรมของ CPU )
1.             เปิดโปรแกรม VMware ขึ้นมา และเลือก OS ว่าจะทำการ Snapshot ตัวไหน ในตัวอย่างผมเลือก RHEL 6

2.             ไปที่เมนู VM >>Snapshot >>Snapshot Manager

3.             แสดงหน้าต่างของ Snapshot Manager จะเห็นว่ายังไม่มีการทำ Snapshot เห็นแค่เพียง Current State เท่านั้น (You are here)

4.             ทำการสร้าง Snapshot ไปที่เมนู VM>>Snapshot>>Take Snapshot


5.             ตั้งชื่อ Snapshot และ Description กด Take Snapshot



6.             เข้าไปดูใน Folder ที่เก็บ VM จะเห็น file Snapshot1.vmsn เพิ่มขึ้นมา
  

7.             ตรวจสอบ Snapshot ที่ได้สร้างไว้เข้าไปที่เมนูในข้อ 2 จะเห็นชื่อ Test SnapShot


8.             ทดสอบ Restore Snapshot ที่ได้สร้างไว้


9.             ถ้าต้องการ Restore กด Yes


เกร็ดความรู้เล็กๆน้อยๆจากเว็บ
ที่มาของข้อมูล : http://www.thaiadmin.org/board/index.php?topic=146226.0
1. ถ้าทดสอบแล้วอยากใช้ต่อ โดยไม่อยากย้อนกลับไปจุดเดิมทำอย่างไร ?
ตอบ delete snapshot โดยการใช้ snapshot manager ให้ใช้ tools delele snapshot หรือ command commit snapshot เท่านั้น อย่าไป down guest แล้วไปลบ vmdk เอง เพราะ การ delete snapshot มันจะทำการ รวม vmdk version ก่อนหน้า กับ version ที่เราลบเข้าด้วยกัน

2. เผลอไปทำ Snapshot ไว้กับ guestOS ที่เป็น datacenter หรือ File server แล้วถอยไม่ได้
ตอบ เท่าที่ทราบนะครับ snapshot แต่ละ version จะสัมพันธ์กัน ถ้า version ไหนเสีย คุณจะเปิด guest ไม่ได้นะครับ ต้องแก้ไขโดยการ ถอยไป ยัง version file ก่อนที่ vmdk ที่เสีย

3. จากข้อ 2 หากจะใช้ต่อไปเลยไฟล์ที่ได้ก็จะมีขนาดใหญ่ขึ้นเรื่อย เป็น 2 เท่า 3 เท่า ... ทำให้เปลืองพื้นที่ใน datastore เราจะจัดการยังไงดี
ตอบ เท่าที่ ทราบ การทำ snapshot มันจะ ไปทำให้ vmdk version ก่อนหน้า เป็น read only เท่านั้น แล้วมันจะสร้าง file-00001.vmdk ขึ้นมาเพื่อใช้งาน ในการเพิ่ม ข้อมูลที่แก้ไข จาก version เดิม และ ส่วนที่เพิ่มขึ้นมาใหม่  ยิ่งถ้า vmdk ข้อมูลภายใน แต่ละ version ต่างกันมาก ขนาดก็มากขึ้น   ถ้าคุณคิดว่าคุณไม่ได้ใช้ version ที่คุณทำ snapshot ไหนไว้แล้วแน่ๆ คุณก็ลบ snapshot version นั้น ออกไป โดยใช้ snapshot manager ก็ได้ครับ ถ้าไม่ต้องการ snapshot อันไหนก่อนหน้าก็สามารถลบได้ผ่าน snapshot manager
***การลบ snapshot จะต้องทำผ่าน snapshot manager เท่านั้น
ห้ามทำการ browse datastore แล้วไปลบไฟล์  .vmdk โดยเด็ดขาด

3 comments:

  1. สอบถามเพิ่มเติมครับ
    ถ้าใน VMGuset มี add ISCI ไว้ ตอน Snap จะมาด้วยไหม หรือ มาแค่ OS อย่างเดียวไม่รวมอุปกรณ์ เพิ่มเติม

    ReplyDelete
  2. กลไก Snapshot ใน Virtual Machine ~ ไม่รู้จะเขียนอะไร เค้าเขียนกันหมดแล้ว >>>>> Download Now

    >>>>> Download Full

    กลไก Snapshot ใน Virtual Machine ~ ไม่รู้จะเขียนอะไร เค้าเขียนกันหมดแล้ว >>>>> Download LINK

    >>>>> Download Now

    กลไก Snapshot ใน Virtual Machine ~ ไม่รู้จะเขียนอะไร เค้าเขียนกันหมดแล้ว >>>>> Download Full

    >>>>> Download LINK

    ReplyDelete