วันอังคารที่ 5 ตุลาคม พ.ศ. 2553

CS797 Excercise 8 Study KVM internal 4

Virtual Machine migration.













Definition
Migration คือ การย้ายการทำงานจากเครื่องหนึ่งไปยังอีกเครื่องโดยสามารถทำงานต่อจาก State การทำงานเดิมที่ยังคงไว้ก่อนการทำ migration มีข้อดีคือ เสีย Down Time หรือ เวลาที่ระบบไม่สามารถให้บริการได้ น้อยที่สุดเท่าที่จะเป็นไปได้
 ตัวอย่างเช่น การให้บริการ web server หากต้องการทำการ Maintenance ระบบ โดยต้องมีการปิดเครื่อง Server จะทำให้ไม่สามารถให้บริการลูกค้าได้
 เราก็ทำการ Migration ระบบไปไว้ที่ Server อีกเครื่องก่อน เพื่อให้สามารถให้บริการ web server ได้ต่อไปโดยที่ผู้ใช้ไม่รู้สึกว่ามีอะไรเกิดขึ้นกับระบบ ส่วน Server เครื่องเดิมก็สามารถปิดเครื่องแล้วทำการ maintance ได้ เมื่อทำเสร็จแล้วจึงทำการ migration กลับมาที่เครื่องเดิมได้

Type of Migration
1. Quick Migration:
เป็นการ running state ที่ได้ทำการ saved ไว้ก่อนแล้วบน disk (hibernating the VM), หากเกิด disk failed ขณะทำการเคลื่อนย้ายข้ามเครื่อง จะทำการเรียก saved state ขึ้นมาทำงานต่อ (waking up the VM).
2. Offline Migration: เกิดขึ้นเมื่อทำการปิดระบบก่อนแล้วจึง migration จากเครื่องหนึ่งไปสู่อีกเครื่องหนึ่ง
3. Quick Storage Migration: เป็นการแทนที่การทำงานในโหมด Offline Migration โดยการ running VM สามารถเคลื่อนย้ายจาก host ไปสู่เครื่องอื่นได้ภายใน 2 นาที
4. Live Migration: เป็นกระบวนที่ทาการเคลื่อนย้าย virtual machine จากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งโดยที่ไม่เกิดการ downtime ที่กระทบถึงระบบเน็ตเวิร์คหรือผู้ใช้

Algorithm of Live Migration

1. Migration Request arrives
2. Transfer Memory
3. Stop the VM
4. Transfer VM State
• Each device “transfer” its own state
• Dirty pages (from the last iteration) included
5. Continue the VM
• On remote (B) if migration was successful
• Send (broadcast) an Ethernet packet to announce the new location
• On local host (A) if migration failed




คำสั่งที่ใช้ Qemu monitor commands และ cmd line
- (qemu) migrate [–d]
On remote
-incoming
/usr/bin/kvm –m 512 –hda /images/a.img –incoming stdio
- (qemu) migrate_set_speed
- (qemu) migrate_cancel
- (qemu) info migration


วิธีการทำงานของ Live Migration









 จากรูปด้านบน เรามี 1 VM(virtual machine) ที่กำลัง running บน host 1.
ซึ่งจะประกอบด้วย 1 ส่วนที่เป็น configuration และอีก 1 ส่วนที่เป็น “state”.










 เมื่อเริ่มทำการ live migration
ส่วนที่เป็น configuration ของ VM จะถูก copied จาก host 1 ไปไว้ที่ VM ที่กำลัง running ที่ host 2,
ในที่นี้เป็น destination host. ซึ่งกำลังทำการสร้างตัวเองเป็น new VM.
ณ ตอนนี้ VM ยังคง running อยู่บนon host 1.









 ในขณะที่ VM ยังคง running อยู่บน host 1,
หน่วยความจำของ VM จะลดลงและถูก tracked ด้วยการใช้ bitmap.
แต่ละ page ที่จุดเริ่มต้นถูกเซตค่าเป็น clean.
ขณะที่ pages กำลังทำการ copied จาก VM ที่ยังคง Running อยู่บน host 1 ไปยัง new VM
ที่ถูกเขียนรออยู่ที่ host 2.

 ผู้ใช้งานและระบบ network applications ยังคงใช้การทำงานของ VM ที่อยู่บน host 1.ถ้ามีการเปลี่ยนแปลงของ RAM page ในขณะที่ running VM อยู่บน host 1 ภายหลังจากการ copied ไปที่ host 2 ระบบ OS จะทำการเปลี่ยน state จาก clean เป็น dirty. และทำซ้ำไปจนกระทั่ง ทำการ copied all pages จาก host 1 ไปสู่ host 2 และทุก State ถูกเซตค่าเป็น clean.





Summary Live Migration

1. When Starting , During Migration








2. When Finished Migration



















CS797 Exercise 8 - PartII Virtual Machine Migration

1. Create Disk Image as qcow2 , assign the name is vm_des.img



















2. Check disk image



3. Using port no : 1234 for Live Migration


4. Check Port No. 1234













5. Changed name of Terminal : Original


















6. Changed name of Terminal : Destination


















12. Migration


















13.Check Status Migration


















14. Finish


















15. Finish Migration KVM


















16. Original is Stop!


















17. Destination is Running


















Reference :
http://www.aidanfinn.com/?p=10109
http://knowlagecom.blogth.com/
http://www.linux-kvm.org/page/Migration
http://phithak.com/study-kvm-internal-4/comment-page-1
http://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine
http://wiki.qemu.org/Main_Page