Hyper-V Network ตอนที่ 1

การใช้งาน Network ใน Hyper-V ควรมึความเข้าใจและมีการวางแผนล่วงหน้า เข้าเรื่องเลยดีกว่าคือสมมุติว่า เรากำลังจะสร้าง virtual server ขึ้นมา 2 เครื่อง โดยกำหนดวัตถุประสงค์ดั้งนี้

  1. เครื่องแรกเอาไว้ทดสอบงานไม่จำเป็นต้องไปคุยกับเครื่องใดๆ (เครื่อง VM guest ต้องมี virtual network เพื่อคุยกับ Host)
  2. เครื่องที่สอง เอาไว้ run งานที่ต้องติดต่อกับเครื่องอื่นในอยู่ในระบบ LAN ของบริษัท จะใช้หมายเลข IP 10.0.0.2

การ setup network ใน Hyper-V นั้น เรียกว่า connection type แบ่งออกเป็น 3 แบบ ตามรูปที่ 1 คือ

  1. External หมายถึง network ที่เชื่อมกับกับระบบ LAN ของบริษัท ต้องมีสาย LAN และ Network switch ของจริง
  2. Internal only หมายถึง การสร้าง virtual network ขึ้นมาในเครื่อง Hyper-V แล้วเครื่องที่อยู่ใน physical เดียวกับคุยกันเองได้ เครื่อง Root และ virtual machine คุยกันเองได้
    รูปแบบนี้ไม่จำเป็นต้องมีสาย LAN มี notebook ตัวเดียวก็ทดสอบงานจำลองการคุยกับ server ได้
  3. Private virtual machine network อันนี้มีความหมายใกล้เคียง internal only แต่อันนี้เป็นกำหนดให้ virtual machine คุยกันเอง ห้าม root เข้าไปเกี่ยว

    มีเรื่องของ Network speed ที่ควรรู้คือ virtual switch มี speed 10 gigabit ส่วนการต่อไป external ก็ได้ speed ตามอุปกรณ์จริงๆ ของบริษัท


รูปที่ 1: Hyper-V virtual network

ในเครื่อง Windows Server ที่ไม่ได้เปิดใช้ Hyper-V จะมีหน้าตาเหมือนภาพที่ 2 – A คือมีการใช้งาน Network card ตรงๆ เมื่อเราได้ Enable role Hyper-V เครื่องจะแปลงร่างเป็นรูปที่ 2 –B คือ Windows ได้ลง Kernel ของ Hyper-V บน hard disk แล้วย้าย Windows ที่เราเคยลงไว้ไปเป็น virtual machine ที่มีความพิเศษกว่าตัวอื่นให้ชื่อเรียกว่า Root ทำให้เมื่อเวลาเรา power-on เครื่องจะ boot ตัว kernel จาก hyper-v ขึ้นมาก่อนแล้วจึง root ตามลำดับ แต่ในการใช้งานจริงเราจะไม่เห็นความแตกต่างในส่วนนี้ และในรูป 2-B เมื่อเราสร้าง virtual machine ของเราขึ้นมา มันต้องไปอาศัย root ในการติดต่อกับ network

Virtual Switch ของ Hyper-V

ใน Hyper-V การใช้งาน Network จะกระทำผ่าน virtual switch อยู่ใน Hypervisor จากที่กล่าวไปตั้งแต่ต้นว่า Connection มี 3 แบบ เมื่อเราสร้าง Network Connection ทุกครั้ง Hyper-V ก็จะสร้าง virtual switch ขึ้นมาให้เราอัตโนมัติ รวมถึง root เองก็ใช้ virtual switch ด้วยตามรูปที่ 2-C


รูปที่ 2: Virtual Network – 1

ต่อไปนี้เป็นเหตุการตัวอย่างของการสร้าง setup network ใน Hyper-V ขออธิบายขั้นตอนด้วยรูปภาพเพื่ออาจนำไปเป็นตัวอย่างได้

  • เมื่อเรา Enable Hyper-V role หน้าตาของ Network Connection ใน Root จะมีเพียง 1
    network card เหมือนเครื่อง PC ธรรมดา


รูปที่ 3 – Network Connection

  • เมื่อเปิดดู Property ของ Card จะพบสิ่งที่ Hyper-V ใส่มาใน card ของเรา คือ Microsoft Virtual Network Switch Protocol ณ จุดนี้ เราสามารถแก้ไขหมายเลข IP Address ของเครื่องได้ เหมือนการใช้งานตามปกติ

    คำเตือน ห้ามไป check หรือ uncheck
    Microsoft Virtual Network Switch Protocol เอง เพราะอาจทำให้ระบบสับสนและใช้งานไม่ได้


รูปที่ 4 – Root NIC property

  • เมื่อจะสร้าง Virtual machine ขึ้นมา จะต้องสร้าง Network เตรียมไว้ก่อน โดยเลือก Connection Type ให้ตรงกับงาน ด้านล่างตรงช่องสีแดง check box
    – Allow management operating system to share this network adapter เป็นเรื่องของความปลอดภัยและประสิทธิภาพ ถ้าเรามี network card บน physical หลายๆ ใบ เราเลือกกำหนดว่าอันไหนใช้สำหรับ root เท่านั้น แต่ถ้าเครื่องมีเพียง 1 physical network port ก็ต้อง check ไว้เสมอ


รูปที่ 5
Hyper-V Virtual Network Manager

  • เมื่อสร้าง Virtual network หน้าตาของ Network Connection ที่ Root ก็จะเป็นแบบนี้
    ให้สังเกตว่าจากตอนที่เราสร้าง virtual network ได้มีการกำหนด Name ตอนนี้ Name ได้กลายเป็นยี่ห้อของ Network card ไปแล้ว


รูปที่ 6 เมื่อสร้าง Virtual Network

  • ถ้าเราไปดู Property ของ physical network
    card อีกครั้ง ตอนนี้มันได้แปลงร่างเป็น virtual switch ไปเรียบร้อยแล้ว คำเตือน ห้ามแก้ไข setup ในหน้านี้


  • การกำหนด IP ให้กับ Network card ทั้งที่เป็น External หรือ Internal ก็ทำได้เหมือนปกติ และเหมือนเดิม ห้ามแก้ไขเรื่อง virtual switch


การสร้าง Network สำหรับเครื่องที่ 1 และเครื่องที่ 2

  • สร้าง Internal Network
  1. เปิดหน้าที่ Hyper-V Manager เพื่อสร้าง Virtual Network – Internal
  2. สร้างโดยเลือก New Virtual Network จากด้านซ้าย
  3. ให้ชื่อว่า NIC_Internal
    (อาจเป็นชื่ออื่นก็ได้แต่อันนี้ก็จำง่ายดี)
  4. Connection type ให้เลือกเป็น Internal Only
  • สร้าง External Network
  • เปิดหน้าที่ Hyper-V Manager เพื่อสร้าง Virtual Network – Internal
  • สร้างโดยเลือก New Virtual Network จากด้านซ้าย
  • ให้ชื่อว่า NIC_External
  • Connection type ให้เลือกเป็น External และเลือก card ที่ต้องการ
    ถ้ามี card เดียวก็ต้องเลือก Allow management operating system to share this network adapter ด้วย

        เมื่อสร้างเสร็จก็จะมีหน้าตาคล้ายรูปที่ 5
    Virtual Network Manager

  • การกำหนด Network Card ให้กับ virtual machine ทำได้ 2 แบบคือ

    แบบที่ 1
    เลือกตอนสร้างเครื่อง



    แบบที่ 2 ถ้าสร้างไปแล้วอยากแก้ไขก็เลือกได้ตามนี้


  • ด้านล่างเป็นภาพจำลองของการสร้าง Network ที่กล่าวไว้ตั้งแต่ตอนเริ่ม

Advertisements

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)

SCVMM 2012 Release Candidate ดาวน์โหลดได้แล้ว

เป็นที่ทราบกันว่า Microsoft ได้ปล่อย SCVMM 2012 มาให้ใช้ทดลองกันตั้งแต่กลางปี ผมได้ใช้ทำ P2V มาหลายรอบก็ดีมาก ผมได้พบกับทีม SCVMM ได้ทราบว่าออก RTM ในปี 2011 แต่ก่อนหน้านี้ก็ยังไม่รู้ว่าจะตอนนี้ แต่ตอนนี้ RC ออกมาแล้ว ก็หวังว่า RTM คงทันปีนี้นะ

โหลดได้ที่นี่