Cambiando la ubicación de los contenidos multimedia en Plex

Paso a paso para no perder la indexación de los contenidos multimedia

Migrar contenido multimedia en Plex
Cuando migré MartinServer a un Hp Proliant G8 mantuve temporalmente todos mis contenidos multimedia en las dos NAS  Western Digital de de 3 TB y  de 6 TB que venía utilizando hasta entonces. Pero las bibliotecas de Plex (películas, series, fotos y música) habían crecido exponencialmente desde la primera instalación del Servidor Plex, y por tanto había llegado la hora de migrarlos a los dos discos de 6TB que había añadido al servidor HP Proliant G8.

La forma fácil

El procedimiento viene bien explicado en las páginas de soporte de Plex. Si lo que necesitas es solamente cambiar el contenido a un nuevo disco, la forma más sencilla es ponerle exactamente el mismo nombre al nuevo disco, y conservar la misma ruta de acceso para todos los contenidos. El procedimiento en Ubuntu sería algo así:

  1. Tienes que detener el servidor Plex. Abre una terminal y teclea:
    sudo service plexmediaserver stop
  2. Cambiamos el nombre del disco actual. Por ejemplo, si se llama “Plex”, lo renombramos a “PlexAntiguo”. En el terminal:
    sudo mv /media/Plex /media/PlexAntiguo

    Suponiendo que la partición del disco sea /dev/sdb1, tecleamos:
    sudo mount /dev/sdb1 /media/PlexAntiguo
  3. Ahora montamos el nuevo disco y le ponemos el mismo nombre que al original (en este caso, “Plex”):
    sudo mkdir /media/Plex

    Suponiendo que la partición del nuevo disco sea /dev/sdb2 (esto lo comprobamos con el comando “fdisk -l”), tecleamos:
    sudo mount /dev/sdb2 /media/Plex

    Añadimos el nuevo disco a fstab para que se monte al inicio:
    sudo nano fstab

    Añadimos la siguiente línea a fstab:
    /dev/sdb2 /media/Plex ext4 defaults 0 2

    Si hay una entrada para el disco antiguo en fstab, la eliminamos. Guardamos fstab y actualizamos:
    sudo mount -a
  4. Ya estamos en condiciones de mover todo el contenido del viejo al nuevo disco:
    mv  -v /media/PlexAntiguo/* /media/Plex/

    Si son Terabytes de contenido… paciencia.
  5. Una vez que acabe de moverse todo el contenido, desmontamos el disco antiguo:
    sudo umount /media/PlexAntiguo

    Ya podemos desconectar el disco antiguo. Sólo queda iniciar el servidor Plex:
    sudo service plexmediaserver start

    Y eso sería todo. Debería funcionar con normalidad.

La vía del penitente

Pero en ocasiones esta forma simple no nos sirve. Por ejemplo en mi caso, yo había creado mis bibliotecas de Plex en el NAS de 3TB, y cuando se llenó añadí otro NAS de 6TB. Esto supuso duplicar la estructura de carpetas, solución que no me gustaba nada. Aprovechando el cambio a los dos nuevos discos de 6TB, quería aprovechar para dejar una estructura limpia, algo así:

/Plex/
    /Peliculas/
        /NombredePelicula (año)/
            NombredePelicula (año).ext
            SubtitulodePelicula (año).spa.srt
    /Series/
        /NombreSerie/
            /Temporada 01/
                NombreSerie - s01e01.ext
                SubtituloSerie - s01e01.spa.srt

En este caso, el procedimiento se complica un poco:

  1. Deshabilitar la opción “Vaciar la papelera automáticamente después de cada escaneado”. En la interfaz web de Plex hay que ir a “Ajustes/Biblioteca/” y desmarcar la opción que se reproduce en la imagen:
    deshabilitar-vaciar-papelera
  2. Detener el servidor Plex. Abre una terminal y teclea:
    sudo service plexmediaserver stop
  3. Copiar (no mover) el contenido del viejo al nuevo disco:
    cp -R /media/PlexAntiguo/ /media/PlexNuevo/

    Aquí no tenemos que conservar la misma estructura. Es el paso que podemos aprovechar para reestructurar nuestras bibliotecas.
  4. De nuevo en la interfaz web de Plex, nos vamos a “Librerías/Añadir Biblioteca”. Aquí vamos añadiendo las diferentes bibliotecas de películas, series, música o fotos con la ubicación del disco nuevo:
    añadir-a-la-biblioteca
  5. Una vez que se han añadido todas las nuevas bibliotecas, iniciamos Plex Media Server:
    sudo service plexmediaserver start
  6. Actualiza las bibliotecas desde la interfaz web. Si tienes mucho contenido multimedia, tardará bastante. Cuando termine el proceso, verás que todo el contenido aparece duplicado.
  7. Desde la interfaz web, buscamos las bibliotecas correspondientes al disco antiguo. Seleccionamos “editar” y borramos las carpetas correspondientes al disco antiguo una a una.
    borrar-biblioteca
  8. Volvemos a actualizar las bibliotecas. Ya sólo debe aparecer el contenido del nuevo disco. Para comprobar que no hay errores, utilizamos el filtro de contenidos “buscar duplicados”. Si hay algún duplicado, seguramente se debe a un error de indexación. Editamos manualmente los contenidos mal indexados.
  9. Finalmente, vaciamos la papelera de las bibliotecas.
  10. Y con esto ya está: migrado el contenido de Plex Media Server a un disco nuevo y con una estructura distinta.

Nunca olvides el factor humano

Cómo aprendí de primera mano que no siempre la solución a los problemas de un sistema está en los logs

Limpiando la computadora
Cuando hice la migración de MartinServer ya era consciente de que no había sido todo lo “limpia” que hubiera sido de desear, y me esperaba algunos problemas.
Efectivamente, en los días siguientes vi cómo se producían desconexiones intermitentes. Creí haberlo solucionado, primero, con un script para actualizar FreeDNS, y más tarde, ya de forma más definitiva, solucionando un problema con la interfaz de red.

Problemas menores

En verdad el sistema quedó mucho más estable, ya apenas se producían caídas. Pero persistían algunos problemillas que me traían de cabeza, y me puse a estudiar como loco los logs del sistema para ver de qué coño se trataba. En primer lugar, cada vez que reiniciaba el sistema, se demoraba una eternidad. No era normal. Yo estoy acostumbrado a trabajar con Ubuntu desde hace años y nunca me había pasado nada igual. Por mucho que un servidor HP ProLiant Gen8 sea diferente, no se justificaba.
El otro problema, poco importante pero desconcertante, es que todos los días se desconectaba unos minutos a las 7:00 AM. Yo monitorizo algunos de los sitios web que alojo en MartinServer con una funcionalidad del plugin JetPack para WordPress. Este plugin te avisa si se ha producido una caída en el servicio y durante bastantes días, como digo, puntualmente me llegaba un mensaje a las 7:00 AM. Sólo duraba unos minutos, pero jodía.

Swap

En cuanto al primer problema, lo que me llamó la atención fue este error:

The disk drive for /dev/mapper/ubuntu--vg-swap_1 is not ready yet or not present.

Esto quería decir que el espacio de intercambio o “swap” no era reconocido en el arranque. Con casi toda seguridad era esto lo que estaba enlenteciendo el arranque.
Me llamó la atención la ruta “/dev/mapper/”, es la que se suele utilizar para las particiones encriptadas. Y yo no recordaba haber encriptado mi partición swap. Así que, tecleando blkid en una terminal, comprobé la UUID de la partición swap, y efectivamente no era la que daba el error. Edité fstab:
sudo nano /etc/fstab

Cambié la ruta de la partición swap por la UUID que me había proporcionado el comando blkid. Guardé y reinicié. Problema resuelto, el arranque ya era normal. Y además (y esto ya no sé explicarme por qué), el segundo problema, el de las desconexiones todos los días a las 7:00AM, también desapareció.

Factor humano

Aún quedaba otro problema más pequeño aún, pero me obsesioné con resolverlo. Todos los miércoles por la mañana, el equipo se apagaba. No era una desconexión de red, sino apagado. Mis sitios webs, el accesso SSH y todos los servicios en general eran inaccesibles, pero sí podía acceder a través del interfaz HP iLO, donde veía que el equipo estaba apagado.

Tampoco podía deberse a un corte de electricidad, porque el equipo se reiniciaría solo. No. La única alternativa que me quedaba era, como digo, volver a encender el equipo a través del interfaz HP iLO. Y después todo volvía a funcionar con normalidad, hasta el siguiente miércoles, cuando volvía a pasar lo mismo.

Me quemé las cejas revisando los logs del servidor, para no encontrar finalmente nada. Estas misteriosas caídas del servidor hubieran quedado para siempre sin resolver si no hubiera recordado que lo único que diferencia los miércoles al resto de los días de la semana es que… ¡una chica viene a limpiar la casa por las mañanas!

La llamé. Le pregunté si había tocado el equipo, y me dijo que sí, que por supuesto, que había visto que yo me lo había dejado encendido y que ella lo apagaba. “Por favor, no lo vuelvas a apagar nunca más -le rogué-“. Misterio resuelto. Maldito factor humano 🙂 .

 

 

Problemas con la interfaz de red

Configurar la interfaz de red para que la reconozca como “em1”

Eth0Cada dos o tres días al principio, cada pocas horas al final, MartinServer estuvo sufriendo una serie de caídas que me impedían acceder al servidor. No tenia acceso a mis páginas web, pero es que tampoco podía acceder remotamente a una terminal vía SSH. El servidor estaba muerto  (o, más exactamente, desconectado). Para salir del paso, apagaba y volvía a encender el equipo, bien directamente o en remoto a través del HP iLO. Pero aquí había un problema que solucionar 🙂 .

Revisando el log del sistema en /var/log/syslog, me encontré con que el error era el siguiente:

Error getting hardware address for “eth0”: No such device

“Eth0” es el nombre que habitualmente se le da en los sistemas Linux a la tarjeta de red, es decir, al adaptador donde se conecta el cable ethernet que nos permite conectarnos a nuestra red LAN y a internet. Lo que estaba pasando, sencillamente, es que mi servidor no encontraba este adaptador de red.
Para averiguar qué estaba pasando, abro el terminal y tecleo:
ifconfig -a

Y me devuelve algo así:
em1       Link encap:Ethernet  direcciónHW b3:5f:dc:87:da:c0
Direc. inet:192.168.1.100  Difus.:191.161.1.255  Másc:255.255.255.0
Dirección inet6: fd80::b25c:dbcc:fd87:dac0/64 Alcance:Enlace
ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
Paquetes RX:14145493 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:17842179 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:6871585837 (6.8 GB)  TX bytes:17386533946 (17.3 GB)
Interrupción:16
em2       Link encap:Ethernet  direcciónHW b3:5f:dc:87:da:c1
ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:0 (0.0 B)  TX bytes:0 (0.0 B)
Interrupción:17

No me extraña que mi servidor no encontrase el adaptador de red. En mi equipo (es algo que pasó tras la actualización a Ubuntu Server 16.04) se está nombrando el adaptador de red como “em1” en vez de como “eth0”. Busqué la posible razón, y por lo visto es para conseguir mayor consistencia en la nomenclatura de las tarjetas de red. No profundicé mucho en la razón, simplemente procedí a solucionar el problema 🙂 .
La mayor parte de los afectados lo que hicieron fue forzar, modificando el Grub, que la tarjeta de red volviese a llamarse “eth0”. En mi caso fui más cómodo (espero que no me dé más problemas en adelante), y lo único que hice fue renombrar el interfaz de red:
sudo nano /etc/network/interfaces

Y aquí dejé el fichero de configuración de red tal que así:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto em1
iface em1 inet dhcp

Listo. A partir de ahora, mi sistema “sabe” que la interfaz del red se llama “em1”. No he vuelto a tener esos problemas de conexión.

Problemas con la actualización de FreeDNS

Y de cómo le hallé solución

FreeDNSComo ya conté aquí hace algún tiempo, tanto mis páginas webs como la de algunos amigos las alojo en un servidor casero, al que llamo MartinServer :-). Realmente, para el tráfico que tienen está bastante bien. Cuento con 200Mb simétricos, tanto de subida como de bajada, y he podido comprobar tanto desde aquí en México como desde España que su rendimiento es bastante razonable.

El único problema es el de los DNS. Yo no he contratado una IP estática con mi proveedor, luego la IP de MartinServer cambia cada cierto tiempo. Por tanto, no me queda más remedio que contratar o utilizar algún servicio gratuito que se encargue de renovar los DNS  de mis páginas webs cada vez que a mi proveedor le dé por cambiar la IP de mi servidor.

Para el dominio martinalia.com contraté DynDNS. Es un servicio de pago, pero supercómodo. Tan sólo tengo que configurar los parámetros de mi cuenta en mi router (un Linksys WRT1900 AC), y ya está. Puedo estar seguro de que cada vez que cambie la IP de MartinServer, el propio router lo comunicará a DynDNS y de ahí se propagará, garantizando que martinalia.com siempre esté online.

Para el resto de los websites, en cambio, opté por un servicio gratuito: FreeDns. En mi router no se puede configurar (al menos no de forma sencilla) este servicio, por lo que tuve que recurrir a instalar en el servidor un servicio que se encargase de esta tarea.

ddclient

De entre todos los disponibles, me decanté por ddclient. Se instala así:

sudo apt-get install ddclient

Una vez instalado, hay que editar la configuración, de la siguiente manera:
sudo nano /etc/ddclient/ddclient.conf

Y dejamos la configuración con algo como esto:
# /etc/ddclient/ddclient.conf
#
daemon=3600 # Aquí le decimos la frecuencia con que se actualizará. En el ejemplo, cada 3600 segundos
protocol=freedns
use=if, if=eth0
ssl=yes # Aquí le indicamos si se utilizará o no SSL
use=web, web=http://ip.dnsexit.com/ # Aquí podemos poner cualquier servicio que nos devuelva la IP que estamos utilizando
server=freedns.afraid.org
login=nombre_de_usuario
password=’contraseña’
midominio.ejemplo.com #Aquí listamos nuestro dominio o dominios a actualizar

Y ya está. Con esto debería funcionar, y de hecho me funcionó en el momento en el que lo instalé. Sin embargo, hace unos días mi proveedor cambió la IP con la que MartinServer sale a internet. Mi web martinalia.com seguía funcionando, porque está configurada con DynDNS en el router, pero el resto de las webs dejaron de funcionar.

Le di un vistazo al log del sistema en /var/log/syslog y lo que me indicaba es que la conexión de ddclient con el servicio de FreeDNS no se podría realizar. Estuve un buen rato trasteando con la configuración para ver si lo solucionaba, pero como todo intento fue infructuoso, corté por lo sano. Me monté yo mismo una tarea programada (cron) para actualizar el servicio.

La solución

La idea me la dio No soy vago, soy eficiente. Creé un archivo llamado “freeDNS.sh”, le di permiso de ejecución. Lo edité y quedó tal que así:

#! /bin/bash
DOMINIO=”midominio.ejemplo.com”
UPDATE_URL=”http://freedns.afraid.org/dynamic/update.php?xxxxxxxxxxxx” #donde pone xxxxxxxxxxxx va la cadena que te genera para tu dominio FreeDNS
UPDATE_COMMAND=”/usr/bin/curl -s $UPDATE_URL”
logger “Actualizando FreeDNS”
CURRENTIP=`curl -s ip.dnsexit.com | sed ‘s/[^0-9.]//g’`
echo “IP actual: ${CURRENTIP}”
CURRENTIPDOMINIO=`dig -x -add +short $DOMINIO`
echo “IP de $DOMINIO: ${CURRENTIPDOMINIO}”
if [ “${CURRENTIP}” != “${CURRENTIPDOMINIO}” ] ; then
echo “Encontrada diferencia, actualizando”
logger “Actualizando a ${CURRENTIP}”
if ${UPDATE_COMMAND}; then
echo “IP actualizada”
else
echo “Error actualizando FreeDNS”
fi
else
echo “No hay cambios, no se hace nada”
fi

Una vez listo, hacemos un “crontab -e”, y añadimos la línea:
*/5 * * * * /home/ruta_a/freeDNS.sh

Con esto le decimos que actualice la información sobre nuestra IP en FreeDNS cada 5 minutos. Y listo. Funcionando.

Arqueología web

Breve historia de cómo rescaté los contenidos de mis blogs antiguos que creía perdidos para siempre

Cuando hace unos días tuve que recuperar el blog de Gustavo Montes, repasándolo para verificar que no se había perdido nada, me encontré con muchísimas referencias antiguas a mis propios blogs. Sobre todo a m4rt1n.com, un blog que mantuve desde 2006 hasta 2008. Hacía muchos años que yo había retirado el contenido de este blog de internet, pero, lo que es peor, hace un tiempo ya que perdí incluso la titularidad del dominio. Estaba perdido para siempre.

Pero también me entró nostalgia de martinalia.com, un dominio que sigue siendo de mi titularidad pero que, desde 2004, había pasado por varias fases. Desde 2004 hasta 2006 era un blog más o menos personal con bastante enfoque en el ámbito de la Gestión de Contenidos. Era un blog muy peculiar, que utilizaba un CMS francés que me encantaba, SPIP. Anteriormente a esta fase, desde 2001, había publicado varios contenidos, pero estos se perdieron para siempre.
martinalia.com antiguo

En 2006 adquirí m4rt1n.com, el dominio que antes comenté que ya he perdido (se me pasó la fecha de renovación en Godaddy…). Estuvo funcionando como mi blog personal durante tres años, y tenía este aspecto (la imagen es de muy mala calidad, pero es lo único que conservo):

com

Años después, en 2009, actualicé el blog martinalia.com a SPIP 2.0, una versión muy mejorada, utilicé una plantilla minimalista y me centré en la Gestión de Contenidos. Todos los artículos anteriores quedaron arrinconados en una escueta sección llamada “antiguos”:

martinalia.com

Posteriormente también abandoné este blog, hasta que en 2011 le di un cambio absoluto y construí uno nuevo (con el lema “Objetivo Brasil”) que era todo un ejercicio de “personal branding”. Por motivos personales tenia la necesidad de moverme hacia Brasil, y el blog fue una pieza más en ese esfuerzo (que finalmente conseguí al cabo de unos meses).

objetivo brasil

Lo cierto es que esto también dejó de tener sentido una vez alcanzado el objetivo, y finalmente lo abandoné también No fue hasta el año pasado que martinalia.com volvió a funcionar, esta vez un WordPress en el que voy subiendo críticas de películas que me interesan sin ningún orden cronológico ni de ningún otro tipo. Tan solo lo que se me antoja. También ofrezco “extras” bien interesantes para los usuarios registrados.

En cualquier caso, haciendo memoria me entró bastante nostalgia y decidí que todos esos contenidos desaparecidos merecían ser rescatados, que al fin y al cabo formaban parte de mi historia personal. Pero -y era un gran problema- tan sólo conservaba copia de seguridad del último, todos los anteriores habían desaparecido para siempre.

Archive.org al rescate

Sin copia de seguridad, la única alternativa que me quedaba era recurrir al servicio WayBack Machine que ofrece gratuitamente Internet Archive, una entidad sin ánimo de lucro que conserva en sus archivos millones de sitios webs, películas, libros, etc. En WayBack Machine quedaba constancia de todas estas antiguas versiones de mis blogs… el problema era, claro, cómo extraer esa información y poder migrarla a martin.ekiry.com.

La solución me vino con Wayback Machine Downloader, una herramienta sencilla y potente que me permitió hacer justo lo que necesitaba. Para utilizarla debes tener instalado previamente Ruby. Para instalar Wayback Machine Downloader sólo hay que teclear lo siguiente en una terminal:

gem install wayback_machine_downloader

Una vez instalado, su uso es de lo más sencillo. Con los siguientes comandos en el terminal descargué todos mis blogs “perdidos”:
wayback_machine_downloader http://www.m4rt1n.com --timestamp 20090425231334
wayback_machine_downloader http://www.martinalia.com --timestamp 20090625231334
wayback_machine_downloader http://www.martinalia.com --timestamp 20060325231334

Listo. Ya tenía todo el contenido guardado en mi disco duro. Ahora lo que tenía que hacer es pasar todos los artículos, que había guardado en formato HTML, a la base de datos de martin.ekiry.com. Para ello utilicé el plugin HTML Import2. Misión cumplida.

Eso sí, algunos (pocos) artículos se perdieron para siempre, porque Internet Archive no los había almacenado. Casi todas las imágenes se habían perdido también, con lo cual me tocó una tediosa tarea manual de búsqueda y reposición de imágenes (algunas de las originales se perdieron para siempre).

Pero básicamente está todo recuperado, disponible ahora aquí en martin.ekiry.com casi toda mis publicaciones en internet (salvo las anteriores a 2004, que esas también se perdieron para siempre).

Resucitando el blog de Gustavo Montes

gustavo.ekiry.com antiguo

Ayer dejó de funcionar el blog de Gustavo Montes, que tengo alojado en MartinServer. Me daba un error de conexión a la base de datos, pero aparentemente el servicio MySql estaba funcionando correctamente y todos los demás websites alojados en MartinServer funcionaban con normalidad. Mirando con un poco más de atención, descubrí el motivo: Ubuntu 16.04, versión a la que acababa de migrar mi servidor, viene con PHP7, y en PHP7 la extensión mysql se ha declarado obsoleta, teniendo que optar en su lugar por mysqli.
O sea, que en vez de gestionar la conexión a la base de datos así:

connect = mysql_connect(‘server’,’username’,”);
mysql_select_db(‘dbname’);

tendría que hacerlo más o menos así:
connection = mysqli_connect(‘server’, ‘username’, ‘password’, ‘database’);

No parece un gran cambio, pero realmente me hubiera supuesto reescribir gran parte del código (todos los selects y queries) de una instalación de Dotclear muy antigua (la 1.2.1, de 2006). No tenía mucho sentido, realmente merecía la pena actualizar el blog a un CMS más moderno.

Otra opción hubiera sido volver a la versión antigua de PHP, PHP 5.6, o hacer convivir ambas versiones en la misma máquina. Se puede seguir para esto el procedimiento detallado aquí. Pero, nuevamente, considero que es mejor actualizar de una vez el software de base del blog en vez de ir haciendo remiendos.

Dotclear

Mi primera intención fue migrar el blog a una versión moderna del mismo CMS, Dotclear. La versión instalada, como ya he dicho, tenía más de 10 años de antigüedad, era la 1.2.1. La actual versión de Dotclear es la 2.9.1, y realmente en todos estos años ha evolucionado tanto que es otro CMS totalmente distinto. No hay una forma fácil de hacer la migración entre ambas versiones, es casi tan difícil como migrar a otro CMS diferente.

La única solución era hacer una migración manual, así que opté por cambiar de CMS. Al igual que otros blogs de MartinServer, decidí migrar a la última versión de WordPress. Exporté la base de datos a XML, realicé una instalación limpia de WordPress en el servidor y, con la ayuda del plugin WP All Import, importé todos los artículos y comentarios.

Paso seguido, subí todas las imágenes del blog a la carpeta /wp-content/uploads y, finalmente, cambié dentro de la base de datos la ruta relativa hacia las imágenes con una sentencia SQL:

UPDATE <tabla> SET <post_content> = REPLACE ( <columna>, ‘<url antigua>’, ‘<url nueva>’ )

Y eso fue todo. Ya volvía a funcionar el blog de Gustavo Montes. Obviamente, la plantilla o template que utilizaba (Promenade para Dotclear) no servía, lo adapté para la plantilla Writr para WordPress y ahora el blog luce tal que así:

blog de Gustavo Montes

Migrando MartinServer a un HP ProLiant MicroServer Gen8

Venturas y desventuras del cambio de servidor

hp proliant

Hewlett Packard Enterprise ProLiant MicroServer Gen8 E3-1220v2 4GB-U B120i LFF 2x1TB Server/S-Buy – Servidor

Hace menos de un año que puse mi propio servidor, MartinServer, en marcha. Desde entonces alojo todas mis páginas webs en casa, sin recurrir a ningún proveedor de hosting. El PC que utilizaba como servidor era bastante mediocre, un HP dc7800p Convertible Minitower, pero la verdad es que para lo que me costó ha venido funcionando bastante bien.

Pero el uso verdaderamente intensivo de MartinServer ha venido de parte del Servidor Plex que instalé. Actualmente alojo unas 1.500 películas y unas cincuenta series, que no sólo disfruto yo, sino que comparto con 15 amigos en 3 países diferentes.

Obviamente, con este escenario el rendimiento ya se resiente, y cuando tres o más usuarios están transcodificando vídeo simultáneamente, el servidor se desestabiliza peligrosamente. Ya se ha caído en alguna ocasión.

Llevo bastante tiempo pensando en cambiar el equipo, de forma que obtenga un rendimiento razonable. La mayor parte de los usuarios de Plex utilizan un NAS como servidor. Yo de hecho tengo dos Western Digital, uno de 3 TB y otro de 6 TB, donde almaceno mi contenido multimedia, aunque Plex está instado en el HP dc7800p.

Pero no es una solución que me convenza: MartinServer no sólo lo utilizo como servidor de Plex, es además mi servidor web, mi servidor FTP, mi almacenamiento en la nube particular… lo que necesito es un pequeño servidor doméstico.

ProLiant

La verdad es que no entiendo nada de hardware, por lo que me he tomado mucho tiempo pensando las opciones. Tras mucho comparar, fijé mi atención en el  HP ProLiant MicroServer Gen8, un servidor de diseño compacto y elegante que, además, tenía buenas referencias entre usuarios de Plex. Sólo advertían de la poca potencia del procesador, que no permitía demasiadas transcodificaciones simultáneas. En cualquier caso, el modelo que se me había antojado venía con un procesador Intel Xeon E3-1220L, que debería ser más que suficiente para soportar la carga de MartinServer.

Así que finalmente me decidí, y hace apenas unos días llegó a mi casa. Ahora quedaba el reto de migrar el servidor de equipo sin romper nada por el camino 🙂 .

Preparativos

La mayor parte de los propietarios de un  HP ProLiant MicroServer Gen8, por lo que vi, instalan el sistema operativo en un SDD (unidad de estado sólido) que obviamente se compra por separado y se conecta a través de la bahía para la unidad de disco óptico que viene dentro del equipo (hay que desmontarlo para su instalación). La ventaja de esta opción es mantener separado el sistema operativo de las unidades de almacenamiento (el HP Proliant viene con cuatro bahías para discos duros).

Yo ignoré esta opción. Mi equipo venía con dos discos duros de 1 TB, y yo le añadí otros dos discos duros de 6 TB cada uno. 14 TB en total. Decidí usar el primero de los discos de 1 TB para el sistema operativo y para la carpeta /home, el segundo para copias de seguridad y los dos discos de 6 TB para almacenar contenidos multimedia.

Otra opción que ignoré fue la de configurar los discos duros en RAID (Redundant Array of Independent Disks, es decir, “conjunto redundante de discos independientes”). Se suele utilizar para montar un espejo entre discos duros y, de esta forma, replicar la información en dos discos duros idénticos. Yo, imprudentemente, he ignorado esta posibilidad, he priorizado la capacidad total de almacenamiento sobre la seguridad.

Ubuntu Server

Así que pude proceder a instalar Ubuntu sin mayor demora. Lo único a tener en cuenta antes de instalar este sistema operativo es modificar la opción “Smart Array B120i RAID controller enabled” que viene por defecto en la BIOS (y que no está soportada por Ubuntu) por la opción “SATA AHCI Support”. Es fácil de hacer: Presionamos la tecla F9 y nos vamos a “System Options -> SATA Controller Options -> Embedded SATA Configuration”. Ahí seleccionamos “Enable SATA AHCI Support”. Presionamos la tecla ESC hasta que aparezca la opción para guardar, y listo.

Hecho esto, introducimos un USB de arranque con Ubuntu Server. Antes de instalar, abrimos Gparted y formateamos y montamos los discos duros. Reiniciamos, arrancamos nuevamente desde el USB, seguimos los pasos para la instalación y nada más. Ya está el HP Proliant funcionando con Ubuntu Server.

Clonando el servidor

Conecto el HP Proliant a mi red doméstica. Para clonar MartinServer utilizo el comando dd, que es una herramienta simple y muy potente. Con este comando puedo clonar todo el disco físico incluyendo el MBR (arranque de sistema), todas las particiones, UUIDs (la identificación única de cada partición) y los datos.
En el terminal escribí el siguiente comando para copiar el MBR:

su -c ‘dd if=/dev/sda of=/ruta/al/respaldo/sdabk.mbr count=1 bs=512’

Donde “/ruta/al/respaldo/” es donde guardé la copia de seguridad, un disco externo accesible tanto por el servidor viejo como por el nuevo.

Para realizar la copia de seguridad del sistema en sí, tecleé lo siguiente:

su -c ‘tar -cvpzf /ruta/al/respaldo/linuxbackup.tgz --exclude=/ruta/al/respaldo/ --exclude=/lost+found --exclude=/dev --exclude=/proc --exclude=/sys /’

Donde “/ruta/al/respaldo/”, nuevamente, es la ruta de acceso al disco duro externo. Con esto creé el archivo “linuxbackup.tgz” en el disco duro externo, que es una copia de seguridad completa del sistema. Es muy importante la opción “–exclude”, con ella le decimos qué debe quedar fuera de la copia de seguridad, como los discos duros externos o los directorios que están dinámicamente llenos por el sistema durante el arranque.

Migración

Ahora en el nuevo servidor, en el HP Proliant, escribí el siguiente comando para restaurar el MBR:

dd if=/ruta/al/respaldo/sdabk.mbr of=/dev/sda

Y para restaurar el sistema:
su -c ‘tar -xvpzf /ruta/al/respaldo/linuxbackup.tgz -C /’

Finalmente:
su -c ‘mkdir /proc && mkdir /lost+found && mkdir /dev && mkdir /sys && init 6’

Con esto se vuelven a crear los directorios excluidos y se reinicia el sistema. Teóricamente, el nuevo servidor debería ser idéntico al original.

Problemas

Pero algo debí hacer mal, porque el nuevo servidor no arrancaba. Me daba el error:

error: no such device: …
press any key to continue …

Seguramente no respaldé o restauré correctamente el MBR, con lo que la UUIDs de las particiones no coincidían. Es decir, en el archivo /etc/fstab del nuevo servidor se estaba apuntando a particiones que no existían. En el Grub seguramente habría la misma incongruencia.
Para solucionar esto, reinicié de nuevo el equipo con el USB de instalación. Desde una terminal tecleé:
blkid

Este comando me listó las UUIDs correctas del nuevo servidor. Con esta información siempre a la vista, abro otra ventana del terminal y tecleo:
gksudo gedit /boot/grub/grub.cfg

Me abre el fichero de configuración del Grub, el gestor de arranque. Cambio las antiguas UUIDs por las nuevas.
A continuación, lo mismo para fstab:
gksudo gedit /etc/fstab

Nuevamente cambio las antiguas UUIDs por las nuevas. Guardo y reinicio el sistema. Y… voilà! MartinServer ya está funcionando en el flamante HP Proliant Server.
El único detalle final es desconectar el servidor antiguo de la red y configurar en el router, para el nuevo servidor, la misma IP que utilizaba el servidor antiguo. Con esto, listo y funcionando.

Poemar, en formato ePub

poemar-epub Como decía en un artículo anterior, no pude resistirme a hacerme con el dominio poemar.es y subir el él todos los cuadernos de poesía publicados desde 1982 hasta 1992.
Diez años increíbles (yo participé sólo en la última etapa, desde 1990) en los que aprendimos juntos mientras creábamos.

Como también decía, mi intención no era sólo subir los poemas sino crear un eBook con cada uno de los Cuadernos de Poesía Poemar. Dicho y hecho. Ya están todos, en formato ePub, listos para descargar.

Los podéis encontrar en la sección “Libros” de este blog. En concreto, en los que yo participé son:

A disfrutarlos.

Nace poemar.es

Poemar 4Hace más de 15 años que para mí comenzó una de las experiencias más interesantes de mi vida. Como digo en la introducción de mi libro El verbo en mi bárbaro mundo, participar en el grupo de poetas que editaban Poemar me supuso mucho más que el mero hecho de reunirnos en torno a la publicación de un libro. Lo más interesante sin duda fueron las interminables veladas con José Antonio Francés, Juan Enrique Espinosa, Luis Caro, Lauro Gandul y, cómo no, el maestro Antonio Medina de Haro.

Como digo en el libro: “POEMAR, ese maravilloso cuaderno de poesía editado en Alcalá de Guadaíra, nos servía de aglutinante en una enfebrecida actividad literaria pero, sobre todo, vital. Conversaciones exaltadas, viajes, lecturas, descubrimientos…”.

Y en parte por el recuerdo imborrable que me dejó, en parte por resarcirme de la pérdida de m4rt1n.com, cuando vi ayer mismo que el dominio “poemar.es” estaba disponible, lo registré casi compulsivamente. En las próximas semanas iré subiendo a este nuevo website todos los contenidos que fuimos publicando a lo largo de los años en el Cuaderno de Poesía Poemar, y poco a poco iré editando y publicando en formato ePub cada uno de estos cuadernos de poesía.

Ha nacido poemar.es

Sergio Fernández Reche

sergio-fernandez-recheApenas hace quince días salimos juntos hacia el mercado central de Málaga (de caza, como le gustaba decir) y nos internamos en su amado crisol de gente y producto, de olores y colores. Iba tanteando los lados de forma discreta, apurado en sus fuerzas por la enfermedad, pero encarando con su voluntad el camino hacia adelante. Siempre hacia adelante. Llegado al puesto previsto, el ojo se le fue en busca de un gran mero, la mayor pieza de la plaza, semioculta. Como en otras ocasiones un flechazo evidente daría con la pieza en su horno. De camino a su casa fuimos barajando diversas formas de tratamiento. Amante en extremo de las formas y el detalle, dimos con la concreción en su cocina y a muy pequeños sorbos de vino fue acompañando un par de lomos definidos y paró… para luego seguir, disfrutando en lo que yo comía, con delectación, siendo capaz de encontrar en mi paladar el suyo. Sergio, sin duda siempre comió y disfrutó más que nadie, por que era capaz de disfrutar de lo propio (que no era poco) y de lo de su semejante. Aquel conocimiento de uno mismo en el otro, que tanto repetía.

Una semana después paseamos desde su casa. Sergio no se conformaba con la granizada cercana, tenia que ser la mejor, en Casa Mira de calle Larios. Ya por entonces era esqueleto y voluntad. A la vuelta, la evidencia me hizo enfrentar mi compromiso con él y preguntarle. Y fue cuando me narró lo poco que necesitaba. Tenia previsto lo fundamental, y como le dije entonces, su legado ya se desbordaba desde hacia muchos años inundándonos a todos para siempre. Resultó patente ayer en el velatorio; en su familia, en sus amigos, en su equipo de Rugby… y lo será aun más en el futuro cuando nos acompañe en paseos, comidas, recuerdos y consejos, en una carencia irremediable y en un recuerdo imborrable.
El ser humano solo no existe, cada persona complementa a la humanidad y se nutre de ella. No debemos acostumbrarnos al hedor que nos producen ciertos individuos, pero otros, mucho mas presentes (aunque menos frecuentes en las hemerotecas) soportan en su paciencia, en su moral, en su inteligencia y generosidad la propia existencia de todos. Algunas personas, y Sergio es el ejemplo mas claro que he vivido, ganan la supervivencia de todos, sin inmutarse, sin alardear por dicho mérito, sin oropeles… si acaso obsequiandose algún mero y un chulentoncillo con vino. Así, aquel mismo día, cuando desviaba aquella conversación – por que ya cargaba detrás de mis ojos –  Sergio escuchó y después me dio sus últimos consejos, para terminar de reventarme sobre el suelo de la calle granada con otra muestra más de su grandeza.

Ha muerto Sergio Fernandez Reche. Amigo del alma. Inseparable en mi vida, lúcido al extremo y hasta el final. Feliz cuando tocaba. Generoso… hasta el punto de no querer mostrarlo. Discreto y valiente. Un hombre en toda la extensión. De forma evidente, para aquellos que lo habéis conocido – y reconocida en lo que yo os he contado – su influencia es enorme. Me despidió horas antes desde su cama del hospital con una sonrisa tranquila y eterna, un abrazo y un beso. Todo eso era para todos. Todo eso era él.

A lo largo de los años que vivimos juntos, y en todas aquellas anécdotas no conocidas que me contaron su familia y amigos se dibuja una parte de su personalidad compleja. Sergio vivió como murió; como refleja una lámina de su casa: “Il tuffatore”… como tantas veces nos dijimos ambos en momentos de infortunio: sin miedo ni esperanza.

por Javier de la Torre