ความแตกต่างระหว่าง Xen PV, Xen KVM และ HVM หรือไม่


53

ฉันรู้ว่า Xen นั้นดีกว่า OpenVZ เนื่องจากผู้ให้บริการไม่สามารถขาย Xen ได้ อย่างไรก็ตาม, อะไรคือความแตกต่างระหว่างXen PV, Xen KVMและHVM(ฉันได้ผ่านข้อกำหนดของผู้ให้บริการนี้? อันไหนดีกว่าสำหรับวัตถุประสงค์อะไรและทำไม?


แก้ไข:

สำหรับผู้ใช้ปลายทางที่เพิ่งจะเป็นโฮสต์เว็บไซต์ซึ่งดีกว่า จากประสิทธิภาพหรือมุมมองอื่น ๆ มีข้อได้เปรียบอย่างใดอย่างหนึ่งหรือไม่?

คำตอบ:


47

ประเภทการจำลองเสมือนที่รองรับของ Xen

Xen รองรับแขกที่เข้าพักสองประเภท แขกของ Xen มักถูกเรียกว่า domUs (โดเมนที่ไม่มีสิทธิ์) แขกทั้งสองประเภท (PV, HVM) สามารถใช้งานพร้อมกันในระบบ Xen เดียว

Xen Parav virtualization (PV)

Parav virtualization เป็นเทคนิคการทำเวอร์ช่วลไลเซชั่นที่มีประสิทธิภาพและมีน้ำหนักเบาที่ Xen นำมาใช้ในภายหลังโดยโซลูชั่นการจำลองเสมือนอื่น ๆ Parav virtualization ไม่ต้องการส่วนขยายการจำลองเสมือนจากโฮสต์ CPU อย่างไรก็ตามแขก paravirtualized ต้องการเคอร์เนลพิเศษที่พอร์ตเพื่อให้ทำงานบน Xen ดังนั้นผู้เข้าพักจึงทราบถึงไฮเปอร์ไวเซอร์และสามารถทำงานได้อย่างมีประสิทธิภาพโดยไม่ต้องจำลองหรือฮาร์ดแวร์จำลองเสมือน มีแขกเมล็ด Xen PV สำหรับระบบปฏิบัติการ Linux, NetBSD, FreeBSD, OpenSolaris และ Novell Netware

ผู้เข้าร่วม PV ไม่มีฮาร์ดแวร์เสมือนจริงใด ๆ แต่ยังสามารถใช้คอนโซล pvfb (pavfb เฟรมเสมือน) PV กราฟิกคอนโซลผู้เยี่ยมชมสามารถดูได้โดยใช้ไคลเอนต์ VNC หรือ Redhat's virt-viewer มีเซิร์ฟเวอร์ VNC แยกต่างหากใน dom0 สำหรับ PVFB ของแขกแต่ละคน

เคอร์เนล Upstream.org เคอร์เนล Linux ตั้งแต่ Linux 2.6.24 รองรับ Xen PV guest (domU) สนับสนุนตามกรอบของ Linux pvops ดังนั้นทุกเคอร์เนล upstream สามารถใช้เป็นเคอร์เนลแขก Xen PV โดยอัตโนมัติโดยไม่มีแพตช์หรือการแก้ไขเพิ่มเติมใด ๆ

ดูหน้าวิกิ XenParavirtOps สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสนับสนุน Linux pvops Xen

Xen การจำลองเสมือนแบบเต็ม (HVM)

แขกผู้เข้าพักเสมือนจริงทั้งหมดหรือ HVM (ฮาร์ดแวร์เครื่องเสมือนจริง) ต้องการส่วนขยายเสมือนจริงของ CPU จากโฮสต์ CPU (Intel VT, AMD-V) Xen ใช้ Qemu รุ่นดัดแปลงเพื่อเลียนแบบฮาร์ดแวร์พีซีเต็มรูปแบบรวมถึง BIOS, คอนโทรลเลอร์ดิสก์ IDE, อะแดปเตอร์กราฟิก VGA, คอนโทรลเลอร์ USB, อะแดปเตอร์เครือข่าย ฯลฯ สำหรับแขก HVM ส่วนขยายการจำลองเสมือนของ CPU ใช้เพื่อเพิ่มประสิทธิภาพของการจำลอง แขกเสมือนจริงทั้งหมดไม่ต้องการเคอร์เนลพิเศษดังนั้นตัวอย่างเช่นระบบปฏิบัติการ Windows สามารถใช้เป็นแขก Xen HVM โดยทั่วไปผู้เข้าพักเสมือนจริงจะช้ากว่าผู้เข้าพักเสมือนจริงเนื่องจากมีการจำลองที่จำเป็น

เพื่อเพิ่มประสิทธิภาพให้กับแขกของ HVM เสมือนจริงอย่างเต็มที่สามารถใช้ไดรเวอร์อุปกรณ์ paravirtual แบบพิเศษเพื่อหลีกเลี่ยงการจำลองสำหรับดิสก์และเครือข่าย IO แขก Xen Windows HVM สามารถใช้ไดรเวอร์ opensource GPLPV ดูหน้า Wiki XenLinuxPVonHVMdrivers สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Xen PV-on-HVM ไดรเวอร์สำหรับแขก Linux HVM

นี่คือจากhttp://wiki.xenproject.org/wiki/XenOverview

KVM ไม่ใช่ Xen เลยเป็นอีกเทคโนโลยีหนึ่งที่ KVM เป็นโมดูลเคอร์เนล Linux ดั้งเดิมและไม่ใช่เคอร์เนลเพิ่มเติมเช่น Xen ซึ่งทำให้ KVM เป็นการออกแบบที่ดีขึ้น ข้อเสียที่นี่คือ KVM ใหม่กว่า Xen ดังนั้นจึงอาจขาดคุณสมบัติบางอย่าง


9
+1 KVM ไม่ใช่ Xen เลย มันไม่เห็นด้วยอย่างสิ้นเชิงว่า KVM เป็นการออกแบบที่ดี Xen ให้การแยกที่ดีกว่ามากและไม่ได้ขึ้นอยู่กับเคอร์เนล Linux และเป็นช่องโหว่ที่อาจเกิดขึ้น
แอนทอน Benkemoun

2
ขอบคุณสำหรับข้อมูล! ฉันไม่เข้าใจทั้งหมด จากมุมมองของผู้ใช้ปลายทางใครจะเป็นผู้ให้บริการพื้นที่เว็บไซต์ที่ดีกว่า มีข้อได้เปรียบที่สำคัญกว่าอีกอันหนึ่งหรือไม่?

2
Xen มีช่องโหว่ของตัวเอง แต่การรันระบบปฏิบัติการด้วยสองเมล็ด bootstrapped เป็นข้อบกพร่องในการออกแบบไม่ว่าคุณจะทำมันออกมาดีแค่ไหน
dyasny

1
JP19: ขึ้นอยู่กับเว็บไซต์ หากคุณสามารถกำหนดโหลดบน VPS คุณสามารถขอได้ที่นี่หรือ google สำหรับทางออกที่ดีที่สุด
dyasny

2
Xen เป็นไฮเปอร์ไวเซอร์และ KVM ก็เช่นกัน KVM มีอุปกรณ์ PV และเพิ่มมากขึ้นตามเวลานอกจากนี้ยังช่วยให้ PCI passthrough ดังนั้นฉันไม่เห็นประเด็นที่คุณโต้แย้ง Nils
dyasny

32

Xen เป็นไฮเปอร์ไวเซอร์ที่ทำงานบนโลหะ (พีซี / เซิร์ฟเวอร์) แล้วโฮสต์เครื่องเสมือนที่เรียกว่าโดเมน

Xen PVโดเมนเป็นโดเมน paravirtualizedนั่นหมายความว่าระบบปฏิบัติการ (ปกติเรากำลังพูดถึงลินุกซ์ที่นี่) ได้รับการแก้ไขให้ทำงานภายใต้ Xen และมีความจำเป็นที่จะเลียนแบบจริงฮาร์ดแวร์ นี่ควรเป็นวิธีที่มีประสิทธิภาพที่สุดในการดำเนินการอย่างชาญฉลาด

Xen HVMโดเมนคือฮาร์ดแวร์เทิดทูนโดเมนนั่นหมายความว่าระบบปฏิบัติการ (อาจจะ Linux, Windows, อะไรก็ตาม) ยังไม่ได้รับการแก้ไขในทางใดและฮาร์ดแวร์ที่ได้รับการเทิดทูน ค่อนข้างช้าดังนั้นโดยปกติคุณจะติดตั้งไดรเวอร์ PVในเกสต์เกสต์สำหรับฮาร์ดแวร์ที่สำคัญ (โดยทั่วไปคือดิสก์และเครือข่าย) ดังนั้นแขกโดยรวมจะทำงานเสมือนจริงทั้งหมด แต่ชิ้นส่วนที่สำคัญที่สุดของประสิทธิภาพการทำงานจะเรียกใช้ ระบบ linux ล่าสุดมีไดรเวอร์ pv สำหรับทั้งดิสก์และเครือข่ายในเคอร์เนลและมีไดรเวอร์ PV สำหรับ Windows เช่นกัน ด้วยการพัฒนาทั้งหมดของ HVM ในช่วงไม่กี่ปีที่ผ่านมามักจะมีความแตกต่างเล็กน้อยในประสิทธิภาพระหว่าง HVM และ PV สำหรับปริมาณงานมาตรฐาน

KVMไม่ใช่ Xen เป็นแพลตฟอร์มการจำลองเสมือนอื่นที่สร้างขึ้นภายในเคอร์เนล Linux จากมุมมองของแขกมันคล้ายกับ Xen HVM: แขกทำงานเสมือนจริงอย่างเต็มที่และมีไดรเวอร์เฉพาะเพื่อเรียกใช้บางส่วน paravirtualized (อีกครั้งดิสก์และเครือข่าย)

ทั้ง Xen HVM และ Linux KVM ต้องการการสนับสนุนการจำลองเสมือนสำหรับฮาร์ดแวร์ (Intel VT-x, AMD AMD-V) ในขณะที่ Xen PV ไม่สามารถใช้งานระบบปฏิบัติการได้หากไม่รองรับ PV (คุณไม่สามารถเรียกใช้ Windows บน Xen PV)

ทั้ง Xen HVM และ Linux KVM จะใช้ชิ้นส่วนของซอฟต์แวร์ virtualization qemu เพื่อจำลองฮาร์ดแวร์จริงสำหรับอุปกรณ์ที่ไม่ได้ใช้ไดรเวอร์ PV ในระบบแขก

Xen (ทั้ง PV และ HVM) สามารถทำการโอนย้ายแบบสดๆของผู้เยี่ยมชมที่กำลังทำงานอยู่จากเซิร์ฟเวอร์หนึ่งไปยังอีกเครื่องหนึ่งฉันไม่ทราบว่า KVM สามารถทำได้เช่นกัน

ทั้ง Xen และ KVM ไม่สามารถทำการ overcommit หน่วยความจำได้ดังนั้นโดยปกติคุณจะได้ "RAM จริง" ในขณะที่แพลตฟอร์มอื่น ๆ เช่น VMware สามารถสลับส่วนของ ram เกสต์ไปยังดิสก์ได้

มีความแตกต่าง แต่มักจะนำไปใช้กับการติดตั้งเฉพาะและไม่ใช้กับเซิร์ฟเวอร์ส่วนตัวเสมือนทั่วไปเพื่อขายให้กับผู้อื่น ยกตัวอย่างเช่น Xen hypervisors ล่าสุดสนับสนุนหน่วยความจำดีเยี่ยมที่สามารถปรับปรุงการใช้งานหน่วยความจำและประสิทธิภาพการทำงานของแขกถ้าแขกมีการสนับสนุน (linux kernels> = 3.something)

เทคโนโลยีเหล่านั้นทั้งหมดจะให้ประสบการณ์ที่ยอดเยี่ยมแก่คุณหากใช้งานอย่างถูกต้องและจะไม่สร้างความแตกต่างอย่างมากจากมุมมองของคุณ แน่นอนว่ามีหลายพันวิธีที่สิ่งผิดปกติและไม่เกี่ยวข้องกับโซลูชันเวอร์ชวลไลเซชันเฉพาะ (เช่นแขกของคุณอาจถูกเก็บไว้ในดิสก์ช้าและอาจส่งผลเสียต่อประสิทธิภาพการทำงานของคุณ)


3
KVM สามารถ overcommit memory ได้ดังนั้น Xen
dyasny

@dyasny ผมไม่ทราบว่าเกี่ยวกับ KVM แต่ผมค่อนข้างมั่นใจว่า Xen ไม่สามารถovercommitหน่วยความจำในความหมายที่แท้จริงของคำว่า (ให้มีขนาดสูงสุดที่แตกต่างกันเป็นสิ่งที่แตกต่างกัน) โปรดเชื่อมโยงแหล่งที่มาของคุณหากคุณเชื่อว่าเป็นเช่นนั้น
ลุ

Xen รองรับ balooning เพิ่มการแลกเปลี่ยนแบบมาตรฐานในส่วนนี้และคุณมีกลไกการ overcommit อย่างน้อย 2 ตัว นี่เป็นรุ่นเก่าแก่ปี 2008: blog.xen.org/index.php/2008/08/27/…
dyasny

3
@dyasny คุณอาจคิดถึงovercommitเพื่อให้ได้ค่าสูงสุดที่สูงขึ้น AFAIK ความหมายที่ยอมรับคือการจัดสรรความทรงจำให้กับแขกจริงมากกว่าที่มีอยู่จริงในโฮสต์และสิ่งนี้ไม่ได้ถูกนำไปใช้ใน Xen คุณไม่สามารถยุบบอลลูนผู้เยี่ยมชม (เช่นให้หน่วยความจำเพิ่ม) ถ้าคุณไม่มีหน่วยความจำกายภาพในโฮสต์และคุณไม่สามารถเริ่มผู้เยี่ยมชมใหม่ได้หากคุณจัดสรรหน่วยความจำโฮสต์ทั้งหมดแล้ว ใช้งานลูกโป่งแขกผู้เข้าพักซึ่งจะลดหน่วยความจำที่จัดสรรไว้จริง ๆ ดังนั้นคุณจะไม่ทับอะไรมากเกินไป)
ลุ

1
ฉันคิดว่าovercommitไม่เพียง แต่จะอนุญาตให้มากกว่าโฮสต์ที่มีอยู่จริงเท่านั้น แต่ยังใช้มากกว่าโฮสต์ที่มีอยู่จริงด้วย การสลับเปลี่ยนนั้นน่ากลัว แต่เป็นกลไกที่ช่วยให้คุณสามารถจัดสรรหน้าหน่วยความจำได้มากกว่าที่คุณมีบนโฮสต์ไม่ว่าจะเป็นกระบวนการหรือ VMs ก็ตาม นี่คือเท่าที่ฉันจะไปในความหมายในนี้
dyasny
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.