วิธีการหลีกเลี่ยงการหยุดทำงานกับ linux?


13

การอัปเดตซอฟต์แวร์เป็นประจำของ Ubuntu ต้องเริ่มต้นใหม่ (ซึ่งอาจมีผลข้างเคียงเช่นการหยุดทำงาน)

ฉันเห็น Ubuntu มีhttps://www.ubuntu.com/livepatchซึ่งอนุญาตให้อัปเดตเคอร์เนลโดยไม่ต้องบูตเครื่องใหม่นี่เป็นบริการชำระเงิน นอกจากนี้ยังมีksplice

มีการแจกแจง / กระบวนการลีนุกซ์ที่การอัพเกรด / แพตช์ไม่ต้องรีบูตเครื่องหรือไม่?

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


1
เซิร์ฟเวอร์ air-gapped ทำงานเป็นเครื่องที่ไม่ต้องรีบูตหรือไม่? ท้ายที่สุดหากไม่มีใครสามารถเข้าถึงได้คุณไม่จำเป็นต้องรีบูตหรือไม่ ;) - ตัวอย่างเช่นเซิร์ฟเวอร์การมอนิเตอร์ในโรงไฟฟ้าพลังงานนิวเคลียร์ที่ส่งเสียงเตือนหากมีสิ่งผิดปกติ (ใช่ฉันรู้ว่านี่น่าจะเป็นระบบเฉพาะแทนที่จะเป็นเซิร์ฟเวอร์แบบสุ่ม แต่ฉันใช้ตัวอย่างเพียงเพื่อชี้ให้เห็นว่ามีบางครั้งที่การรีบูตเครื่องสำหรับ 'การอัปเดตความปลอดภัย' อาจเป็นความคิดจุกจิกอย่างสิ้นเชิง
djsmiley2k TMW

3
@ djsmiley2k เป็นหนึ่งในกรณีที่เครื่องที่คุณไม่เคยบูตเครื่องยังไม่ให้ความพร้อมเพียงพอ แต่คุณต้องการความซ้ำซ้อน
kasperd

@kasperd ตกลงดังนั้นกลุ่มของเครื่องที่ไม่รีบูต?
djsmiley2k TMW

3
@ djsmiley2k คำตอบสำหรับคำถามของฉันได้ระบุแล้วว่าทำไมฉันจึงพิจารณากลุ่มของเครื่องที่รีบูทครั้งละหนึ่งครั้งเพื่อให้เชื่อถือได้มากกว่าที่คุณไม่เคยรีบูต
kasperd

2
อะไรที่ทำให้คุณคิดว่าการหลีกเลี่ยงการหยุดทำงานของระบบแต่ละครั้งเป็นสิ่งที่ดีกว่า?
วอร์เรน

คำตอบ:


12

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

เรื่องเล็ก ๆ น้อยที่แสดงให้เห็นถึงสิ่งนี้: ฉันเพิ่งตรวจสอบปัญหาที่ยูทิลิตี้ตัวใดตัวหนึ่งได้เริ่มทำการแยกส่วนบนเครื่องจำนวนมาก ฉันลองดูที่ shared library ซึ่งมันเคยดูว่ามีอะไรที่อัพเกรดเมื่อเร็ว ๆ นี้มันพังหรือเปล่า ldd บอกว่ามันไม่ใช่ไฟล์เรียกทำงาน (แม้ว่าฉันจะดึงไบนารีตัวเดียวกันลงไปที่แล็ปท็อปของฉัน แต่ ldd ก็สามารถดูการพึ่งพาไลบรารีที่แชร์ได้ดี) ฉันพยายามก้าวผ่านมันใน gdb; มันแยกจากกันก่อนที่จะถึงคำสั่งแรก

เมื่อดูเวลาของความผิดฉันพบว่ามีการใช้ Ksplice patch เมื่อไม่นานมานี้ ฉันสำรอง patch และไบนารีไม่ได้ segfault จากนั้นเพิ่มมันกลับเข้ามาและมันก็เริ่ม segfaulting อีกครั้ง การรีบูตไปยังเคอร์เนลที่ได้รับการแพ็ตช์แล้วทำงานได้ดี มันกลับกลายเป็นแพทช์สำหรับรองรับ 32 บิตซึ่งกลุ่ม Ksplice ไม่ได้ใช้อย่างถูกต้อง สำหรับเครดิตของพวกเขาพวกเขาออกแพทช์คงที่ภายในไม่กี่ชั่วโมงและมันก็กลับไปทำงานอย่างถูกต้องบนกองเรือของเราโดยไม่ต้องแทรกแซง

อีกตัวอย่างหนึ่ง: Meltdown / Specter patches ถูกบุกรุกจนทีมเคอร์เนลของ Ubuntu ตัดสินใจว่าการปะแบบสดนั้นไม่สามารถใช้งานได้และทำให้ผู้คนต้องรีบูทระบบของตนไปยังเคอร์เนลคงที่ก่อนที่จะได้รับปะสดใหม่อีกครั้ง

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


30

มีความแตกต่างที่สำคัญระหว่างการให้บริการที่มีอยู่สูงและทำให้เครื่องแต่ละเครื่องพร้อมใช้งานสูง

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

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

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

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

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

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

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


ฉันชอบคำอธิบายความเสี่ยงของคุณ "patched vs booted กับเคอร์เนลใหม่ล่าสุด" .. อย่างไรก็ตามคุณไม่ได้ตอบคำถามของฉัน .. ซึ่งฉันสามารถใช้ถ้อยคำใหม่มีลินุกซ์ distros ที่มาพร้อมกับ 'livepatch' ออกจากกล่องหรือไม่
user75126

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

3
@ user75126 Ksplice ของ Oracle มีรุ่นทดลองใช้ฟรีและระดับฟรีสำหรับเดสก์ท็อป Ubuntu และ Fedora (เฉพาะ แต่ไม่บังคับใช้อย่างนี้) ปัญหาคือการสร้าง live patches นั้นเป็นเรื่องยากที่จะทำให้เป็นอัตโนมัติและแม้แต่ชิ้นส่วนที่เป็นแบบอัตโนมัติก็ใช้เวลานานเช่นกัน การสร้างแพตช์เหล่านี้เป็นการดำเนินการที่ใช้แรงงานค่อนข้างมากและเป็นเรื่องที่สมเหตุสมผลสำหรับ บริษัท ที่คิดค่าใช้จ่าย ฉันค้นหาสิ่งที่ต้องใช้ในการสร้างแพทช์สดด้วยตัวเอง ฉันไม่ได้มีเวลาเช่นนั้นในวันของฉัน
Michael Hampton

12
@ user75126 เป็นวิธีปฏิบัติที่ไม่ดีในไซต์นี้เพื่อเปลี่ยนชื่อคำถามและเนื้อหาในแบบที่ทำให้คำตอบที่มีอยู่นั้นไม่ถูกต้อง หากคุณต้องการถามคำถามอื่นให้ถามคำถามอื่น
Greg Schmit

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