È successo di nuovo! Ho 4 server che si bloccano periodicamente e non ci sono informazioni stampate sui registri di sistema o sulla console seriale.
Inoltre, il servizio kdump di Linux non sta scrivendo core dump nella posizione predefinita di /var/crash
.
- Potete aiutarmi a capire perché?
- Importa se il mio filesystem di root è un volume LVM?
Ecco cosa ho provato.
Il mio sistema è Scientific Linux 6.5 con l'ultimo kernel.
[root@host1 ~]# uname -r 2.6.32-431.11.2.el6.x86_64 [root@host1 ~]# cat /etc/issue Scientific Linux release 6.5 (Carbon)
Il file
/etc/kdump.conf
è il file vanilla che contiene le impostazioni predefinite. La maggior parte delle righe sono commentate, ci sono solo due righe attive perpath
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
Garantisco che il
kdump
servizio è in esecuzione e chekdump
non è necessario ricostruire il mioinitrd
.[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 ~]#
Quindi, forzo un arresto anomalo del kernel usando questi comandi presi in prestito dalla Guida alla distribuzione di RHEL6: Capitolo 29. Il servizio kdump Crash Recovery :
Quindi digitare i seguenti comandi al prompt della shell:
echo 1 > /proc/sys/kernel/sysrq echo c > /proc/sysrq-trigger
Questo costringerà il kernel di Linux a bloccarsi
Il sistema si arresta in modo anomalo. Posso visualizzare i progressi sulla mia console seriale. Vedo il messaggio
Saving to the local filesystem UUID=e7abcdeb-1987-4c69-a867-fabdceffghi2
, ma subito dopo vedo lo strano messaggio diUsage: fsck.ext4
, che sembra che qualcosa stia chiamando accidentalmentefsck
invece di qualunque cosa dovrebbe fare. Non vedo alcuna menzione di un errore di memoria insufficiente o altro.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 quindi il sistema si riavvia (che è l'impostazione predefinita).
Quando il sistema torna online, non c'è nulla in
/var/crash
. Presumo che la discarica non sia stata scritta.[root@host1 ~]# ls -lA /var/crash/ total 0 [root@host1 ~]#
So che i crash dump possono funzionare in generale. Se dico
kdump
di copiare il core dump su un altro sistema con la seguente configurazione, kdump scriverà correttamente il core dump su un altro host:path vmcore ssh user@hostb.example.org sshkey /root/.ssh/kdump_id_rsa
Se ho impostato
default shell
in/etc/kdump.conf
e ricostruire initrd, e poi mandare in crash il sistema di nuovo ottengo un errore un po 'più informativo sumount: 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 #
Ma ora sono bloccato.