Tuesday, August 13, 2013

ทำความรู้จัก Hyper-V เบื้องต้น

Microsoft ได้พัฒนา Hypervisor แบบ bare metal สำหรับ CPU x86 และ x64 ให้ชื่อว่า Hyper-V โดยเป็นส่วนหนึ่่งของ Windows Server 2008 64 bit อาจมีความสับสนว่าเวลาติดตั้ง Hyper-Vก็ต้องลง Windows Server ก่อน แล้วเป็น bare metal ได้ยังไง เพราะ bare metal  ไม่ต้องลง 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.1 Hyper-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
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 ให้ 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 นั่นเอง
 ด้าน ล่างเป็นหน้าจอ Device Manager ด้านซ้ายเป็น Root Partition เราจะเห็น Driver ต่างเป็นอุปกรณ์ที่ต่อกับเครื่อง Server แต่ด้านขวาเป็น Child Partition จะเห็นว่า Driver ที่ต่อเป็น Virtual Device ชื่อจึงมีคำว่า Hyper-V ผสมอยู่ด้วย

Image
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 ตามลำดับ

ข้อควรรู้ เครื่อง ขวามือมี 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 เครื่องเสมอ

0 comments:

Post a Comment