Apakah baik memiliki beberapa versi Linux Kernel?

14

Suatu kali, saya menginstal beberapa patch kernel & ada yang salah pada server live di mana kami memiliki ratusan klien. Hanya satu kernel yang ada di sistem. Jadi, server sedang down untuk beberapa waktu, dan menggunakan live CD, kami mengaktifkan sistem & menjalankan & melakukan pekerjaan perbaikan lebih lanjut.

Sekarang pertanyaan saya: Apakah ide yang baik untuk memiliki 2 versi kernel, sehingga jika kernel rusak kita selalu dapat reboot dengan kernel lain yang tersedia? Tolong beritahu saya.

Juga, mungkinkah memiliki 2 versi dari kernel yang sama? Sehingga saya bisa memilih kernel lain ketika ada kernel yang rusak?

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

Bagaimana saya dapat memiliki salinan yang sama dari kernel ini, sehingga ketika kernel saya rusak, saya dapat memulai kernel cadangan?

Mani
sumber
4
Sepertinya saya telah menjawab pertanyaan Anda sendiri. Tidak ada kerugian untuk memiliki banyak kernel, selama Anda tahu mereka bekerja dengan sistem Anda, dan kadang-kadang bisa berguna jika Anda mengalami masalah dengan kernel tertentu karena suatu alasan.
Faheem Mitha
Terima kasih, Mungkin saya tidak menanyakan qns dengan benar. Bagaimana saya dapat memiliki salinan yang sama dari kernel ini, sehingga ketika kernel saya rusak, saya dapat memulai kernel cadangan?
Mani
2
Tentu Anda dapat memiliki kernel yang identik. Kernel hanyalah sebuah file pada disk. Anda dapat menyalin kernel yang ada dengan nama yang sedikit berbeda.
Faheem Mitha
Pada salah satu server yang saya warisi, ada 16 entri boot untuk 8 kernel yang berbeda di atasnya ... Anda tahu, sampai saya membersihkannya
Luke Kanada
Saya biasanya menyimpan kernel sebelumnya jika ada masalah.
Joshua

Jawaban:

18

Distribusi RedHat dan berbasis Debian menyimpan beberapa versi Kernel ketika Anda menginstal yang baru menggunakan yumatau apt-getsecara default. Itu dianggap praktik yang baik dan dilakukan persis untuk kasus yang Anda jelaskan: jika ada yang salah dengan kernel terbaru Anda selalu dapat reboot dan di GRUB memilih untuk boot menggunakan salah satu kernel sebelumnya.

Dalam distro RedHat Anda mengontrol jumlah kernel untuk tetap /etc/yum.confdengan installonly_limitpengaturan. Pada CentOS 7 baru saya, instal secara default ke 5.

Juga jika pada RedHat Anda menginstal kernel baru dari paket RPM yang harus Anda gunakan rpm -ivh, tidak rpm -Uvh: yang pertama akan membuat kernel yang lebih lama tetap di tempatnya sementara yang kemudian akan menggantinya.

Debian menyimpan kernel lama tetapi tidak secara otomatis menghapusnya. Jika Anda perlu membebaskan partisi boot Anda, Anda harus menghapus kernel lama secara manual (jangan lupa untuk meninggalkan setidaknya satu dari kernel sebelumnya). Untuk mendaftar semua paket kernel-install dan kernel-header gunakan dpkg -l | egrep "linux-(im|he)".

Menjawab pertanyaan Anda - Juga, Apakah mungkin untuk memiliki 2 versi dari kernel yang sama? - Ya itu mungkin. Saya tidak dapat memeriksanya di CentOS 6.5 sekarang, tetapi pada CentOS 7 saya dapat menghasilkan hasil yang diinginkan hanya dengan menduplikasi file /bootdirektori terkait kernel dan membangun kembali menu grub:

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
golem
sumber
terima kasih, saya sedang mengerjakannya. Tetapi dalam CentOS 6.5, tidak ada "grub2-mkconfig". apakah Anda tahu, bagaimana melakukan ini dalam centos 6.5, saya pikir grub2 hanya tersedia di Centos 7. Saya sekarang Googling, jika saya menemukan soln, akan memperbarui di sini.
Mani
Saya memodifikasi garis-garis itu agar sesuai dengan Centos 6.5 seperti di bawah ini dan macet dengan cara memperbarui grub.conf. ls -1 | grep "2.6.32-431.el6" | {saat membaca saya; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); dilakukan; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup
Mani
Terima kasih banyak!!! Ini berhasil dan saya memodifikasi seperti ini ls -1 | grep "2.6.32-431.el6" | {saat membaca saya; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); dilakukan; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup dan saya mengedit grup.conf secara manual. Anda dapat menjaga UUID tetap sama, Jika Anda akan menyalin di disk dan partisi yang sama.
Mani
7

Ya, itu mungkin dan saya akan mengatakan bahkan disarankan. Anda hanya perlu mengatur proses boot untuk menawarkan alternatif kepada Anda. Biasanya ini dilakukan dalam konfigurasi boot loader - biasanya Anda bisa menduplikasi entri yang ada dan mengubah nama file kernel image dan label entri menu boot.

Pada server produksi, ini biasanya bukan masalah, tetapi setiap kali Anda memutakhirkan kernel, ada baiknya memiliki hadiah cadangan. Beberapa distribusi Linux menawarkan rollback (biasanya didukung oleh kemampuan snapshotting sistem file) pada pembaruan paket untuk membuat proses semudah mungkin, tetapi bahkan dalam kasus-kasus itu saya akan cenderung membuat cadangan siap.

Adapun memiliki beberapa salinan dari kernel yang sama - bahkan itu masuk akal, tetapi seperti @goldilocks tunjukkan dalam komentar di bawah, jika kernel Anda rusak Anda harus berpikir tentang mengganti perangkat keras. Di sisi lain, meletakkan duplikat pada HDD fisik yang berbeda mungkin menghemat beberapa masalah. Namun perlu diingat, bahwa file gambar kernel hanya pernah digunakan saat boot.

peterph
sumber
Saya telah memodifikasi qns, Tolong beri tahu saya, Bagaimana cara memiliki kernel cadangan? (lebih disukai versi yang sama)
Mani
3
Anda tidak harus melakukan apa pun, mereka sudah ada di sana - tetapi dalam versi yang berbeda. Tidak ada gunanya memiliki dua versi yang sama kecuali Anda mengkompilasi sendiri salah satu dari mereka, jika tidak, itu hanya salinan yang identik. Masalah "korupsi" adalah semacam gadungan - dengan logika itu Anda akan membutuhkan dua salinan identik dari seluruh sistem jika bashbiner rusak, libcrusak, dll. Semua yang akan membuat sistem tidak berguna. File-file ini seharusnya tidak menjadi "rusak". Jika ya, ganti perangkat keras Anda.
goldilocks
1
@goldilocks Atau ganti sysadmin Anda, tergantung di mana masalahnya.
Philip Kendall
@goldilocks melihat jawaban yang diperbarui - mungkin masuk akal dalam kasus tertentu. Jelas, mengganti perangkat keras yang rusak harus lebih disukai bila memungkinkan.
peterph