CategoríaTips

Tip: Suspender el sistema en disco

Tengo 1GB de RAM y 512MB de swap, en teoría yo no podría hibernar o suspender el sistema, ya que el uso de ram sería mayor al espacio disponible en la swap. Pero esto tiene una solución: Optimizar la suspención del sistema limpiando el cache justo antes de suspenderlo. Para lograrlo, he creado un script que se encarga de suspender el sistema lo más limpio posible:

  1. #!/bin/bash
  2.  
  3. swapoff -a
  4. swapon -a
  5. echo -n 3 > /proc/sys/vm/drop_caches;
  6. s2disk

Para esto necesitamos tener instalado s2disk. Lo que hace el script es desactivar y reactivar la swap, limpiar el caché y luego suspender el sistema en disco.
Esto se puede utilizar junto a un cron que detecte que la batería está baja (por ej. al 5%).

Probado en Archlinux

Tip: Migración de servidores a Xen

xen_tipsEste es el segundo post del día relacionado con Xen ya que he estado jugando con Xen, hace tiempo que no probaba cosas. Este post se trata de un tip para poder mgirar cualquier servidor hacia Xen, no importa si está virtualizado con VMWare, si es una máquina fisica, Xen, etc etc, es una forma bastante sencilla que no tiene ninguna ciencia.

La teoría
Copiar todos los archivos (por red) de una máquina a otra manteniendo los permisos e integridad de cada fichero.

La práctica
Lo haremos en 4 sencillos pasos y haciendo uso de la herramienta rsync

Seguir leyendo

Instalar CentOS con Xen en Debian

Luego de intentar varias maneras de instalar CentOS sobre Xen y luego de varios intentos fallidos, puedo resumir todo en 5 sensillos pasos para no morir en el intento.

  1. Descargar las imágenes
  2. Descargar las siguientes imágenes (checkear si existen más nuevas):
    * https://mirror.centos.org/centos/5.3/os/i386/images/xen/vmlinuz
    * https://mirror.centos.org/centos/5.3/os/i386/images/xen/initrd.img

    Por ejemplo, dejemoslo en /tmp/

    wget https://mirror.centos.org/centos/5.3/os/i386/images/xen/vmlinuz -O /tmp/
    wget https://mirror.centos.org/centos/5.3/os/i386/images/xen/initrd.img -O /tmp/

  3. Configuración de la máquina virtual
  4. El fichero de configuración de la máquina debe ser algo como: (//modificar según requerimientos//)

    kernel=’/tmp/vmlinuz’
    ramdisk=’/tmp/initrd.img’
    extra=’text’
    maxmem=’3072′
    memory=’2048′
    vcpus=2

    disk=[
    ‘file:/vm/cpanel/root.img,hda,w’,
    ‘file:/vm/cpanel/home.img,hdb,w’,
    ‘file:/vm/cpanel/tmp_swap.img,hdc,w’,
    ]

    name=’cpanel’
    vif=[ ‘ip=200.55.200.126,mac=00:1B:CC:C3:B3:33,bridge=xenbr1’ ]

    on_poweroff = ‘destroy’
    on_reboot = ‘restart’
    on_crash = ‘restart’

  5. Preparación de discos
  6. root será nuestra partición que montaremos en /
    en home vamos a montar nuestro /home y
    tmp_swap la usaremos para montar /tmp y la swap del sistema.

    Creamos los discos:
    dd if=/dev/zero of=root.img bs=1M count=10240 #10Gb
    dd if=/dev/zero of=home.img bs=1M count=40960 #40Gb
    dd if=/dev/zero of=tmp_swap.img bs=1M count=2048 #2Gb

  7. Instalación
  8. Iniciamos la máquina virtual:
    xm create -c configuration.cfg

    Seguimos paso a paso la instalación y finalizamos.

  9. Booteo
  10. Para bootear debemos hacer una modificacion en el fichero de configuración de la máquina, la dejamos así:

    bootloader = ‘/usr/lib/xen-3.2-1/bin/pygrub’ #El path depende de la version
    extra=’text’
    maxmem=’3072′
    memory=’2048′
    vcpus=2

    disk=[
    ‘file:/vm/cpanel/root.img,hda,w’,
    ‘file:/vm/cpanel/home.img,hdb,w’,
    ‘file:/vm/cpanel/tmp_swap.img,hdc,w’,
    ]

    name=’cpanel’
    vif=[ ‘ip=200.55.200.126,mac=00:1B:CC:C3:B3:33,bridge=xenbr1’ ]

    on_poweroff = ‘destroy’
    on_reboot = ‘restart’
    on_crash = ‘restart’

    Luego iniciamos la maquina:
    xm create configuration.cfg -c

Cómo redimenzionar el tamaño de un disco virtual en Xen

hdd-1

El otro día, jugando un rato con Xen me encontré con el problema de querer redimenzionar el tamaño de disco virtual de las máquinas virtuales y, cabezeandome un rato, lo logré.
En teoría, aumentar el tamaño de un disco es fácil, creamos un fichero del tamaño que queramos usando dd y luego concatenamos con el que ya tenemos, creamos el sistema de ficheros y listo. Pero el disminuirlo me pareció más complejo, pero no fue así.

Seguir leyendo

Tip: Liberar memoria ‘cacheada’, dentries e inodos

Hay veces que los programas (especialmente FF) ocupan mucha memoria y la memoria cacheada aumenta hasta quedarnos sin memoria (o con menos de lo que deberíamos tener), esta memoria se puede liberar para que quede utilizable nuevamente, basta con que le tiremos un echo al fichero /proc/sys/vm/drop_caches con los valores 1, 2 o 3 para liberar el pagecache, inodos y dentries, o los tres, respectivamente.
Esta funcionalidad fue implementada en la version 2.6.16 del kernel de linux.

¿Qué es el pagecache, inodos y dentries?
Los ficheros y directorios se representan, en la memoria, como inodos, de esta misma forma, los dentries corresponden a la representación de la información del path, directorios, etc.
Pueden leer una definición de pagecache más completa en: https://en.wikipedia.org/wiki/Pagecache.

Ejemplo:

echo -n 1 > /proc/sys/vm/drop_caches; # Libera el pagecache
echo -n 2 > /proc/sys/vm/drop_caches; # Liberamos inodos y dentries
echo -n 3 > /proc/sys/vm/drop_caches; # Libera pagecache, inodos y dentries.

Pueden ejecutar el comando free -m para ver la memoria antes y despues de liberar el caché.

Useless: Aumentar las ‘vistas’ de tu imágen en TwitPic

logo-tpicCómo dice en el título, algo completamente useless, le mostraré un tip de cómo aumentar las vistas de tus imágenes (o de otros) subidas a TwitPic (un servicio de hosting de imágenes sincronziado con twitter [un sistema de microbloggin’]).

Aunque está falla no implica ningún riesgo de seguridad, yo lo considero un bug y se los reporté a los encargados de TwitPic, pero no lo han solucionado ni me han respuesto el correo.
Este bug lo podemos comprobar al hacer varias veces F5 (recargar la página) y vemos como las visitas aumentan.
El comando para aprovecharse de este bug:

while /bin/true; do wget -O /dev/null -o /dev/null; done

Seguir leyendo