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

การแก้ไขปัญหา Xen ทั่วไป

เมื่อกรรมพลิกผันไปสู่เรื่องเลวร้ายที่สุด ประสบการณ์ระบบเสมือนจริงของคุณอาจกลายเป็นเรื่องแย่ หากคุณเป็นผู้ใช้ใหม่ของเทคโนโลยี Xen คุณอาจเรียนรู้วิธีที่ยากว่าข้อความแสดงข้อผิดพลาด Xen นั้นละเอียดมากและไม่ค่อยมีประโยชน์นัก เว้นแต่คุณจะเป็นผู้พัฒนา Python ด้วยการติดตามแบบละเอียดและการอ้างอิงที่คลุมเครือถึงการเรียกใช้ฟังก์ชันภายใน ข้อผิดพลาดสามารถดึงคุณออกจากสิ่งที่เป็นปัญหาที่เรียบง่ายและแก้ไขได้ง่ายโดยเนื้อแท้

แม้ว่าฉันจะไม่เชี่ยวชาญด้าน Virtualization หรือ Python แต่ฉันก็เจอปัญหาทั่วไปจำนวนหนึ่งซึ่งใช้เวลาเพียงไม่กี่นาทีในการแก้ไข แต่ผู้ใช้ที่มีความรู้น้อยอาจดูเหมือนชั่วนิรันดร์ ป.ล. ฉันเป็นผู้เชี่ยวชาญ แต่โดยปกติแล้วจะเป็นการดีกว่าที่จะอ้างว่าคุณไม่ใช่ เพราะ 1) ข้อผิดพลาดจะได้รับการอภัย 2) คุณสามารถที่จะล้มเหลวได้ 3) ผู้คนชอบความอ่อนน้อมถ่อมตนและทัศนคติที่ตกอับ อย่างไรก็ตาม ให้ฉันช่วยคุณสนุกกับ Xen นะ

เคล็ดลับที่ 1:แสดง

ก่อนที่คุณจะเริ่ม ตรวจสอบให้แน่ใจว่าหน้าจอของคุณได้รับการกำหนดค่าอย่างถูกต้อง ไม่ว่าคุณจะใช้ BASH หรือ TCSH ให้ส่งออกหรือตั้งค่าตัวแปร DISPLAY ไปยังอุปกรณ์ที่เหมาะสม นี่ควรเป็นขั้นตอนแรก

ส่งออก DISPLAY=ชื่อโฮสต์:พอร์ต

เคล็ดลับ 2:ไม่มีโมดูลชื่อ

คุณอาจได้รับข้อความเป็นล้านข้อความ เช่น ไม่มีชื่อโมดูล xen.xm ไม่มีโมดูลชื่อ gtk ไม่มีโมดูลชื่ออะไรก็ตาม ในกรณีส่วนใหญ่ แหล่งที่มาของปัญหาจะเหมือนกัน แม้ว่าข้อความแสดงข้อผิดพลาดอาจไม่เกี่ยวข้องกันก็ตาม

มาดูตัวอย่าง xm traceback กัน ลองเรียกใช้ /usr/sbin/xm บางอย่างและล้มเหลว:

รายการลินุกซ์ #xm

Traceback (การโทรครั้งล่าสุดล่าสุด):

ไฟล์ "/usr/sbin/xm" บรรทัดที่ 8 ใน <โมดูล>

จาก xen.xm นำเข้าหลัก

ImportError:ไม่มีโมดูลชื่อ xen.xm

มีสองตัวเลือก:1) โมดูลหายไปจริงๆ 2) มีบางอย่างผิดปกติที่อื่น ให้เราเริ่มต้นด้วยการสำรวจตัวเลือกแรกก่อน

ไม่มีโมดูล Python

โมดูลอาจขาดหายไปจริงๆ คุณสามารถตรวจสอบได้โดยตรวจสอบว่ามีการติดตั้งแพ็คเกจที่เกี่ยวข้องบนโฮสต์ของคุณหรือไม่ ตัวอย่างเช่น หากไม่มีแพ็คเกจ gtk คุณสามารถสอบถามฐานข้อมูลการติดตั้งสำหรับแพ็คเกจ gtk และ python-gtk

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

มีบางอย่างผิดปกติ

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

ส่งออก PYTHONPATH=/path-to-python-version/site-packages

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

เคล็ดลับที่ 3:คำสั่งที่ชัดเจน

เชื่อหรือไม่ว่ายูทิลิตี้ Xen ส่วนใหญ่เป็นสคริปต์ตัวตัดคำ ภายใต้คุณจะได้รับรหัส Python ตัวอย่างเช่น Virtual Machine Manager (VMM) ก็เป็นสิ่งที่ Python เช่นกัน ขั้นแรก คุณต้องค้นหาตำแหน่งที่ยูทิลิตี้ซ่อนอยู่:

ซึ่ง

จากนั้น คุณต้องดูเนื้อหาของไฟล์นั้น:

cat <เส้นทางไปยังยูทิลิตี้ xen>

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

หากต้องการดูว่าคุณมีปัญหาจริงหรือมีปัญหากับการตั้งค่าสภาพแวดล้อมของคุณ ให้รันคำสั่งพร้อมพาธแบบเต็มไปยังการติดตั้ง Python ของคุณ ตัวอย่างเช่น แทนที่จะเรียกใช้ virt-manager คุณควรเรียกใช้:

/usr/bin/python "/usr/share/virt-manager ..."

หรือแม้แต่ใช้ python เวอร์ชันเฉพาะ เช่น python2.4 หรือ python 2.7

เคล็ดลับที่ 4:เปลี่ยนสคริปต์

ไม่แนะนำเว้นแต่คุณจะเป็นผู้ใช้ที่มีทักษะ แต่คุณสามารถเปลี่ยนสคริปต์ตัวตัดคำให้ชี้ไปที่เส้นทางเฉพาะและการติดตั้ง Python กลับไปที่ปัญหาเริ่มต้นของเรา การเรียกใช้ xm สร้าง ทำให้เกิดข้อผิดพลาดของโมดูล xen.xm

ตอนนี้เราต้องดูว่าคำสั่ง xm คืออะไรกันแน่ การรันซึ่งเทียบกับ xm บอกเราว่าอยู่ภายใต้ /usr/sbin/xm ตอนนี้ เปิดไฟล์นี้ในโปรแกรมแก้ไขข้อความ มันเป็นสคริปต์ Python จริงๆ

#!/usr/bin/env หลาม

#  -*- โหมด:หลาม; -*-

นำเข้าระบบ



# เพิ่มเส้นทางสำรองสำหรับการติดตั้งเส้นทางหลามที่ไม่ใช่เจ้าของภาษาหากจำเป็น

sys.path.append('/usr/lib/python')

sys.path.append('/usr/lib64/python')

จาก xen.xm นำเข้าหลัก



main.main(sys.argv)

ในบางเวอร์ชันของ Xen บรรทัดแรกคือ #!/usr/bin/env python คุณอาจต้องการเปลี่ยนสิ่งนี้เป็นเวอร์ชัน Python เฉพาะและดูว่าให้อะไร ตัวอย่างเช่น Python 2.4 หรือ Python 2.6 หนึ่งในนั้นอาจกำหนดค่าไม่ถูกต้องหรือหายไปจากการตั้งค่าสภาพแวดล้อม

#!/usr/bin/env python <--- ลบ

#!/usr/bin/python2.6  <--- ใช้

จากนั้นคุณอาจเห็นว่าทุกอย่างทำงานได้ตามที่คุณคาดหวัง ตัวอย่างเช่น บนเครื่อง openSUSE 11.4 ของฉัน ซึ่งติดตั้งเคอร์เนล Xen ด้วย:

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

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

เคล็ดลับ 5:ตรวจสอบบริการ

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

และฉันคิดว่านั่นก็เพียงพอแล้วสำหรับตอนนี้

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

ทรัพยากรที่คุ้มค่ามากที่ Virtuatopia

คุณอาจสนใจเอกสาร RedHat, ปัญหา Xen ทั่วไป

สรุป

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

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

หากคุณมีเคล็ดลับง่ายๆ ระดับโลก สากล หรือทั่วไปที่คุณต้องการแบ่งปัน อย่าเป็นคนแปลกหน้า ส่งอีเมล เดโดอิเมโด้ ออกไป

ไชโย