2011 Red Hat Forum ตอนที่ 1 – KVM (Kernel-base Virtual Machine) คือ อะไร?

เมื่อวันที่ 22 กันายน 2551 Red Hat ได้จัดงาน 2011 Red Hat Forum เพื่อแนะนำเรื่อง Virtualization และ Cloud แก่ผู้สนใจทั่วๆไป ก่อนที่จะกล่าวถึงรายละเอียดของงาน ในช่วงที่รอเปิดงานผมได้พบ sale ที่ boot เพื่อขอคำแนะนำว่า KVM คืออะไร ก็ได้ข้อมูลว่ามันคือ virtualization ทำนอง Xen นั่นเอง หลังจากนั้นไปนั่งรองานเปิดมีคนนั่งข้างๆ คุยกันเรื่อง KVM แล้วคุยว่า memory leak ผมได้ยินก็ อึมมม เจอของจริงแล้วเรา จึงขยับไปนั่งข้างและขอความรู้ว่า KVM เป็นไง ไดรับคำตอบว่าก็ไม่เคยลง ไม่รู้เหมือนกัน เมื่องานเร่ิมก็นั่งฟังอยู่ครึ่งวันก็ยังไม่รู้อยู่ดีว่า KVM คืออะไร ดังนั้นก่อนจะเล่าเรื่องงาน ขอใช้โอกาสนี้แลกเปลี่ยนข้อมูลหลังจากไปหาความรู้มาว่า KVM คืออะไร

การแบ่งประเภทของ Virtualization

การสร้างระบบ Virtualization ได้กำหนดชื่อเรียกตัว software ที่ทำหน้าที่ virtual ว่า Hypervisor หรือ Virtual Machine Manager (VMM) ได้มีการแบ่ง hypervisor ออกเป็น 2 ประเภทคือ

  • Type 1 – native หรือ bare metal คือ การที่ hypervisor ถูกติดตั้งลงไปใต้ OS ตัวอย่างผลิตภัณฑ์ในรูปแบบนี้ คือ VMware ESX, Citrix Xen Server และ Microsoft Hyper-V แบบนี้จำง่ายคือ ลง Hypervisor ไปแล้วจะไม่มีการติดตั้ง Application ใดๆ บน hypervisor (แม้ว่า Hyper-V จะทำได้แต่เป็นสิ่งที่ไม่ควรทำ ควรไปสร้าง quest แล้วลง software ใน guest)
  • Type 2 – hosted คือ การที่ hypervisor ทำงานเหมือน application บน OS ตัวอย่าง ผลิตภัณฑ์ได้แก่ VMware workstation, Microsoft virtual PC และ Oracle Virtual Box เป็นต้น แบบนี้จำง่ายคือ เมื่อได้ hardware มาแล้วก็ลง OS เช่น Windows แล้วลง virtual ในฐานะเป็น application ตัวหนึ่งเช่นเดียวกับการลง Microsoft Office

ประเภทเทคนิคของการสร้าง Virtualization

  • Full Virtualization คือ เทคนิคการทำ virtualization ที่ guest machine เห็นอุปกรณ์ทุกอย่างจำลอง ทั้งหมด เมื่อ guest ที่ต้องติดต่อกับ hardware ตัว virtualization จะต้องทำ binary translation โดย VMM จะดัก hardware call จาก guest OS และแปลงคำสั่งนั้นให้อยู่ในรูปแบบที่ Host OS ทำงานได้ การแปลงนี้ต้องใช้ทรัพยาการมาก ทำให้เครื่องทำงานช้าลงและลดประสิทธิภาพของเครื่อง
  • Paravirtualization คือ เทคนิคที่ใช้เพิ่มประสิทธิภาพให้กับ virtualization ในส่วนที่ guest machine เคยต้องจำลองอุปกรณ์ต่างๆ เมื่อทำงานบน virtual นั้น การออกแบบ paravitualization ได้ตัดการแปลงคำสั่งเหล่านี้ออกไปและไปสร้างเป็น software interface บน VMM ในรูปแบบของ driver และเครื่องมือต่างๆ มาแทน

    Paravirtualization ต้องการ CPU ที่สนับสนุนด้วยนั่นคือ Intel-VT หรือ AMD-V หน้าที่ตรงนี้ได้แก่ เรื่องของการจัดสรร Memory ของ Server ที่จำนวน RAM มากๆ ที่มีตำแหน่งกระจายไปทั่วๆ แต่ต้องทำให้ guest เห็นว่าเป็นผืนที่มีตำแหน่งเรียงกันเราเรียกส่วนนี้ว่า hardware page table virtualization เนื่องจาก quest OS ไม่สามารถไปจัดสรร physical memory จริงๆ ได้ จึงต้องอาศัย VMM ที่ดูแลการใช้ memory จาก quest หลายๆ ตัว ในเวลาเดียวกันได้ ส่วนนี้มีชื่อเรียกว่า Intel Extended Page Table (EPT) หรือ AMD Nested Page Table (NPT)

Kernel-base Virtual Machine (KVM)

ผู้สร้าง KVM มีชื่อว่า Avi Kivity และ Morcelo Tosatti ได้สร้าง KVM ขึ้นมาเพื่อทำ virtualization type – 1 และเป็น Paravirtualization (Intel VT, AMD-V) บน Linux ตัว guest OS ที่สร้างบน KVM ได้แก่ Windows และ Linux เป็นหลัก ได้มีผู้ port KVM ไปใช้บนเครื่อง PowerPC, IA/64 และเครื่องที่ใช้ CPU จำนวน ARM เป็นต้น

เพื่อความง่ายแก่การเข้าใจขออธิบายตามรูปภาพด้านบน KVM ถูกสร้างเป็น device ตัวหนึ่งบน Linux อยู่ใน Kernel มีการเรียกใช้งานผ่าน /dev/kvm ในตัว guest ก็มี QEMU ที่ทำหน้าที่เป็น emulator ไปติดต่อกับ KVM ใน Kernel เมื่อเทียบกับ KVM กับ VMware หรือ Hyper-V จะความแตกต่างที่ว่าเครื่องที่มี KVM ผู้ใช้งานยังใช้งานอื่นๆได้เพราะการทำ KVM ไปไว้ใน kernel ที่ใช้งานร่วมกับ OS ตามปกติแล้วมี Normal user process ใช้งานไปด้วย คงต้องศึกษาเรื่อง security best practice กันต่อไปว่ามีการแบ่งแยก process กันอย่างไรต่อไป

การออกแบบ KVM ที่เป็นเพียงเป็นการขยายความสามารถด้าน Virtualization ให้ Linux ก็ยังมีประเด็นให้ผู้สนใจมีความเห็นไม่ตรงกันว่า KVM เป็น Hypervisor Type-1 หรือ  Type-2 เนื่องจาก KVM ได้ถูกนำไปเปรียบเทียบกับ Hypervisor ที่มีมาก่อนหน้านี้ที่สร้าง Kernel ขึ้นมาใหม่เพื่อเป็น Hypervisor แล้ว OS ที่ใช้บริหารระบบจะเป็น Guest บนนั้น ลองติดตามอ่านได้ที่  

KVM ปะทะ Xen

ขอบอกก่อนว่า KVM ไม่ได้เป็นสายของ Xen ถ้าคนไม่คุ้น Linux การกำเนิดของ Xen นั้น ได้มีการสร้าง Kernel ขึ้นมาโดยเฉพาะ (purpose built) ติดตั้งระดับต่ำสุด แล้วมี Linux อยู่เหนือกว่า แต่จากภาพด้านลบนได้แสดงให้เป็นชัดเจนว่า KVM ใช้ Kernel ของ Linux ตามปกติ มีผู้เขียนบทความบน ZDNet ได้ลงบทสัมภาษณ์ Ian Pratt – Xen cofounder ได้กล่าวว่า “KVM ไม่ใช่ hypervisor อย่างแท้จริง แต่เป็นเพียงการเพิ่มความสามารถด้าน virtualization ลงใน Linux, KVM จึงเหมาะกับ desktop หรือการใช้งานอื่นๆ แต่ไม่ใช้งานที่ต้องการ high-end virtualization” นอกจากนี้ Ian ยังกล่าวย้ำว่า “เป็นความจำเป็นสำหรับ server ที่ต้องใช้ Hypervisor ที่ออกมาสำหรับโดยเฉพาะจริงๆ” ที่มา (http://www.zdnet.com/blog/virtualization/kvm-and-xen-cofounders-engage-in-war-of-words/415)

Advertisements

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 )

Google+ photo

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

Connecting to %s