Mostrando entradas con la etiqueta kernel. Mostrar todas las entradas
Mostrando entradas con la etiqueta kernel. Mostrar todas las entradas

viernes, 6 de septiembre de 2013

Cómo hacer strace a un Apache

Hola,

¿Cómo podemos llegar más a fondo que la información que nos dan los logs de apache? Por ejemplo las llamadas al sistema, ficheros que se abren, etc...

Una forma elegante usando strace, por ejemplo con:
strace -f -s 4096 -o /tmp/asd.out `pgrep apache| awk '{print "-p "$1}'|xargs` 
Si abrimos otro terminal con una sesion SSH y hacermos un tail de /tmp/asd.out, podremos ir viendo como se atiende cada petición HTTP
tail -f /tmp/asd.out
>4) = 548
5257  poll([{fd=11, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
5257  write(11, "-\0\0\0\3select type,value from cdef_items where id=7", 49^C

Analizando el strace lanzado:

-t Trace child processes as they are created by currently traced processes as a result of the fork(2) system call.

-s Specify the maximum string size to print (the default is 32).  Note that filenames are not  considered  strings  and  are  always printed in full

-o Fichero de salida

-p El PID que queremos stracear (Como apache tiene varios PIDS, hacemos el subcomando `pgrep apache| awk ... que nos dara una salia << -p pidApache_1 -p pidApache_2 >>

Saludos

martes, 30 de abril de 2013

Ext4 group descriptors corrupted + LVM cifrado

Hola!! he aquí otro error que da como resultado una petada al puro estilo Windows... PC sin arracar.

Mira que hay veces que he apagado mal el portátil y bueno, es algo que nunca me había pasado, hasta hoy. Cómo arreglarlo, facil:

Arrancamos con nuestra distro USB/CD live como Arch.

Cargamos el módulo del kernel
modprobe dm-crypt

Ejecutamos
cryptsetup luksOpen /dev/sda5 crypt1

Escaneamos los volumenes LVM:
vgscan --mknodes
vgchange -ay

Y le damos caña:
fsck /dev/mapper/xubuntu-root

Suerte!!

miércoles, 16 de mayo de 2012

XenServer - Ubuntu 12.04

Hola! vamos a ver como instalar Ubuntu12.04 en XenServer. Como siempre utilizo el metodo HVM y luego la conversión a PV.

Instalamos desde la ISO como un "Other Install Media", poniendo así el espacio de disco, RAM y CPU que queramos, arrancamos desde CD e instalamos Ubuntu. A tener en cuenta: 
  • Utilizar EXT3 o si quereis utilizar EXT4, hay que tener la partición /boot en un disco EXT3 o EXT2
  • Utilizar un particionado personalizado y poner que la Swap sea el disco xdva1 y la raiz (o el disco susceptible a ser ampliado como xvda2) o mejor ahun, no pongas Swap (si hace falta, la montas luego como un VDI aparte ;)
Una vez instalado ajustamos la máquina para que sea paravirtual. 

  1. apt-get install linux-virtual
  2. cd /boot/ y  hacemos lo siguiente:
root@ubuntu12:/boot# ln -s vmlinuz-3.2.0-24-virtual vmlinuz.xen
root@ubuntu12:/boot# ln –s initrd.img-3.2.0-24-virtual initrd.img.xen

Nos conectamos al Dom0 y modificamos los siguientes parametros de la máquina virtual:
xenserver# xe vm-param-set uuid= HVM-boot-policy=""

xenserver# xe vm-param-set uuid= HVM-boot-params=""

xenserver# xe vm-param-set uuid= HVM-shadow-multiplier=""

xenserver# xe vm-param-set uuid= PV-bootloader-args="--kernel=/boot/vmlinuz.xen --ramdisk=/boot/initrd.img.xen"

xenserver# xe vm-param-set uuid= PV-args="root=/dev/xvda1 ro quiet console=hvc0 xencons=hvc0"

xenserver# xe vm-param-set uuid= PV-bootloader="pygrub"

xenserver# xe vbd-param-set uuid= bootable=true

Arrancamos la máquina virtual y si todo funciona OK ya estará corriendo para virtualizada, instalamos las XenTools y modificamos el fichero /etc/fstab

/dev/xvda1 / ext3 errors=remount-ro,barrier=0 0 1

Sin esta config en el fstab, la raiz se monta en RO eventualmente, de este modo funciona bien.

Tambien es necesario ajustar la tty por defecto para que sea hvc0:

sed -e “s/tty1/hvc0/ig” /etc/init/tty1.conf | sudo bash -c ‘cat > /etc/init/hvc0.conf
Con esto, ya teneis el nuevo template ;)
Saludos

miércoles, 22 de febrero de 2012

XenServer y Ubuntu Server - Problemas con los Kernel de los DomU

Hola amig@os, en diferentes entornos XenServer he visto que la configuración de los domU Ubuntu 10.04 o 8.04 paravirtualizados, tienen problemas de kernel. Estos problemas se manifiestan cuando por ejemplo hacemos una XenMotion, en algunos casos el domU queda totalmente colgado, o bien, parece que esta ok, pero tiene un problema de clocking que deja de dar servicios. Voy  a intentar resumir como arreglarlos.

En Ubuntu Server 8.04 LTS
  • Asegúrate de como mínimo tener un kernel 2.6.24-24-xen
  • Comprueba tu clocksource:
cat /sys/devices/system/clocksource/clocksource0/current_clocksource

Si este te retorna xen, significa que esta utilizando el reloj de su Dom0 y en algunos casos, da problemas con las XenMotions. Recomiendo el uso de jiffies, un reloj local para el DomU y configurar NTP.

Para cambiar el  clocksource hay que editar el fichero grub y añadir el flag clocksource=jiffies. Por ejemplo:
title        Ubuntu 8.04.3 LTS, kernel 2.6.24-24-xen
root        (hd0,0)
kernel        /boot/vmlinuz-2.6.24-24-xen root=UUID=f0b969d7-9d41-46b5-8662-5f62a7f1ae25 ro quiet splash clocksource=jiffies
initrd        /boot/initrd.img-2.6.24-24-xen
Despues de reiniciar el domU, el reloj estara bien configurado. Ahora ya puedes usar tu NTP para sincronizar la hora con tus domU.

En Ubuntu Server 10.04 LTS
  • Actualizamos el kernel al backport-natty de este modo:
apt-get install linux-headers-generic-lts-backport-natty  linux-image-generic-lts-backport-natty 
  • Añadimos el modulo xen_blkfront al initramfs 
 echo xen_blkfront >> /etc/initramfs-tools/modules
  • Actualizamos initramfs
update-initramfs -c -k all
  • Reniciamos con el nuevo kernel.



martes, 26 de julio de 2011

XenServer - RedHat / CentOS Paravirtualizados

Una de las ventajas de usar XenServer es la posibilidad de arrancar las máquinas virtuales en modo paravirtualizado (PV). Algunas distros dificultan un poco la instalación en PV directamente desde el Setup. Ese es el caso de Red Hat o CentOS que por defecto se instalan en modo Virtualización completa (HVM).

Una vez instalado el sistema, modificamos los siguientes parámetros del grub:

title CentOS Xen (2.6.18-53.1.14.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-53.1.14.el5
          module /vmlinuz-2.6.18-53.1.14.el5xen ro root=/dev/VolGroup00/LogVol00
          module /myinitrd.img

Modificamos las líneas en negrita por:

title CentOS (2.6.18-53.1.14.el5xen)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-53.1.14.el5xen ro root=/dev/VolGroup00/LogVol00
        initrd /myinitrd.img

Reiniciamos con el nuevo kernel y creamos un nuevo initrd, sino nos aparecerá el error:
mount: could not find filesystem '/dev/root'
Setting up other filesystems.
Setting up new root fs setuproot:
 ...
Booting has failed

Genramos el nuevo initrd. El nuevo initrd hay que generarlo ignorando el soporte SCSI mediante la siguiente línea:

mkinitrd --omit-scsi-modules --with=xennet --with=xenblk --preload=xenblk initrd-$(uname -r)-no-scsi.img $(uname -r)

Apagamos la maquina virtual y modificamos los siguientes parámetros mediante el CLI para que XenServer reconozca que tiene que arrancar esta máquina como PV.

xe vm-param-set uuid= HVM-boot-policy=""

xe vm-param-set uuid= PV-bootloader=pygrub

xe vm-param-set uuid= PV-args="console=ttyS0 xencons=ttyS"

La volvemos arrancar y tendría que iniciarse correctamente. Si aparece siguiente el error:

Error: (2, 'Invalid kernel', "elf_xen_note_check: ERROR: Not a Xen-ELF image: No ELF notes or '__xen_guest' section found.\n")

significa que hay algún problema con la config del grub, comprueba que el kernel que has configurado en el grub sea el correcto.

miércoles, 18 de agosto de 2010

gentoo - genkernel modules

Cada vez que compile un nuevo núcleo o recompile el actual, necesitará reinstalar los módulos del núcleo de nVidia. Una forma fácil de seguir la pista de los módulos instalados por los ebuilds (como nvidia-drivers es instalar sys-kernel/module-rebuild. Una vez lo haya instalado, simplemente ejecute module-rebuild populate para llenar su base de datos con una lista de paquetes que deben reconstruirse. Una vez haya terminado de compilar o recompilar un núcleo, simplemente ejecute module-rebuild rebuild para reconstruir los controladores para su nuevo núcleo.