“ 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 โดยเด็ดขาด