2014

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2013

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

más...

2011

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2010

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2009

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2008

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2007

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2006

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2005

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2004

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

2003

EneFebMarAbr
MayJunJulAgo
SepOctNovDic

Fotolog

A través del espejo
2010-10-12: A través del espejo
¡La radio habla en binario!
2010-10-10: ¡La radio habla en binario!
Gigaminx (regalo por mi cumple)
2010-09-16: Gigaminx (regalo por mi cumple)
Trini en bici
2010-09-05: Trini en bici
Valporquero
2010-08-28: Valporquero
Mi bici nueva
2010-08-22: Mi bici nueva
Boda de Mario y Ana
2010-08-13: Boda de Mario y Ana
De cañones en Guara
2010-08-07: De cañones en Guara
Trini y Mari en Marbella
2010-08-05: Trini y Mari en Marbella
Trini y Chelo en Tabarca
2010-08-03: Trini y Chelo en Tabarca
Valid XHTML 1.1
Acceder
Etiquetas: venti scripts cómo

Digamos que tienes un servidor venti y quieres hacer un mirror (espejo) de su contenido, copiando sus datos a otro servidor, ¿cómo podría hacerse?

Primero, hace falta tener otro servidor venti configurado. Echa un vistazo a la página de manual venti(8) para saber cómo hacerlo, o mira mi entrada acerca de cómo configurar un servidor venti. Ten en cuenta que, si los dos servidores se van a ejecutár simultáneamente en la misma máquina, deben escuchar en puertos TCP diferentes.

Hay varias maneras de copiar el contenido de un servidor venti en otro:

  • venti-copy

    Con venti-copy se puede copiar un árbol completo de bloques de un servidor a otro. Ambos servidores deben estar en ejecución para poder copiar los bloques.

    Si tienes los scores de todos los árboles a copiar en el fichero scores.txt, puedes usar la siguiente orden para copiarlos:

    cat scores.txt | while read score ; do venti-copy $venti1 $venti2 $a ; done

    Ventajas: no necesitas parar ninguno de los servidores; las particiones arena de cada servidor pueden tener distinta geometría.

    Desventajas: es muy lento, y necesitas saber a priori la lista de los scores de los VtRoot que quieres copiar.

  • venti-mirrorarenas

    Esta orden se puede usar para copiar cada arena de una partición a otra. Los servidores venti deben estar parados.

    Ventajas: es muy rápido, y se hacen comprobaciones para asegurarse de que las geometrías son idénticas.

    Desventajas: solo funciona si el origen y el destino tienen exactamente el mismo número de arenas del mismo tamaño; después de terminar la copia, debes usar venti-buildarenas en el servidor destino.

  • venti-rdarena y venti-wrarena

    venti-rdarena lee una arena de un servidor venti y la escribe por la salida estándar; venti-wrarena escribe una arena de un fichero a un servidor venti. arena from a file to a venti server.

    Para poder copiar un servidor venti, es necesario leer todas las arenas con venti-rdarena, una a una, para luego escribirlas en otro servidor con venti-wrarena. Ambos servidores deben estar parados para esto.

    Ventajas: funciona incluso si el origen y el destino tienen distinto número de arenas; es más rápido que venti-copy.

    Desventajas: solo funciona si el origen y el destino tienen arenas del mismo tamaño; es muy lento si los servidores venti tienen muchas arenas (cada invocación de estos programas leen todo el mapa de arenas); después de terminar la copia, debes usar venti-buildindex en el servidor destino.

  • Copiar todas las arenas a mano

    Si puedes averiguar la posición de cada arena dentro de la partición, y su tamaño, puedes copiar las arenas simplemente con dd. Ambos servidores deben estar parados para esto.

    Por ejemplo, si has formateado las particiones arena con el tamaño de arena y tamaño de bloque por defecto, las arenas tendrán 512MB (536870912 bytes), y estarán situadas en la posición 794624 + 536870912*n. Por lo tanto, podría ejecutar el siguiente bucle para copiar de la arena $start a la $end, del fichero $orig al $dest:

    for i in $( seq $start $end )
    do
      echo "Copying arena $i from $start to $end..."
      skip=$(( 97 + $i * 65536 ))
      dd if="$orig" bs=8192 skip=$skip count=65536 seek=$skip of="$dest"
    done

    Ventajas: es muy rápido.

    Desventajas: solo funciona si el origen y el destino tienen arenas del mismo tamaño; debes asegurarte de que las arenas están situadas exactamente donde las estás leyendo y escribiendo; después de terminada la copia, debes usar venti-buildindex en el servidor destino.