Certa vez, eu estava instalando alguns patches de kernel e algo deu errado em um servidor ativo onde tínhamos centenas de clientes. Apenas um kernel estava lá no sistema. Então, o servidor ficou inativo por algum tempo e, usando um live CD, colocamos o sistema em funcionamento e fizemos outros trabalhos de reparo.
Agora minha pergunta: é uma boa ideia ter 2 versões do kernel, para que se o kernel estiver corrompido possamos sempre reiniciar com outro kernel disponível? Por favor, me avise.
Além disso, é possível ter 2 versões do mesmo kernel? Para que eu possa escolher 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 for corrompido, eu possa iniciar o kernel de backup?
Responder1
Tanto a distribuição baseada em RedHat quanto em Debian mantêm várias versões do Kernel quando você instala uma nova usando yum
ou apt-get
por 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ê pode sempre reiniciar e no GRUB optar por inicializar usando um dos kernels anteriores.
Nas distribuições RedHat você controla o número de kernels para manter /etc/yum.conf
a installonly_limit
configuraçã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, você deve usar rpm -ivh
, não rpm -Uvh
: o primeiro manterá o kernel antigo no lugar enquanto o último o substituirá.
O Debian mantém kernels antigos, mas não os remove automaticamente. Se você precisar liberar sua partição de boot você terá que remover os kernels antigos manualmente (lembre-se de deixar pelo menos um dos kernels anteriores). Para listar todos os pacotes de instalação e 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 verificar isso no CentOS 6.5 agora, mas no CentOS 7 consegui produzir o resultado desejado apenas duplicando os arquivos de /boot
diretó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
Responder2
Sim, é possível e 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 boot - normalmente você pode simplesmente duplicar a entrada que está lá 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 apoiada por recursos de snapshot do sistema de arquivos) em atualizações de pacotes para tornar o processo o mais simples possível, mas mesmo nesses casos eu tenderia a manter um backup pronto.
Quanto a ter várias cópias do mesmo kernel - até isso faria sentido, mas como @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 HDD físico diferente pode evitar alguns problemas. Mas tenha em mente que o arquivo de imagem do kernel é apenassempreusado durante a inicialização.