19 de octubre de 2011
Hola, si soléis visitar mi blog supongo que ayer pudisteis comprobar cómo desde media mañana hasta por la noche estuvo offline. Desde hace algo más de un mes, este blog corre sobre una microinstancia de Amazón EC2, basada en un ami Amazon Linux (una especia de híbrido de CentOS). La cuestión es que a raíz de una actualización de paquetes, ente los que había una actualización del núcleo, perdí todo acceso posible a mi instancia desde ssh, web, ftp, etc.
Tras varios reinicios conseguí acceder al log que se puede ver desde la consola de gestión de Amazon, y vi que había un fallo que decía lo siguiente: Page fault in pagetable walk (access to invalid memory?).
Tras buscar por varios sitios, encontré el problema y la solución. Por lo visto sólo afecta a las versiones de 32 bits de las microinstancias (¡qué suerte!), y ocurre dentro de PV-Grub, en la gestión que éste hace de la paginación de memoria en Xen. El bug está corregido en la versión 1.02 de PV-Grub, pero las imágenes de Amazon Linux AMI 2011.02.1 utilizan la versión 1.01. La solución consiste en actualizar el aki de PV-Grub que se utiliza en la instancia, o lanzar una instancia basada en Amazon Linux AMI 2011.02.01 con la última versión del AKI de PV-Grub.
Para poder continuar tenemos que tener instaladas las EC2 command line tools. En la página de Amazon está el enlace de descarga y hay información sobre cómo instalarlas.
Para poder actualizar el AKI de la instancia, primero tenemos que conocer la última versión disponible en nuestra región. Para ello tenemos que utilizar el siguiente comando:
ec2-describe-images -o amazon --filter "manifest-location=*pv-grub-hd0_1.02-i386*" --region REGION
En mi caso tengo la instancia en Virgina, por lo que en región tuve que poner us-east-1. El resultado de este comando me proporcionó la información necesaria para saber la versión que tenía que utilizar para la actualización: us-east-1 aki-805ea7e9 ec2-public-images/pv-grub-hd0_1.02-i386.gz.manifest.xml
Una vez conocida la versión (aki-805ea7e9), debemos detener nuestra instancia:
ec2-stop-instances --region us-east-1 i-#####
A continuación actualizamos el AKI:
ec2-modify-instance-attribute --kernel aki-805ea7e9 --region us-east-1 i-#####
Y finalmente volvemos a iniciar nuestra instancia:
ec2-start-instance --region us-east-1 i-#####
Y con esto nuestra instancia volverá a arrancar normalmente, recuperando la conectividad a través de la IP elástica o de la DNS pública.
Un saludo.
Comentarios recientes