วันเสาร์ที่ 23 พฤศจิกายน พ.ศ. 2556

Server Virtualization คืออะไร?

Server Virtualization คือ การบริหารจัดการทรัพยาการบนเครื่องคอมพิวเตอร์ ให้จำลองเสมือนว่ามีหลายเครื่องอยู่ในเครื่องเดียวกันโดยเรียกชื่อเครื่อง จำลองเหล่านั้นว่า Virtual Machine (VM) ที่บอกว่ามีหลายๆ เครื่องมาอยู่บนคอมพิวเตอร์เครื่องเดียวกันนั้น เครื่อง VM ก็ต้องมีความเป็นส่วนตัว (privacy) และอิสระจากกัน เช่น จะลง Windows ต่าง version ก็ได้ เป็นต้น มี Software ที่ใช้ทำ Virtualization ที่ได้รับความนิยม ได้แก่ VMware และ Hyper-V เป็นต้น ส่วนใหญ่ VM ก็มักใช้เป็น Windows หรือ Linux
เรื่อง Virtualization นั้นเป็นเรื่องที่โยงไปหลายส่วนของ IT ในตอนนี้เป็นเรื่องการทำ Server Virtualization บนเครื่องที่ใช้ CPU ของ Intel หรือ AMD เท่านั้น!!

Virtualization ทำงานอย่างไร

หากเรามอง ส่วนประกอบของ Hardware ที่สำคัญของคอมพิวเตอร์ คือ CPU, RAM, Disk และ Network ในรูปที่ 1 ด้านซ้ายมือ จะเห็นว่า Operating System (OS) สมมุติว่า OS เป็น Windows ขณะที่ทำงานเมื่อ Windows จะเรียกใช้ Hardware มันต้องอาศัย BIOS ช่วยไปจัดการให้ การทำ Virtualization ก็เปรียบเสมือนเพิ่มคนกลางเข้ามาระหว่าง Windows กับ BIOS ในรูปที่ 1 ด้านขวามือ ตั้งชื่อว่า Hypervisor หรือบางคนอาจเรียก Virtual Machine Manager (VMM) ในระบบนี้ OS ทำอะไรก็ต้องผ่าน Hypervisor ตลอด (คำว่า Hypervisor นี้คิดค้นโดย IBM ตั้งแต่ยุค Mainframe)
imageimageVirtualization Type – 1 Native (Bare metal)
การแบ่งประเภทของ Virtualization
การสร้างระบบ Virtualization ได้กำหนดชื่อเรียกตัว software ที่ทำหน้าที่ virtual ว่า Hypervisor หรือ Virtual Machine Manager (VMM) ได้มีการแบ่ง hypervisor ออกเป็น 2 ประเภทคือ
  • Type 1 – native หรือ bare metal คือ การที่ hypervisor ถูกติดตั้งบน Physical Server โดยไม่ต้องมี OS ติดตั้ง (รูปที่ 1 ด้านขวามือ) ตัวอย่างผลิตภัณฑ์ในรูปแบบนี้ คือ VMware ESX, Citrix Xen Server และ Microsoft Hyper-V แบบนี้จำง่ายคือ ลง Hypervisor ไปแล้วจะไม่มีการติดตั้ง Application ใดๆ บน hypervisor (แม้ว่า Hyper-V จะทำได้แต่เราไม่ควรลง software ที่ไม่จำเป็นที่ Root )
  • 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)

Microkernal vs. Monolithic Hypervisor

ส่วนนี้จะ เกี่ยวข้องกับการออกแบบ Device Driver ที่มีอยู่ 2 แนวทางคือ Microkernal และ Monolithic ตามภาพด้านล่างคือ แบบแรก Monolithic ต้อง Driver ที่ออกแบบมาให้ใช้สำหรับ Virtualization ตัวอย่างคือ VMWare เมื่อผู้ใช้ติดตั้ง Hardware ใหม่ ก็ต้องหา Driver ที่รับรองว่าใช้งานกับ VMware ได้  สำหรับ Microsoft ได้เลือกแบบ Microkernal เมื่อผู้ใช้งานมี hardware ใหม่ติดตั้งใน Host ถ้าหากเป็นระบบ Windows แบบเดิมๆ ที่ไม่ใช่ virtualization ก็ลง Driver ไปที่ตัว OS แต่เมื่อเราติดตั้ง Hypervisor ลงไปแล้ว เมื่อมี Hardware ใหม่ ก็ใช้ Driver ตัวเดียวกับ OS ที่ลงบน Physical พูดง่ายๆ ก็คือ ผู้ใช้งาน Hyper-V เมื่อมี Hardware ใหม่ติดตั้ง ก็นำ Driver ของ Windows มาใช้ได้ ส่วนการทดสอบ compatability นั้นก็เป็นเรื่องปกติที่ ผู้พัฒนาเค้าไปทดสอบกับ Microsoft
ข้อดีของ Microkernal
      1. ทำให้ Hypervisor มีขนาดเล็ก จึงเพิ่มประสิทธิภาพของ Hyper-V (Improve performance)

    2. มี Driver ให้เลือกมาก เพราะออกตาม OS
image
Hypervisor Basic by BrianEhlert

ประโยชน์ของ Virtualization

1. Versioning
2. ไม่ยึดติดกับ Hardware
3. ดูแลง่าย
4. ใช้ประโยชน์จาก Hardware ได้มากขึ้น
5. ลดค่าใช้จ่าย
6. ลดเวลาและส่งมอบงานได้รวดเร็ว
รูปแบบการนำไปใช้งาน
ในยุคแรก ของการใช้ Virtualization สำหรับ Guest OS ที่เป็น Windows มักใช้สำหรับการพัฒนาโปรแกรม และการทดสอบระบบงาน เมื่อผู้ใช้งานมั่นใจและการพัฒนาของ Hypervisor ก้าวหน้ามากขึ้น Virtualization ก็ถูกนำไปใช้ในงาน Production และงาน Critical Tier-1 Application
ขอแถมคำ อธิบายแบบลูกทุ่งด้วยว่า VM ยังนำมาใช้งานบนคอมพิวเตอร์ส่วนบุคคล เช่น กรณ๊เราอยากมี Windows หลายๆ ตัวอยู่บนเครื่องเรา เช่น บางตัวทำงาน บางตัวเล่นเกมส์ เป็นต้น การนำมาใช้สำหรับมือใหม่ก็ขอติดตามจาก vm360degree ที่นี่
Microsoft Hyper-V
Microsoft ได้พัฒนา Hypervisor แบบ bare metal สำหรับ CPU x86 และ x64 ให้ชื่อว่า Hyper-V โดยเป็นส่วนหนึ่่งของ Windows Server 2008 64 bit อาจมีความสับสนว่าเวลาติดตั้ง Hyper-V ก็ต้องลง Windows Server ก่อน แล้วเป็น bare metal ได้ยังไง เพราะ bare metail ไม่ต้องลง OS นั้น คำตอบคือเป็น bare metal ได้ เนื่องเมื่อเราเปิดใช้งาน Hyper-V ตัว Windows จะเหมือนถูกยกให้ลอยขึ้น จับ Hypervisor ไปวางข้างใต้ แล้วขั้นตอนสุดท้ายก็แปลงร่าง Windows ที่ตัวนั้นเป็น Virtual Machine ตัวแรก ให้ชื่อว่า Root Partition
        Hyper-V เป็น Paravirtualization ตามที่กล่าวไปข้างต้น ในขั้นตอนการเตรียม Hardware จะต้องมี CPU ที่ Support virtualization ถ้าไม่มีก็ถือว่าขาดคุณสมบัติ ทำไม่ได้ การตรวจสอบ CPU ทำได้ทั้งตรวจสอบจาก web site ของ Intel (กด
        ) หรือ AMD (กด
        ) หาดูว่า Virtualization Technology ที่เป็น Yes หรืออาจ download tools ไปตรวจได้จา
        (ในข้อ 2.1Hyper-V Architecture)
จากรูปที่ 2 แสดงให้เห็นว่าใน Hyper-V Server จะมี Hypervisor มาวางขวางระหว่าง Hardware กับ OS ใน virtualization เราสามารถสร้าง VM หลายๆ ตัว บน Hardware เดียวกันได้ เราเรียกการแบ่ง VM เป็นคำว่า Partition มี 2 แบบคือ Root กับ Child แต่ละ Partition จะทำงานแยกจากกัน
      Root Partition คือ partition แรก ที่ Microsoft สร้างบนเครื่องของเรา ตอนเปิดใช้งาน Hyper-V (รูปที่ 2 ซ้ายมือ) มีสิทธิพิเศษเหนือกว่าใครเพราะเป็นพี่ใหญ่สุด มันมีสิทธิใช้งาน Hardware ต่างๆ ได้ การสร้าง VM ก็ทำโดย Root โดยเรียกผ่าน API บน Hypervisor ที่เรียกว่า Hypercalls
อยากให้จำ ตรงนี้ให้ดีว่า ถ้าเราลง Hyper-V ไปแล้ว Windows ที่เราใช้งานบนเครื่องนั้น เป็น virtual machine ตัวหนึ่งที่เรียกว่า root แต่มันเจ๋งกว่าใคร เพราะเห็น hardware จริงๆ ได้ เครื่อง VM อื่นๆ ที่เราสร้างมาภายหลังไม่มีสิทธิเห็น ตัวยอย่างชัดๆ ได้แก่ ถ้าเสียบ Thumb Drive ตัว Root จะเห็นคนเดียว พวก VM อื่นๆ จะมองไม่เห็น เป็นต้น
image
รูปที่ 2 – Hyper-V Architecture (ภาพจาก MSDN)
CPU/Processor และ Memory, เครื่อง VM จะไม่มีสิทธิใช้สั่ง CPU และ Memory ได้ ที่มันเห็นจะเห็น virtual processor และ virtual memory address region ที่ถูกจัดสรรเป็นส่วนตัวสำหรับแต่ละ Partition เมื่อ VM จะใช้ CPU มันจะทำผ่าน Hypervisor ด้วยวิธีการ redirect คือ VM ผ่าน Hypervisor ไปยัง CPU และขากลับ Hypervisor กับรับงานมาจาก CPU และส่งกลับไปให้ VM ซึ่งในส่วนของ Memory ก็มีลักษณธใกล้เคียงกัน คือทำการ Remap physical memory address ให้ VM

VMBus และ Virtual Device

    Root Partition ทำหน้าที่เป็นตัวกลางในการติดต่อกับ I/O Devices พวก Driver ต่างๆ ก็ถูกติดตั้งบน Root Partition (ย้ำ!! Driver ไม่ได้อยู่ใน Hypervisor นะ) เมื่อ Child Partition ต้องการใช้งาน I/O ต่างๆ ก็จะผ่านช่องทาง high-speed interconnect ที่เรียกว่า VMBus ตัวที่รับงานใน Root Partition มีชื่อเรียกว่า Virtualization Services Provider แล้วส่วนของ Child Partition ก็มีชื่อว่า Virtualization Service Consumers (VSCs) ตัว VSCs นี้มีหน้าที่ redirect การใช้งาน I/O ไปที่ Root นั่นเอง
จากรูปที่ 3 ด้านล่างเป็นหน้าจอ Device Manager ด้านซ้ายเป็น Root Partition เราจะเห็น Driver ต่างเป็นอุปกรณ์ที่ต่อกับเครื่อง Server แต่ด้านขวาเป็น Child Partition จะเห็นว่า Driver ที่ต่อเป็น Virtual Device ชื่อจึงมีคำว่า Hyper-V ผสมอยู่ด้วย
imageimage
รูปที่ 3 Device Manager (ซ้ายเป็น Root Partition และขวาเป็น Child Partition)

Emulated vs. Synthetic Device Driver และ Enlightment

เนื่อง จาก Hyper-V เน้นความแรงส์ พวก Driver ที่ทำไว้ใช้งานใน Child Partition ก็ถูกออกแบบให้แบ่งเบาภาระของ Hypervisor และต้อง support Guest OS (Guest OS หมายถึง OS ที่ติดตั้งที่ Child Partition หรือง่ายๆ ก็คือ Windows หรือ Linux)  เจ้าตัว Driver ได้ถูกแบ่งเป็น 2 แบบคือ
1. Emulated device หรือเป็น device ยุคเก่าๆ ที่มีใช้ใน Virtualization ตั้งแต่ครั้งเป็น Microsoft Virtual Server 2005 พวก device แบบนี้มีข้อดีคือใช้ได้กับทุก Guest OS เพราะเป็นการทำงานในแบบเดิมคือ Guest เห็นข้อมูลใน BIOS แล้วคิดว่าตัวมันเองเป็น Physical computer การกำหนด device แบบนี้มักใช้ได้กุับ Guest OS ทุกตัว แต่มีข้อเสียคือประสิทธิภาพความเร็วสู้แบบที่ 2 ไม่ได้
2. Synthetic driver ตัวนี้จะมีประสิทธิภาพดี แต่ต้องตรวจสอบก่อนว่า Guest OS ว่า Support Hyper-V หรือไม่ ถ้าเป็น Windows มัน Support มาตั้งแต่ Windows 2003 Service Pack 2 มาแล้ว จากรูปที่ 3 กรอบสีน้ำเงินกับสีเหลืองได้แสดงตัวอย่างของ Emulated กับ Sythetic ตามลำดับ
ข้อ ควรรู้ เห็นไหมว่าในรูปที่ 3 เครือ่งขวามือมี Storage Device 2 อันคือ ที่ช่องสีเหลืองของ IDE/ATA/ATAPI controller  มี Intel® 82371AB/EB PCI Bus Master IDE Controller ส่วนอีกอันอยู่ในช่องสีน้ำเงิน คือ SCSI ใน Hyper-V IDE Controller จะถูกใช้ตั้งแต่ boot แต่ SCSI จะถูก load หลังจาก start guest OS ขึ้นมา นี่เป็นเหตูผลที่ ต้องมี IDE Disk สำหรับใช้ boot เครื่องเสมอ
 สำหรับการแนะนำ Server Virtualization ตอนที่ 1 มีพบเท่านี้  ตอนถัดไปเป็นเรื่อง ขั้นตอนการติดตั้ง Hyper-V ครับ
 Reference:
2. How computer work: A simple introduction from Explain that Stuff  (http://www.explainthatstuff.com/howcomputerswork.html)
3. Hyper-V Server is Finally Here – But What Exactly Is It? (http://blogs.vmware.com/virtualreality/2008/10/hyper-v-server.html)
5. Comparing Citrix XenServer™, Microsoft Hyper-V™ and VMware ESX™  (http://www.thinclientpricing.com/docs/Citrix_XenServer_HyperV_VMware.pdf)
8. The difference between the Microsoft’s Hyper-V and the VMware’s ESX hypervisor  (http://4sysops.com/archives/the-difference-between-the-microsofts-hyper-v-and-the-vmwares-esx-hypervisor/)
10. Netherland Hyper-V Community (http://www.hyper-v.nu/)
11.  Cloud Infrastructure Platforms และ Virtualization Types (http://www.microsoft.com/thailand/technet/cloud4.aspx)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น