ดีไหมถ้ามี Linux Kernel หลายรุ่น?


14

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

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

นอกจากนี้เป็นไปได้หรือไม่ที่จะมีเคอร์เนลเดียวกัน 2 เวอร์ชัน? เพื่อให้ฉันสามารถเลือกเคอร์เนลอื่นเมื่อมีความเสียหายเคอร์เนล?

Edited:
My Server Details:
2.6.32-431.el6.x86_64
CentOS release 6.5 (Final)

ฉันจะมีสำเนาเดียวกันของเคอร์เนลนี้ดังนั้นเมื่อเคอร์เนลของฉันเสียหายฉันสามารถเริ่มเคอร์เนลสำรองได้อย่างไร


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

ขอบคุณฉันอาจจะไม่ได้ถาม qns อย่างถูกต้อง ฉันจะมีสำเนาเดียวกันของเคอร์เนลนี้ได้อย่างไรเมื่อเคอร์เนลของฉันเสียหายฉันสามารถเริ่มเคอร์เนลสำรองได้
มณีม

2
แน่นอนคุณสามารถมีเคอร์เนลที่เหมือนกัน เคอร์เนลเป็นเพียงไฟล์บนดิสก์ คุณสามารถคัดลอกเคอร์เนลที่มีอยู่ด้วยชื่อแตกต่างกันเล็กน้อย
Faheem Mitha

ที่หนึ่งในเซิร์ฟเวอร์ที่ฉันสืบทอดมามันมีรายการบูต 16 รายการสำหรับเมล็ดที่แตกต่างกัน 8 รายการ ... คุณรู้จนกระทั่งฉันทำความสะอาด
ลุคแคนาดา

ฉันมักจะเก็บเคอร์เนลก่อนหน้านี้ในกรณีที่มีสิ่งผิดปกติ
Joshua

คำตอบ:


18

ทั้ง RedHat และ Debian ที่ใช้การกระจายเก็บเคอร์เนลหลายเวอร์ชันเมื่อคุณติดตั้งใหม่โดยใช้yumหรือapt-getโดยค่าเริ่มต้น ซึ่งถือเป็นแนวปฏิบัติที่ดีและถูกต้องสำหรับกรณีที่คุณอธิบาย: หากมีสิ่งผิดปกติกับเคอร์เนลล่าสุดคุณสามารถรีบูตได้และใน GRUB เลือกที่จะบูตโดยใช้หนึ่งในเมล็ดก่อนหน้านี้

ใน distros RedHat คุณสามารถควบคุมจำนวนเมล็ดไปเก็บไว้ใน/etc/yum.confที่มีinstallonly_limitการตั้งค่า CentOS 7 สดของฉันติดตั้งเริ่มต้นที่ 5

นอกจากนี้หากใน RedHat คุณกำลังติดตั้งเคอร์เนลใหม่จากแพ็กเกจ RPM ที่คุณควรใช้rpm -ivhไม่ใช่rpm -Uvh: อดีตจะเก็บเคอร์เนลเก่าไว้ในขณะที่ภายหลังจะแทนที่มัน

Debian เก็บเมล็ดพืชไว้ แต่ไม่ลบเมล็ดออกโดยอัตโนมัติ หากคุณต้องการเพิ่มจำนวนพาร์ติชันสำหรับเริ่มระบบคุณต้องลบเมล็ดเก่าด้วยตนเอง (อย่าลืมปล่อยเคอร์เนลก่อนหน้านี้อย่างน้อยหนึ่งอัน) ในการแสดงรายการแพ็คเกจการติดตั้งเคอร์เนลและเคอร์เนลส่วนหัวใช้dpkg -l | egrep "linux-(im|he)"ทั้งหมด

ตอบคำถามของคุณ - นอกจากนี้ยังมีเคอร์เนลรุ่นเดียวกันได้หรือไม่? - ใช่เป็นไปได้ ฉันไม่สามารถตรวจสอบได้บน CentOS 6.5 ในขณะนี้ แต่ใน CentOS 7 ฉันสามารถให้ผลลัพธ์ที่ต้องการโดยเพียงแค่ทำซ้ำไฟล์ที่เกี่ยวข้องกับเคอร์เนลของ/bootไดเรกทอรีและสร้างเมนูด้วง:

cd /boot

# Duplicate kernel files; 
# "3.10.0-123.el7" is a substring in the name of the current kernel
ls -1 | grep "3.10.0-123.el7" | { while read i; \
    do cp $i $(echo $i | sed 's/el7/el7.backup/'); done; }

# Backup the grub configuration, just in case
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup

# Rebuild grub configuration
grub2-mkconfig -o /boot/grub2/grub.cfg

# At this point you can reboot and see that a new kernel is available 
# for you to choose in GRUB menu

ขอบคุณฉันกำลังทำงานกับมัน แต่ใน CentOS 6.5 ไม่มี "grub2-mkconfig" คุณรู้วิธีการทำเช่นนี้ใน centos 6.5 ฉันคิดว่า grub2 ใช้ได้เฉพาะใน Centos 7 ฉันเป็น Googling ตอนนี้ถ้าฉันหา soln จะอัปเดตที่นี่
มณี

ฉันแก้ไขบรรทัดเหล่านั้นเพื่อให้เหมาะกับ Centos 6.5 ดังต่อไปนี้และติดอยู่กับวิธีอัปเดต grub.conf ls -1 | grep "2.6.32-431.el6" | {ในขณะที่อ่าน i; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); ทำ; } CP /boot/grub/grub.conf CP /boot/grub/grub.conf.backup
มณี

ขอบคุณมาก!!! มันทำงานและฉันแก้ไขเช่นนี้ ls -1 | grep "2.6.32-431.el6" | {ในขณะที่อ่าน i; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); ทำ; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup และฉันแก้ไข grup.conf ด้วยตนเอง คุณสามารถเก็บ UUID ไว้เหมือนเดิมได้หากคุณจะคัดลอกในดิสก์และพาร์ติชั่นเดียวกัน
มณีม

7

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

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

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


ฉันแก้ไข qns แล้วโปรดแจ้งให้ฉันทราบว่าจะมีเคอร์เนลสำรองได้อย่างไร (ดีกว่ารุ่นเดียวกัน)
มณี

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

1
@ goldilocks หรือเปลี่ยนดูแลระบบของคุณขึ้นอยู่กับความผิดที่เป็น
Philip Kendall

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