Já aconteceu de novo! Eu tenho quatro servidores que estão travando periodicamente e não há informações impressas nos logs do sistema ou no console serial.
Além disso, o serviço kdump do Linux não está gravando dumps principais no local padrão de /var/crash
.
- Você pode me ajudar a descobrir o porquê?
- Importa se meu sistema de arquivos raiz é um volume LVM?
Aqui está o que eu tentei.
Meu sistema é o Scientific Linux 6.5 com o kernel mais recente.
[root@host1 ~]# uname -r 2.6.32-431.11.2.el6.x86_64 [root@host1 ~]# cat /etc/issue Scientific Linux release 6.5 (Carbon)
O arquivo
/etc/kdump.conf
é o arquivo vanilla que contém as configurações padrão. A maioria das linhas é comentada, existem apenas duas linhas ativas parapath
ecore_collector
.#net my.server.com:/export/tmp #net user@my.server.com path /var/crash core_collector makedumpfile -c --message-level 1 -d 31 #core_collector scp
Garanto que o
kdump
serviço esteja sendo executado e quekdump
não seja necessário reconstruir o meuinitrd
.[root@host1 ~]# chkconfig --list kdump kdump 0:off 1:off 2:off 3:on 4:on 5:on 6:off [root@host1 ~]# /etc/init.d/kdump restart Stopping kdump: [ OK ] Starting kdump: [ OK ] [root@host1 ~]#
Em seguida, forço uma falha no Kernel usando esses comandos emprestados no Guia de Implantação do RHEL6: Capítulo 29. O Serviço de Recuperação de Falhas do kdump :
Em seguida, digite os seguintes comandos em um prompt de shell:
echo 1 > /proc/sys/kernel/sysrq echo c > /proc/sysrq-trigger
Isso forçará o kernel do Linux a travar
O sistema trava. Eu posso ver o progresso no meu console serial. Eu vejo a mensagem
Saving to the local filesystem UUID=e7abcdeb-1987-4c69-a867-fabdceffghi2
, mas imediatamente depois vejo a estranha mensagem deUsage: fsck.ext4
, que parece que algo está chamando acidentalmente, emfsck
vez do que deveria estar fazendo. Não vejo menção a um erro de falta de memória ou algo assim.host1.example.org login: SysRq : Trigger a crash BUG: unable to handle kernel NULL pointer dereference at (null) ... ... skipping 50 lines of output ... Creating block device ram8 Creating block device ram9 Creating Remain Block Devices Making device-mapper control node Scanning logical volumes Reading all physical volumes. This may take a while... No volume groups found No volume groups found Activating logical volumes No volume groups found No volume groups found Free memory/Total memory (free %): 58272 / 116616 ( 49.9691 ) Saving to the local filesystem UUID=e7abcdeb-1987-4c69-a867-fabdceffghi2 Usage: fsck.ext4 [-panyrcdfvtDFV] [-b superblock] [-B blocksize] [-I inode_buffer_blocks] [-P process_inode_size] [-l|-L bad_blocks_file] [-C fd] [-j external_journal] [-E extended-options] device Emergency help: -p Autom
E então o sistema é reiniciado (que é o padrão).
Quando o sistema volta a ficar online, não existe nada
/var/crash
. Presumo que o despejo de memória não foi gravado.[root@host1 ~]# ls -lA /var/crash/ total 0 [root@host1 ~]#
Eu sei que despejos de memória podem funcionar em geral. Se eu pedir
kdump
para copiar o core dump para outro sistema com a seguinte configuração, o kdump gravará com êxito o core dump em outro host:path vmcore ssh user@hostb.example.org sshkey /root/.ssh/kdump_id_rsa
Se eu definir
default shell
no/etc/kdump.conf
e reconstruir initrd, e depois travar o sistema novamente eu recebo um erro um pouco mais informativo sobremount: can't find /mnt in /etc/fstab
Free memory/Total memory (free %): 58272 / 116616 ( 49.9691 ) Saving to the local filesystem UUID=e720481b-1987-4c69-a867-f2b4cba3b312 Usage: fsck.ext4 [-panyrcdfvtDFV] [-b superblock] [-B blocksize] [-I inode_buffer_blocks] [-P process_inode_size] [-l|-L bad_blocks_file] [-C fd] [-j external_journal] [-E extended-options] device Emergency help: -p Automatic repair (no questions) -n Make no changes to the filesystem -y Assume "yes" to all questions -c Check for bad blocks and add them to the badblock list -f Force checking even if filesystem is marked clean -v Be verbose -b superblock Use alternative superblock -B blocksize Force blocksize when looking for superblock -j external_journal Set location of the external journal -l bad_blocks_file Add to badblocks list -L bad_blocks_file Set badblocks list mount: can't find /mnt in /etc/fstab dropping to initramfs shell exiting this shell will reboot your system /sys/block #
Mas agora estou preso.