Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> เครื่องเสมือน

ทำความรู้จักกับ Xen paravirtualization

ฉันขอเตือนคุณก่อนที่เราจะเริ่มต้น หากคุณลองใช้ Xen โดยไม่มีการจำลองเสมือนของฮาร์ดแวร์ การเดินทางของคุณจะมีปัญหา นี่เป็นคำใบ้ที่ไม่ละเอียดนักที่คุณไม่ควรลองใช้ Xen หากคุณไม่มี CPU รุ่นใหม่ที่มีส่วนขยายการจำลองเสมือน หนทางไกลจากโซลูชันในบ้านเช่น VirtualBox หรืออาจเป็น VMware Player แต่แล้ว Xen ก็มุ่งเป้าไปที่กลุ่มตลาดที่แตกต่างไปจากเดิมอย่างสิ้นเชิง

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

เราจะเรียนรู้ว่าปัญหาที่เราเผชิญ อาการเป็นอย่างไร วิธีแก้ไข หากเป็นเช่นนั้น วิธีทำงานกับเคอร์เนลและไฟล์ initrd แบบ paravirtualized และวิธีกำหนดค่าอะแดปเตอร์เครือข่ายบริดจ์สำหรับแขกของเรา ทั้งหมดนี้และอื่น ๆ ห่อหุ้มด้วยความไม่แน่นอน ปฏิบัติตามฉัน.

ทำความรู้จักกับ Xen paravirtualization

ทำไมการจำลองเสมือนอาจเป็นเรื่องเจ็บปวด

นี่คือคำอธิบายอย่างเป็นทางการ:

Paravirtualization เป็นเทคนิคการจำลองเสมือนที่มีประสิทธิภาพและน้ำหนักเบาซึ่งแนะนำโดย Xen ซึ่งต่อมาได้นำมาใช้โดยโซลูชันการจำลองเสมือนอื่นๆ Paravirtualization ไม่ต้องการส่วนขยายการจำลองเสมือนจากโฮสต์ CPU อย่างไรก็ตาม แขกรับเชิญที่เป็นเสมือนเสมือนต้องการเคอร์เนลพิเศษที่พอร์ตให้ทำงานแบบเนทีฟบน Xen ดังนั้นแขกรับเชิญจึงรับรู้ถึงไฮเปอร์ไวเซอร์และสามารถทำงานได้อย่างมีประสิทธิภาพโดยไม่ต้องใช้การจำลองหรือฮาร์ดแวร์จำลองเสมือนจริง

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

บูตจากซีดีหรืออิมเมจ ISO

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

ทำความรู้จักกับ Xen paravirtualization

ทำความรู้จักกับ Xen paravirtualization

แต่แล้วคุณก็พบข้อผิดพลาดที่น่าเกลียดแบบนี้ แม้ว่าคุณจะลองใช้ ISO:

ก็ตาม

ทำความรู้จักกับ Xen paravirtualization

ทำความรู้จักกับ Xen paravirtualization

หากคุณเข้าไปที่ Intertubes คุณจะพบสูตรอาหารกว่า 7 ล้านสูตรที่บอกคุณว่าสิ่งนี้ทำได้หรือทำไม่ได้ แต่ไม่เคยเสียบปลั๊กและเล่น วิธีแก้ไขทั่วไปส่วนใหญ่จะแตกต่างกันไประหว่างการแยกอิมเมจและการอัปโหลดไปยังเซิร์ฟเวอร์ HTTP และการเมานต์อิมเมจเป็นอุปกรณ์ย้อนกลับ

ป.ล. โปรดดูที่ส่วนการอ่านเพิ่มเติมด้วย เอกสารอ้างอิงอธิบายว่าเหตุใด Ubuntu ที่เราเลือกไว้สำหรับการทดสอบข้างต้น จึงไม่สามารถบู๊ตได้อย่างแท้จริงในฐานะผู้เยี่ยมชมแบบเสมือนเสมือนจริงโดยไม่ต้องทำงานหนักและแก้ไขเพิ่มเติม

แล้วคุณจะทำอย่างไร?

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

หากไม่มีรายละเอียดเกี่ยวกับกรณีที่เป็นไปได้ทั้งหมด ปัญหาหลักของการทำพาราเวอร์ชวลไลเซชันจะแคบลงเหลือเพียงสองประเด็นหลัก:1) คุณต้องใช้เคอร์เนลและสิทธิ์เริ่มต้นที่ถูกต้องเพื่อบูตระบบเกสต์ 2) อินเตอร์เฟสเครือข่ายที่ถูกสร้างเสมือนนั้นไม่ดี และการรวมกันของสองสิ่งนี้จะป้องกันไม่ให้คุณบูทเครื่องเสมือนจากซีดี/ดีวีดี

เคอร์เนลและอิมเมจเริ่มต้น

ด้วยการจำลองเสมือนเต็มรูปแบบ มันค่อนข้างง่าย ในไฟล์คอนฟิกูเรชันของเครื่องเสมือน คุณต้องระบุคำสั่ง builder, kernel และ boot ให้ถูกต้อง เคอร์เนล hvmloader พร้อมใช้งานเสมอ ดังนั้นคุณก็สบายดี

ทำความรู้จักกับ Xen paravirtualization

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

ไปที่ไดเร็กทอรี /etc/xen/vm และเปิดไฟล์ในโปรแกรมแก้ไขข้อความ สังเกตเคอร์เนลและบรรทัดเริ่มต้น ชี้ไปที่เคอร์เนลชั่วคราวและอิมเมจเริ่มต้นภายใต้ /tmp คุณสามารถเปลี่ยนสองรายการเหล่านี้ให้ชี้ไปที่ไฟล์ Xen kernel และไฟล์ initrd แบบถาวรได้ แต่การดำเนินการนี้อาจยุ่งยาก เนื่องจากคุณอาจต้องดาวน์โหลดข้อมูลเหล่านี้แยกต่างหากหรือสร้างด้วยตนเอง คุณอาจต้องการตรวจสอบเนื้อหาของอิมเมจซีดีและค้นหาเนื้อหาที่เกี่ยวข้องกับ xen ซึ่งคุณสามารถคัดลอกและใช้เพื่อบูตแขกได้ นี่คือตัวอย่าง:

ทำความรู้จักกับ Xen paravirtualization

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

bootloader ='/usr/lib/xen/boot/domUloader.py'
bootentry ='--entry-=xvda1:/boot/vmlinuz-xen,/boot/initrd-xen'

แน่นอน คุณจะต้องปรับอุปกรณ์เสมือนจาก xvda1 เป็นสิ่งที่คุณใช้ในการตั้งค่าของคุณ นี่เป็นแฮ็คที่น่าเกลียดและไม่จำเป็นต้องใช้งานได้

อินเทอร์เฟซเครือข่ายเสมือนจริง

อุปสรรคอีกประการหนึ่งคือคำสั่ง vif Xen แขกเสมือนเสมือนอาจไม่ชอบการตั้งค่าของคุณ เหตุผลก็คือ คุณไม่สามารถใช้อะแดปเตอร์เครือข่ายได้โดยตรงโดยไม่เชื่อมต่อ คุณจะไม่สามารถใช้อุปกรณ์เช่น eth0 หรือ wlan0 ได้ คุณจะต้องใช้ xenbr0 หรือ br0 และที่คล้ายกัน หากคุณพยายามเริ่มเครื่องเสมือนจากบรรทัดคำสั่ง ข้อความแสดงข้อผิดพลาดจะดังชัดเจน:

ทำความรู้จักกับ Xen paravirtualization

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

#vif=['',]

และจากนั้น คอนโซลเวทมนตร์:

ทำความรู้จักกับ Xen paravirtualization

ทำความรู้จักกับ Xen paravirtualization

และคุณจะประสบปัญหาเครือข่ายไม่ช้าก็เร็ว:

โดยทั่วไป คุณอาจหนีไปได้โดยไม่มีเครือข่าย แต่นี่แทบไม่มีประโยชน์ เนื่องจากเราต้องการเชื่อมต่อกับแขกของเรา ดังนั้น คุณจะต้องเชื่อมต่ออะแดปเตอร์ของคุณ อินเทอร์เฟซเครือข่ายบางส่วนของคุณอาจไม่รองรับการบริดจ์ ดังนั้นโปรดคำนึงถึงเรื่องนี้ด้วย

ทำความรู้จักกับ Xen paravirtualization

ทำความรู้จักกับ Xen paravirtualization

อีกครั้งสิ่งนี้อาจช่วยหรือไม่ก็ได้ แทบไม่มีการรับประกัน ตัวอย่างเช่น คุณอาจโชคร้ายและเห็นข้อความประเภทนี้บอกคุณว่า คุณควรเลิกเดี๋ยวนี้ หรือคุณสามารถลองสร้างสะพานด้วยตนเองโดยใช้ยูทิลิตี้ brctl

เรามีอะไรที่นี่?

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

You can solve the first by letting the virtual machine wizard create temporary entries for you on the hard disk, but this works only for some types of guest operating systems. For instance, Scientific Linux 6, which is based on RedHat 6, explicitly supports this kind of thing, so you're lucky. See below for more details. Alternatively, you can manually place the proper Xen kernel and initrd somewhere on your hard disk. As a last option, you can also use the bootloader directly, again with the right files.

The second issue takes an extra step; you must configure a network bridge. You can bridge both wired and Wireless adapters, however some hardware may not support this.

Even so, things may not work. And they probably won't. Bottom line, Xen paravirtualization is a pain; best avoided. If you compare the difficulty in getting your virtual machines running this way when pitted against pretty much any alternative, the answer is quite obvious.

อ่านเพิ่มเติม

If you're still brave after this guide, then you may want to consider reading a few more articles presenting possible solutions to booting your guests from CD-ROM. Or rather, showing you why it doesn't work and why you shouldn't bother.

Xen domU support - Popular choices like Ubuntu and Fedora are a no-go, yet

How to boot SLES para-virtual domU as a rescue system

สรุป

Working with Xen in paravirtualized mode is not a pleasant task. Depending on how advanced your guest systems are in supporting para-domU, you may get lucky and boot from a CD or an ISO image. But you will also require bridged networking, which may not always work, especially with Wireless adapters.

Moreover, you may need to hunt for Xen kernel and initrd files for your guest system, including even compiling your own custom version. This kind of work is too much for most people, both in terms of skill, patience and administrative overhead, especially since other virtualization solutions offer as much without breaking into sweat.

Hopefully, this guide clears the fog a little. Web server, loopback device, physical drive, it makes no difference. You need special kernel and initrd images and bridged networking. You may be lucky and have guests that support domU paravirtualization. If not, you're in for a lot of trouble. My warmest advice is, avoid if you can, go for alternative solutions. However, in its full hardware virtualization mode, Xen is rather cool.

ไชโย