User Mode Linux: เทคโนโลยีเสมือนจริงที่ถูกลืม แต่ยังคงพบชีวิตใหม่

ทีมชุมชน BigGo
User Mode Linux: เทคโนโลยีเสมือนจริงที่ถูกลืม แต่ยังคงพบชีวิตใหม่

ในโลกของการสร้างระบบเสมือนจริงบน Linux เทคโนโลยีอย่าง KVM และ Docker containers ครองพื้นที่ในปัจจุบัน แต่มีแนวทางที่เก่าแก่และไม่เหมือนใครกว่าที่ยังคงพบการประยุกต์ใช้ใหม่ที่น่าประหลาดใจ: User Mode Linux (UML) เทคโนโลยีนี้อนุญาตให้รัน Linux kernel เป็นกระบวนการ userspace ทั่วไป สร้างสิ่งที่ผู้ใช้ท่านหนึ่งอธิบายว่าเป็นการกำหนดค่าเคอร์เนลแบบพาราเวอร์ชวลไลซ์ที่ ไม่ต้องการซอฟต์แวร์เสมือนจริงแบบดั้งเดิมหรือสิทธิ์ผู้ใช้ระดับ root แม้ UML เคยถูกใช้เพื่อให้บริการโฮสติงเชิงพาณิชย์ แต่การสนทนาของชุมชนกลับเผยให้เห็นการฟื้นคืนชีพอย่างไม่คาดคิดในสถานการณ์การพัฒนาและทดสอบแบบเฉพาะทาง

การขึ้นและลงของ UML สำหรับการโฮสติง

User Mode Linux เคยมีช่วงเวลาสั้นๆ ในแสงสปอตไลต์เชิงพาณิชย์ในช่วงต้นทศวรรษ 2000 บริษัทโฮสติงหลายแห่ง รวมถึงสิ่งที่ต่อมาคือ Linode สร้างบริการเซิร์ฟเวอร์ส่วนตัวเสมือนเริ่มต้นของพวกเขาบนเทคโนโลยี UML แนวทางนี้ให้ข้อได้เปรียบที่น่าสนใจในช่วงที่ตัวเลือกการสร้างระบบเสมือนจริงแบบเต็มยังไม่成熟 หรือมีราคาแพงเกินไป ไม่เหมือนกับสภาพแวดล้อม chroot แบบง่ายๆ UML ให้การแยกเคอร์เนลอย่างสมบูรณ์ ทำให้ลูกค้ามีสิทธิ์ root จริงภายในเครื่องเสมือนของพวกเขาโดยไม่กระทบต่อความปลอดภัยของระบบโฮสต์ สมาชิกชุมชนที่มีประสบการณ์ในอุตสาหกรรมโฮสติงรายหนึ่งระบุถึงข้อจำกัดในทางปฏิบัติที่ปรากฏในที่สุด: ประเด็นหลักคือประสิทธิภาพ ฉันเคยทำงานให้บริษัทโฮสติงที่ขายเครื่องเสมือนบนพื้นฐาน UML ขณะที่เราทดลองใช้ Xen เป็นผู้สืบทอด ก่อนจะย้ายไปใช้ KVM แทน โอเวอร์เฮดด้านประสิทธิภาพโดยเฉพาะเห็นได้ชัดสำหรับเวิร์กโหลดที่เน้นการทำงาน I/O อย่างหนักซึ่งเกี่ยวข้องกับการดำเนินการของระบบไฟล์และเครือข่าย เมื่อ KVM พัฒนาจน成熟 พร้อมด้วยคุณสมบัติเช่นการย้ายถ่ายแบบ live และไดรเวอร์ virtio กรณีเชิงพาณิชย์สำหรับการโฮสติงด้วย UML ก็ค่อยๆ จางหายไป

การใช้งาน UML ที่โดดเด่นในอดีต

  • ผู้ให้บริการโฮสติ้ง VPS รายแรกๆ อย่าง Linode และอื่นๆ (ยุค 2000)
  • การพัฒนาและแก้ไขข้อผิดพลาดของเคอร์เนล
  • การทดสอบระบบไฟล์และเน็ตเวิร์กสแต็ก
  • การกู้คืนระบบ
  • วัตถุประสงค์ทางการศึกษาเพื่อทำความเข้าใจการทำงานภายในของเคอร์เนล
  • การทดสอบ nested virtualization (UML ภายใน UML)

ช่องทางเฉพาะของ UML ในการพัฒนาและทดสอบ

แม้จะเลือนหายไปจากวงการโฮสติงเชิงพาณิชย์ แต่ UML กลับพบคุณค่าที่ยั่งยืนในขั้นตอนการทำงานของการพัฒนา โดยเฉพาะสำหรับการแฮกเคอร์เนลและการทดสอบระบบ ลักษณะเฉพาะของสถาปัตยกรรมทำให้มันเหมาะสมอย่างยิ่งสำหรับการดีบักส่วนประกอบระดับเคอร์เนลที่ซับซ้อน นักพัฒนาสามารถแนบ GDB ตรงไปยังอินสแตนซ์ UML โดยตรง ช่วยให้สามารถตรวจสอบและดีบักอย่างละเอียด ซึ่งจะเป็นเรื่องท้าทายหากใช้การสร้างระบบเสมือนจริงแบบดั้งเดิม เทคโนโลยีนี้ยังรองรับความสามารถในการซ้อนชั้นที่น่าทึ่ง—ผู้ใช้รายงานว่าสามารถรัน UML ภายใน UML อีกที สร้างสภาพแวดล้อมที่ซ้อนกันหลายชั้นเพื่อการทดสอบ การพัฒนาล่าสุดยังขยายขีดความสามารถในการทดสอบของ UML ไปอีกขั้น ผู้ใช้หนึ่งท่านเน้นย้ำการใช้งานปัจจุบันที่สร้างสรรค์: มันคือการทดสอบ การใช้โหมด timetravel คุณสามารถข้ามการ sleep และเร่งความเร็วการทดสอบหน่วยของคุณได้อย่างมาก ฟังก์ชันการเดินทางข้ามเวลานี้อนุญาตให้นักพัฒนาเร่งผ่านความล่าช้าและการดำเนินการ sleep เร่งรอบการทดสอบสำหรับโค้ดที่อ่อนไหวต่อเวลาได้อย่างมาก

สถาปัตยกรรมทางเทคนิคและข้อมูลเชิงลึกจากชุมชน

การสนทนาเผยให้เห็นรายละเอียดทางเทคนิคที่น่าสนใจเกี่ยวกับการทำงานของ UML ภายใต้พื้นผิว ในการนำไปใช้ดั้งเดิม กระบวนการของ guest ใน UML จริงๆ แล้วทำงานเป็นกระบวนการของโฮสต์ โดย guest kernel จะดักจับ system call ผ่าน ptrace และเปลี่ยนเส้นทางพวกมันอย่างเหมาะสม แนวทางนี้รักษาภาพลวงตาของเครื่องเสมือนที่สมบูรณ์ ในขณะที่ใช้ประโยชน์จากการดำเนินการ CPU จริงของโฮสต์ ตามที่คำอธิบายทางเทคนิคโดยละเอียดระบุ: guest kernel (ซึ่งเป็นกระบวนการ userland) โดยพื้นฐานแล้วรันพวกมันภายใต้ ptrace() และจับ system call ทั้งหมดที่สร้างโดยกระบวนการ guest และเปลี่ยนเส้นทางพวกมันเพื่อให้พวกมันดำเนินการภายใน guest kernel แทน รุ่นต่อๆ มาได้แนะนำโหมด skas (Separate Kernel Address Space) แม้แพตช์ host kernel ที่จำเป็นจะไม่เคยถูกรวมเข้ากับ upstream ชุมชนยังระบุถึงความคืบหน้าล่าสุดเกี่ยวกับข้อจำกัดที่มีมายาวนาน โดยในที่สุดการรองรับ SMP ก็ถูกนำไปใช้และเข้าคิวสำหรับการเผยแพร่ครั้งต่อไป ซึ่งเป็นการจัดการกับสิ่งที่เคยเป็นข้อจำกัดสำคัญสำหรับการทดสอบเส้นทางโค้ดแบบมัลติโปรเซสเซอร์

สมัยก่อนมีโฮสต์ที่ให้เช่า VM แบบ UML นี่คือวิธีที่ Linode เริ่มต้นธุรกิจมาจริงๆ!

ความคิดเห็นนี้เน้นย้ำถึงความสำคัญทางประวัติศาสตร์ของ UML ในการวิวัฒนาการของอุตสาหกรรมโฮสติง แสดงให้เห็นว่าสิ่งที่เริ่มต้นจากความอยากรู้ทางเทคนิค กลายเป็นรากฐานเชิงพาณิชย์ชั่วคราว ก่อนจะถูกแทนที่ด้วยเทคโนโลยีที่มีประสิทธิภาพมากกว่า

รุ่นของการพัฒนา UML ที่สำคัญ

  • รุ่นแรก (ต้นฉบับ): Guest processes ทำงานเป็น host processes โดยใช้ ptrace สำหรับการดักจับ system call
  • โหมด skas: Separate Kernel Address Space เพื่อปรับปรุงประสิทธิภาพและความปลอดภัย (ต้องการ host kernel patches)
  • การพัฒนาปัจจุบัน: ได้รับการดูแลรักษาพร้อมกับฟีเจอร์ SMP support และ time-travel debugging ล่าสุด

เหตุใด UML จึงยังคงอยู่ ในโลกที่ถูกครอบงำโดยคอนเทนเนอร์

ในระบบนิยมปัจจุบันที่ถูกครอบงำโดยคอนเทนเนอร์และการสร้างระบบเสมือนจริงที่ใช้ฮาร์ดแวร์เร่งความเร็ว UML ครองพื้นที่ตรงกลางที่เป็นเอกลักษณ์ มันให้การแยกที่แข็งแกร่งกว่าคอนเทนเนอร์ ในขณะที่หลีกเลี่ยงโอเวอร์เฮดของการสร้างระบบเสมือนจริงแบบเต็มฮาร์ดแวร์ สำหรับกรณีการใช้งานเฉพาะทาง เช่น การพัฒนาระบบไฟล์ การทดสอบไดรเวอร์เครือข่าย หรือการวิจัยด้านความปลอดภัย UML นำเสนอความสามารถในการดีบักที่ทำซ้ำได้ยากด้วยเทคโนโลยีอื่นๆ ความสามารถในการสร้างและทำลายอินสแตนซ์เคอร์เนลได้อย่างรวดเร็ว ทำให้มันเหมาะอย่างยิ่งสำหรับการทดสอบการรวมต่อเนื่องของส่วนประกอบเคอร์เนล สมาชิกในชุมชนแบ่งปันการประยุกต์ใช้ที่สร้างสรรค์ รวมถึงการใช้ UML เพื่อกู้ระบบที่มีบูตเซกเตอร์เสียหาย โดยการบูตจาก root filesystem ของโฮสต์—เทคนิคที่ต้องการการกำหนดพารามิเตอร์อย่างระมัดระวังเพื่อหลีกเลี่ยงผลลัพธ์ที่ร้ายแรง แม้ UML อาจไม่เคยกลับมามีความสำคัญในเชิงพาณิชย์อีกต่อไป การคงอยู่ของมันในทูลเชนของนักพัฒนา แสดงให้เห็นถึงคุณค่าอันยั่งยืนของแนวทางการสร้างระบบเสมือนจริงแบบเฉพาะทางที่ให้ความสำคัญกับความสามารถในการดีบักและความยืดหยุ่นเหนือประสิทธิภาพดิบ

เรื่องราวของ User Mode Linux ทำหน้าที่เป็นเครื่องเตือนใจว่าเทคโนโลยีไม่ได้หายไปเสมอเมื่อถูกแทนที่—พวกมันมักจะพบชีวิตใหม่ในช่องทางเฉพาะทาง ตั้งแต่จุดเริ่มต้นในฐานะวิธีการสร้างระบบเสมือนจริงแบบใหม่ ไปจนถึงบทบาทปัจจุบันในการพัฒนาและทดสอบเคอร์เนล UML ยังคงวิวัฒนาการต่อไป การเดินทางของมันสะท้อนให้เห็นรูปแบบกว้างๆ ของการที่เทคโนโลยีคอมพิวเตอร์ปรับตัวให้เข้ากับความต้องการที่เปลี่ยนแปลงไป โดยพบความยั่งยืนไม่ใช่ผ่านการยอมรับในวงกว้าง แต่ผ่านประโยชน์ใช้สอยที่ขาดไม่ได้ในโดเมนเฉพาะที่ซึ่งลักษณะเฉพาะของมันให้คุณค่าที่ไม่มีอะไรเทียบได้

อ้างอิง: Linux VM without VM software - User Mode Linux