ฉันจะอัพเกรดเคอร์เนลเซิร์ฟเวอร์ของฉันโดยไม่ต้องรีบูตเครื่องได้อย่างไร


29

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

ฉันสังเกตเห็นคำถามเกี่ยวกับ Unix.SEที่ระบุ:

คุณสามารถสร้างแพตช์ ksplice ของคุณเองเพื่อโหลดลงในเคอร์เนลของคุณเอง

ที่ดี! แต่อย่างไร!

ฉันได้ติดตั้งkspliceแพคเกจฟรีใน repo บนเดสก์ท็อปของฉัน (ไม่ใช่ksplice-uptrackที่ไม่ใช่ฟรี) และตอนนี้ต้องการสร้างและใช้การปรับปรุง กระบวนการคืออะไร มีสคริปออกเพื่อทำให้กระบวนการทำงานอัตโนมัติหรือไม่?

ยิ่งไปกว่านั้นถ้าเครื่องจักรทั้งหมดที่จำเป็นสำหรับการอัพเกรดแบบไม่มี reboot อยู่ในเคอร์เนล (และkspliceแพ็คเกจ) ทำไมเราถึงไม่ใช้ประโยชน์จากมันโดยปริยาย?


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


หมายเหตุ 1:ฉันมีความสุขสำหรับการแก้ปัญหาข้าง ksplice แต่มันก็ต้องส่งสิ่งเดียวกัน: กลิ้งการปรับปรุงเคอร์เนลที่สามารถนำไปใช้โดยไม่ต้องรีบูตเครื่องเซิร์ฟเวอร์

หมายเหตุ 2:ฉันจะพูดอีกครั้ง "บริการ" หลักของ ksplice ไม่รองรับเซิร์ฟเวอร์ Ubuntu มันเคยเป็นมา แต่มันก็ไม่ได้เกิดขึ้นอีกแล้ว เมื่อฉันพูดถึงความต้องการใช้ ksplice ฉันกำลังพูดถึงเครื่องมือโอเพนซอร์สในkspliceแพ็คเกจ คำตอบใด ๆ ที่พูดถึงksplice-uptrackอาจไม่ใช่สิ่งที่ฉันเป็นเพราะนี่คือส่วนที่รวมเข้ากับ "บริการ" ข้างต้นโดยตรง

คำตอบ:


6

คำตอบอื่น ๆ ทั้งหมดที่นี่ยอดเยี่ยม แต่สำหรับ Ubuntu โดยเฉพาะตอนนี้ Canonical ให้บริการนี้ใน 16.04

สิ่งนี้ใช้เทคโนโลยีการปะสดในเคอร์เนลอัปสตรีมตั้งแต่เปิดตัว 4.0


6

ฉันไม่ค่อยรู้เรื่อง ksplice มากนัก แต่คิดว่าฉันจะพูดถึงมัน - คุณเคยได้ยินkexecไหม? นี่อาจเป็นสิ่งที่คุณต้องการ

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

คุณสามารถดูที่นักพัฒนาของ IBM ทำงานเกี่ยวกับบทความเพื่อตัดสินใจว่ามันเหมาะสมกับความต้องการของคุณหรือไม่


5
+1 สำหรับkexecแต่ในสาระสำคัญมันเป็นรีบูตร้อน - IE เคอร์เนลจะถูกโหลดอีกครั้งตั้งแต่เริ่มต้นดังนั้นสคริปต์ init และอื่น ๆ ก็ยังคงถูกเรียกใช้ นี่ไม่ใช่เทคนิคการรีบูต แต่บริการที่ทำงานอยู่จะหยุดทำงาน
jackweirdy

ใช่ฉันรู้แล้ว แต่ฉันไม่ได้อ่านอะไรเลยเกี่ยวกับ ksplice เพื่อค้นหาว่ามันแตกต่างกันอย่างไร
Marcin Kaminski

1
ตามen.wikipedia.org/wiki/Kspliceให้kspliceใช้ patch diff แบบไบนารีกับเคอร์เนลที่กำลังทำงานอยู่ในขณะที่มันยังอยู่ในหน่วยความจำ
jackweirdy

2
ฉันจะต้องอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้เพราะมันน่าสนใจ ดังนั้นเวลาที่คุณพยายามบันทึกจากการรีเซ็ต? : D
Marcin Kaminski

3

ksplice จะอนุญาตให้สลับเคอร์เนลโดยไม่จำเป็นต้องรีบูต Uptrack ทำงานได้ภายใน ksplice และมีไฟล์กำหนดค่าที่สามารถแก้ไขได้ใน /etc/uptrack/uptrack.conf


2

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

  • kGraftที่คุณพูดถึงไปแล้ว หนึ่งในวิศวกรเคอร์เนลของอูบุนตูมีบล็อกโพสต์ที่เขาลองใช้ : ใช้ kgraft กับ ubuntu
  • kpatchปัจจุบันอยู่ในการพัฒนาโดย Red Hat เว็บไซต์ github มีคำแนะนำสำหรับทดลองใช้บน Ubuntu: https://github.com/dynup/kpatch#ubuntu-1404

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับทั้งคู่ได้ที่นี่: SUSE Posts kGraft, Red Hat Posts Kpatch patches


1

wiki ของ Arch Linux มีคำแนะนำ: https://wiki.archlinux.org/index.php/ksplice

ส่วนเดียวที่ดูเหมือนจะเฉพาะเจาะจง distro คือวิธีการติดตั้ง ksplice เอง เมื่อคุณได้ทราบแล้วว่ามันดูเหมือนว่าฉันคิดว่าสิ่งนี้ควรจะได้รับคุณในทางของคุณ


1
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Eric Carvalho

0

ตั้งแต่วันที่ 16 กรกฎาคม 2558 "Oracle Ksplice ให้บริการฟรีใน Fedora และ Ubuntu Desktop Editions" อย่างเป็นทางการ

เพียงติดตั้งไฟล์. deb ที่ดาวน์โหลดมาคุณสามารถมาที่นี่ได้

หากคุณลองแล้วคุณอาจจะต้องพึ่งพาการแก้ไขด้วยsudo dpkg -i ksplice-uptrack.debsudo apt-get install -f

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