É bom ter várias versões do Linux Kernel?


14

Uma vez, eu estava instalando alguns patches do kernel e algo deu errado em um servidor ao vivo onde tínhamos centenas de clientes. Apenas um kernel estava lá no sistema. Portanto, o servidor ficou inativo por algum tempo e, usando um CD ao vivo, colocamos o sistema em funcionamento e fizemos os reparos posteriores.

Agora, minha pergunta: é uma boa idéia ter duas versões do kernel, para que, se o kernel estiver corrompido, sempre possamos reiniciar com outro kernel disponível? Por favor deixe-me saber.

Além disso, é possível ter 2 versões do mesmo kernel? Para que eu possa escolher o outro kernel quando houver corrupção do kernel?

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

Como posso ter a mesma cópia deste kernel, para que, quando meu kernel corrompa, eu possa iniciar o kernel de backup?


4
Parece-me que você respondeu sua própria pergunta. Não há desvantagem em ter vários kernels, desde que você saiba que eles funcionam com seu sistema, e pode ser útil ocasionalmente se você tiver problemas com um kernel específico por algum motivo.
— Faheem Mitha

Obrigado, pode ser que eu não perguntei o qns corretamente. Como posso ter a mesma cópia deste kernel, para que, quando meu kernel corrompa, eu possa iniciar o kernel de backup?
— Mani

2
Claro que você pode ter o kernel idêntico. O kernel é apenas um arquivo no disco. Você pode copiar seu kernel existente com um nome ligeiramente diferente.
— Faheem Mitha

Em um dos servidores que herdei, que tinha 16 entradas de inicialização para 8 núcleos diferentes sobre isso ... Você sabe, até que eu limpa-lo
— canadense Luke

Eu costumo manter o kernel anterior no caso de algo dar errado.
— Joshua Joshua

Respostas:


18

A distribuição baseada em RedHat e Debian mantém várias versões do Kernel quando você instala uma nova usando yumou apt-getpor padrão. Isso é considerado uma boa prática e é feito exatamente para o caso que você descreve: se algo der errado com o kernel mais recente, você sempre poderá reiniciar e no GRUB optar por inicializar usando um dos kernels anteriores.

Nas distros do RedHat, você controla o número de kernels para manter /etc/yum.confa installonly_limitconfiguração. Na minha nova instalação do CentOS 7, o padrão é 5.

Além disso, se no RedHat você estiver instalando um novo kernel a partir do pacote RPM rpm -ivh, não deve rpm -Uvh: o anterior manterá o kernel antigo no lugar enquanto o posterior o substituirá.

O Debian mantém kernels antigos, mas não os remove automaticamente. Se você precisar liberar sua partição de inicialização, precisará remover manualmente os kernels antigos (lembre-se de deixar pelo menos um dos kerneles anteriores). Para listar todos os pacotes de instalação do kernel e de cabeçalhos do kernel, use dpkg -l | egrep "linux-(im|he)".

Respondendo à sua pergunta - Além disso, é possível ter uma versão 2 do mesmo kernel? -- Sim, é possível. Não posso verificá-lo no CentOS 6.5 no momento, mas no CentOS 7 consegui obter o resultado desejado apenas duplicando os arquivos de /bootdiretório relacionados ao kernel e reconstruindo o 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

obrigado, estou trabalhando nisso. Mas no CentOS 6.5, não há "grub2-mkconfig". você sabe, como fazer isso no centos 6.5, acho que o grub2 está disponível apenas no centos 7. Estou pesquisando no Google agora, se encontrar um soln, será atualizado aqui.
— Mani

Eu modifiquei essas linhas para se adequar ao Centos 6.5, como abaixo, e fiquei preso com a atualização do grub.conf. ls -1 | grep "2.6.32-431.el6" | {enquanto lê i; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); feito; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup
— Mani

Muito obrigado!!! Funcionou e eu modifiquei assim ls -1 | grep "2.6.32-431.el6" | {enquanto lê i; \ do cp $ i $ (echo $ i | sed 's / el6 / el6.backup /'); feito; } cp /boot/grub/grub.conf cp /boot/grub/grub.conf.backup e editei o grup.conf manualmente. Você pode manter o UUID igual, se quiser copiar no mesmo disco e partição.
— Mani

7

Sim, é possível e eu diria até aconselhável. Você só precisa configurar o processo de inicialização para oferecer a alternativa. Normalmente, isso é feito na configuração do carregador de inicialização - geralmente você pode apenas duplicar a entrada existente e alterar o nome do arquivo da imagem do kernel e o rótulo da entrada do menu de inicialização.

Em um servidor de produção, isso geralmente não é um problema, mas sempre que você atualiza o kernel, é uma boa ideia ter um backup presente. Algumas distribuições Linux oferecem reversão (geralmente suportada pelos recursos de captura instantânea do sistema de arquivos) em atualizações de pacotes para tornar o processo o mais simples possível, mas mesmo nesses casos, eu costumava manter um backup pronto.

Quanto a ter várias cópias do mesmo kernel - até isso faria sentido, mas como o @goldilocks aponta no comentário abaixo, se o seu kernel for corrompido, você deve pensar em substituir o hardware. Por outro lado, colocar a duplicata em um disco rígido físico diferente pode poupar alguns problemas. Mas tenha em mente, que o arquivo de imagem do kernel só é sempre usado durante a inicialização.


Eu modifiquei o qns, por favor me avise, como ter um kernel de backup? (de preferência a mesma versão)
— Mani

3
Você não deveria ter que fazer nada, eles já estão lá - mas em versões diferentes. Não faz sentido ter duas da mesma versão, a menos que você tenha compilado uma delas, caso contrário, elas são apenas cópias idênticas. A questão da "corrupção" é meio falsa - por essa lógica, você precisaria de duas cópias idênticas de todo o sistema, caso o bashbinário estivesse corrompido, o libccorrompido etc. etc., o que tornará o sistema inútil. Esses arquivos não devem estar "corrompidos". Se estiverem, substitua o seu hardware.
— Goldilocks

1
@goldilocks Ou substitua o administrador do sistema, dependendo da falha.
— Philip Kendall

@goldilocks veja a resposta atualizada - pode fazer sentido em casos específicos. Obviamente, a substituição de hardware defeituoso deve ser preferida sempre que possível.
— Peterph
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.