KEMBAR78
Blog de Iván López: NAS
Mostrando entradas con la etiqueta NAS. Mostrar todas las entradas
Mostrando entradas con la etiqueta NAS. Mostrar todas las entradas

miércoles, 16 de enero de 2013

Descargando torrents desde un QNAP (I)

Hace tiempo conté mi estrategia de backup en casa. Tengo montado un servidor debian con un raid 1 y unos scripts personalizados de rsync para realizar la sincronización y copia de los datos.

Adicionalmente tenía un portátil un tanto antiguo con ubuntu con el que descargaba series por medio de bittorrent y alguna otra cosa con amule. Hace unos meses decidí que quería mejorar un poco toda esta infraestructura con un NAS. Así, después de mucho mirar compré un Qnap TS-412 y un par de discos de 2 TB. Con los dos discos he creado un raid 1 y ahora tengo ahí toda mi información, fotos, series, música,...

El qnap tiene un linux embebido con mucha funcionalidad y que es fácilmente ampliable y personalizable. Para las descargas utilizo Transmission que se puede instalar desde el gestor de software incluído. Transmission funciona perfectamente pero tiene un pequeño problema, no permite configurar un feed rss desde el que descargar los torrents. Esto es un gran problema para mí porque para descargar mis series favoritas utilizo Show RSS. Una vez registrado en la web eliges tu series de la lista y puedes generar un feed rss personalizado en donde se publicarán automáticamente los torrents de las series según estén disponibles.

Así que con este problemilla me puse a buscar una solución. Como no soy el único que tiene estos problemas estuve probando distintas alternativas que encontré en diversos foros, pero o no funcionaban correctamente o no me terminaban de convencer. Finalmente encontré TV Torrent RSS Downloader que casi cubre mis necesidades. Es una pequeña aplicación hecha en Java en la que configuras uno o varios feeds rss y unos filtros y descarga los archivos adjuntos. Después de hacer una pruebas en local todo funcionó a la perfección, pero hay había un problema ¿cómo instalo java en el qnap?

Después de bucear un poco por la web de Sun Oracle llegué a la web de descargas del JRE para Linux ARM y tras unas pruebas de ensayo-error descargué la versión correcta para mi arquitectura: ARMv5 Linux – Headless EABI, SoftFP, Little Endian. La instalación es tan sencilla como descomprimir el archivo y configurar el path correctamente y comprobar que el ejecutable funciona:
$ ./java -version
java version "1.6.0_38"
Java SE Embedded Runtime Environment (build 1.6.0_38-b05, headless)
Java HotSpot(TM) Embedded Client VM (build 20.13-b02, mixed mode)

Ahora con java instalado es tan sencillo como ejecutar:
$ java -jar tvrss.jar

Y los .torrents de cada serie se iran descargando automáticamente al directorio que hayamos especificado en el archivo de configuración. Una vez funcionando las descargas de los .torrents de cada serie, si configuramos la ruta de descarga al directorio watched de transmission, los archivos se añadirán y se pondrán a descargar automáticamente.

Con todo funcionando podemos configurar un script .sh que se ejecute a la hora que queramos y descargue automáticamente todos los torrents. Por ejemplo:

$ cat tvrss.sh 
#!/bin/bash

JAVA_HOME=/share/MD0_DATA/software/java/ejre1.6.0_38
APP_DIR=/share/MD0_DATA/software/transmission_scripts/tvrss
LOG_FILE=$APP_DIR/torrents.log

cd /share/MD0_DATA/software/transmission_scripts/tvrss
$JAVA_HOME/bin/java -jar $APP_DIR/tvrss.jar >> $LOG_FILE

Con esto solucionamos el problema de la descarga de los archivos .torrent y el añadirlos a Transmission, pero como comenté antes, la versión original de TV Torrent tiene un pequeño problema: los filtros. Por cada serie que queramos descargar es necesario añadir un filtro nuevo en el archivo de configuración para que ésta se descargue. Además, si en el feed rss publican una nueva versión, las típicas versiones PROPER o REPACK que corrigen problemas de sincronización o similar, éstas tampoco serán descargadas.

La solución en el siguiente artículo :-)

sábado, 17 de marzo de 2007

Raid 1 en Linux

   Siguiendo el artículo anterior del servidor NAS para casa, aquí cuento todo lo que hice para configurar y probar el raid 1 en debian y las conclusiones finales a las que llegué. Este pequeño tutorial lo he hecho en una máquina virtual VMware por lo cómodo que es probar e instalar todo. El disco de sistema es hda con una única partición y los discos con los que se creará el raid 1 serán hdb y hdc. Muestro en rojo lo que he introducido en los diferentes menús.
  • Particionar los dos discos duros. El sistema de archivos debe ser Linux raid auto.
    shian:~# fdisk /dev/hdb
    Command (m for help): p

    Disk /dev/hdb: 1073 MB, 1073741824 bytes
    16 heads, 63 sectors/track, 2080 cylinders
    Units = cylinders of 1008 * 512 = 516096 bytes

    Device Boot Start End Blocks Id System

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-2080, default 1):INTRO
    Using default value 1
    Last cylinder or +size or +sizeM or +sizeK (1-2080, default 2080):INTRO
    Using default value 2080

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    Changed system type of partition 1 to fd (Linux raid autodetect)

    Command (m for help): p

    Disk /dev/hdb: 1073 MB, 1073741824 bytes
    16 heads, 63 sectors/track, 2080 cylinders
    Units = cylinders of 1008 * 512 = 516096 bytes

    Device Boot Start End Blocks Id System
    /dev/hdb1 1 2080 1048288+ fd Linux raid autodetect

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.
  • Repetimos los pasos para /dev/hdc.
  • Creamos el raid 1 con las dos particiones que acabamos de crear. En las opciones indicamos que el tipo de raid será 1 (mirror), que deseamos utilizar dos discos y que el nuevo dispositivo raid será /dev/md0.
    shian:~# mdadm --create /dev/md0 --verbose --level=1 --raid-devices=2 /dev/hdb1 /dev/hdc1
    mdadm: size set to 1048192K
    mdadm: array /dev/md0 started.

    NOTA: Si ya hemos usado el disco anteriormente para otro raid, es necesario reiniciar el superbloque para que se borre la información existente, puesto que sino, la creación puede fallar:
    shian:~# mdadm --zero-superblock /dev/sdXX
  • El raid 1 se está creando en segundo plano. En función del tamaño de los discos tardará más o menos. Se puede ver el estado en el archivo /proc/mdstat:
    shian:~# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    md0 : active raid1 ide/host0/bus1/target0/lun0/part1[1] ide/host0/bus0/target1/lun0/part1[0]
    1048192 blocks [2/2] [UU]
    [===========>.........] resync = 58.2% (611196/1048192) finish=0.0min speed=101866K/sec
    unused devices: <none>
  • El porcentaje va subiendo hasta que finalmente el dispositivo está listo:
    shian:~# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    md0 : active raid1 ide/host0/bus1/target0/lun0/part1[1] ide/host0/bus0/target1/lun0/part1[0]
    1048192 blocks [2/2] [UU]

    unused devices: <none>
  • A partir de este momento para cualquier manipulación que deseemos hacer del raid debemos utilizar /dev/md0 y no /dev/hdb1 ni /dev/hdc1.
  • Formateamos el raid
    shian:~# mkfs.ext3 /dev/md0
    mke2fs 1.37 (21-Mar-2005)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    131072 inodes, 262048 blocks
    13102 blocks (5.00%) reserved for the super user
    First data block=0
    8 block groups
    32768 blocks per group, 32768 fragments per group
    16384 inodes per group
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376

    Writing inode tables: done
    Creating journal (4096 blocks): done
    Writing superblocks and filesystem accounting information: done

    This filesystem will be automatically checked every 22 mounts or
    180 days, whichever comes first. Use tune2fs -c or -i to override.
  • Creamos el punto de montaje, añadimos la entrada correspondiente para que el raid se monte cuando se arranca la máquina y lo montamos:
    shian:~# mkdir /mnt/raid

    shian:~# echo "/dev/md0 /mnt/raid ext3 defaults 0 1" >> /etc/fstab

    shian:~# mount /mnt/raid

    shian:~# df -h /dev/md0
    Filesystem Size Used Avail Use% Mounted on
    /dev/md0 1008M 17M 941M 2% /mnt/raid
  • Aquí ya habríamos terminado la instalación del raid y podríamos utilizarlo, aunque tal y como está configurado y montado sólo tendría permisos el usuario root.

  •    A partir de aquí, lo que yo hice inicialmente fue simular que un disco duro se estropeaba y al arrancar la máquina quería montar el raid sólo con el otro disco y utilizarlo normalmente. Además, después de simular con la máquina virtual que añadía un nuevo disco duro, quería añadirlo al raid para volver a tener de nuevo la redundancia. Después de leer muchos tutoriales y foros no había manera de que funcionase. Si reiniciaba la máquina sin un disco del raid, éste no se montaba y no podía acceder a los datos. Además, el dispositivo /dev/md0 no era reconocido, por lo que era como si el raid no existiese!. Finalmente, encontré en un pequeño tutorial la solución a mis problemas.

  • Es necesario indicarle al sistema operativo cómo acceder a ese dispositivo raid para que sea capaz de utilizarlo. Esto que puede parecer tan obvio no venía en ningún tutorial ni en ninguna ayuda de las que consulté.
    shian:/# cd /etc/mdadm
    shian:/etc/mdadm# cp mdadm.conf mdadm.conf.`date +%y%m%d`
    shian:/etc/mdadm# echo "DEVICE partitions" > mdadm.conf
    shian:/etc/mdadm# mdadm --detail --scan >> mdadm.conf
    shian:/etc/mdadm#
    shian:/etc/mdadm# cat mdadm.conf
    DEVICE partitions
    ARRAY /dev/md0 level=raid1 num-devices=2 UUID=a48e6816:ea6e7f37:6cc50cdb:6fead399
    devices=/dev/hdb1,/dev/hdc1
  • Ahora ya podemos reiniciar la máquina y el raid arrancará y se montará automáticamente en el arranque.
  • Podemos probar a parar el dispositivo y a levantarlo de nuevo:
    shian:/etc/mdadm# umount /mnt/raid
    shian:/etc/mdadm# mdadm --stop /dev/md0
    shian:/etc/mdadm# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    unused devices: <none>

    shian:/etc/mdadm# mdadm --assemble /dev/md0 /dev/hdb1 /dev/hdc1
    mdadm: /dev/md0 has been started with 2 drives.
    shian:/etc/mdadm# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    md0 : active raid1 ide/host0/bus0/target1/lun0/part1[0] ide/host0/bus1/target0/lun0/part1[1]
    1048192 blocks [2/2] [UU]

    unused devices: <none>

  •    Ahora sí, vamos a probar si realmente el podemos recuperar la información y el sistema funciona correctamente en caso de caída de un dispositivo. Además, veremos cómo reemplazar el disco defectuoso y recuperar de nuevo el raid 1 con los dos discos.
  • Creamos un archivo aleatorio de 25MB en el raid montando previamente de nuevo el raid:
    shian:/# mount /dev/md0 /mnt/raid
    shian:/# dd if=/dev/urandom of=/mnt/raid/random1 count=51200
    51200+0 records in
    51200+0 records out
    26214400 bytes transferred in 7.829523 seconds (3348148 bytes/sec)
  • Calculamos su CRC y lo apuntamos. Posteriormente nos servirá para comprobar que todo es correcto:
    shian:/# cksum /mnt/raid/random1
    1652310020 26214400 /mnt/raid/random1
  • Vamos a simular un fallo en uno de los dispositivos. Para ello apagamos el sistema, desconectamos uno de los discos duros (en este caso /dev/hdb) y arrancamos de nuevo.
  • Una vez arrancado de nuevo el sistema, si examinamos con detalle los mensajes de arranque encontraremos algo como lo siguiente. Como se puede ver el sistema ha detectado un disco falla y al no haber un disco de repuesto (spare) levanta el raid en modo degradado con un sólo disco. Podremos seguir utilizando el raid con total normalidad pero si este disco también fallase, perderíamos irremediablemente todos los datos.
    md: bind
    md: ide/host0/bus1/target0/lun0/part1's event counter: 00000006
    md0: former device hdb1 is unavailable, removing from array!
    md: raid1 personality registered as nr 3
    md0: max total readahead window set to 124k
    md0: 1 data-disks, max readahead per data-disk: 124k
    raid1: device ide/host0/bus1/target0/lun0/part1 operational as mirror 1
    raid1: md0, not all disks are operational -- trying to recover array
    raid1: raid set md0 active with 1 out of 2 mirrors
    md: updating md0 RAID superblock on device
    md: ide/host0/bus1/target0/lun0/part1 [events: 00000007]<6>(write) ide/host0/bus1/target0/lun0/part1's sb offset: 1048192
    md: recovery thread got woken up ...
    md0: no spare disk to reconstruct array! -- continuing in degraded mode
    md: recovery thread finished ...
  • En el archivo /proc/mdstat podemos ver el estado del raid. Ahora mismo se encuentra funcionando sólo con un dispositivo de dos posibles y nos indica que el que ha fallado es el primero de ellos:
    shian:~# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    md0 : active raid1 ide/host0/bus1/target0/lun0/part1[1]
    1048192 blocks [2/1] [_U]

    unused devices: <none>
  • No obstante el raid está montado y el filesystem es accesible:
    shian:~# df -h /dev/md0
    Filesystem Size Used Avail Use% Mounted on
    /dev/md0 1008M 42M 916M 5% /mnt/raid
  • Ahora marcamos el disco /dev/hdb1 como fallo para proceder a cambiarlo:
    shian:~# mdadm --manage /dev/md0 --fail /dev/hdb1
    mdadm: set /dev/hdb1 faulty in /dev/md0

  •    Apagamos la máquina y cambiamos el disco duro defectuoso por uno nuevo. En el caso de VMware basta con crear un nuevo dispositivo de tipo disco duro. Además, este disco duro nuevo que añadimos va a ser de mayor tamaño que el anterior. Idealmente en un raid 1 los dos discos duros deben tener el mismo tamaño, pero linux nos proporciona la suficiente flexibilidad para que esto no sea así.

  • En el arranque de la máquina vemos que el raid sigue arrancando pero en modo degradado. Lo que vamos a hacer es crear la tabla de particiones del nuevo disco duro exáctamente igual que la del disco duro que aún funciona y que forma parte del raid:
    shian:~# sfdisk -d /dev/hdc | sfdisk /dev/hdb
    Checking that no-one is using this disk right now ...
    OK

    Disk /dev/hdb: 4161 cylinders, 16 heads, 63 sectors/track

    sfdisk: ERROR: sector 0 does not have an msdos signature
    /dev/hdb: unrecognized partition table type
    Old situation:
    No partitions found
    New situation:
    Units = sectors of 512 bytes, counting from 0

    Device Boot Start End #sectors Id System
    /dev/hdb1 63 2096639 2096577 fd Linux raid autodetect
    /dev/hdb2 0 - 0 0 Empty
    /dev/hdb3 0 - 0 0 Empty
    /dev/hdb4 0 - 0 0 Empty
    Warning: no primary partition is marked bootable (active)
    This does not matter for LILO, but the DOS MBR will not boot this disk.
    Successfully wrote the new partition table

    Re-reading the partition table ...

    If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
    to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
    (See fdisk(8).)
  • Como este nuevo disco duro es mayor que el anterior, podemos crear una partición /dev/hdb2 y formatearla para utilizarla sin problemas.
    shian:~# fdisk /dev/hdb

    The number of cylinders for this disk is set to 4161.
    There is nothing wrong with that, but this is larger than 1024,
    and could in certain setups cause problems with:
    1) software that runs at boot time (e.g., old versions of LILO)
    2) booting and partitioning software from other OSs
    (e.g., DOS FDISK, OS/2 FDISK)

    Command (m for help): n
    Command action
    e extended
    p primary partition (1-4)
    p
    Partition number (1-4): 2
    First cylinder (2081-4161, default 2081):INTRO
    Using default value 2081
    Last cylinder or +size or +sizeM or +sizeK (2081-4161, default 4161):INTRO
    Using default value 4161

    Command (m for help): p

    Disk /dev/hdb: 2147 MB, 2147483648 bytes
    16 heads, 63 sectors/track, 4161 cylinders
    Units = cylinders of 1008 * 512 = 516096 bytes

    Device Boot Start End Blocks Id System
    /dev/hdb1 1 2080 1048288+ fd Linux raid autodetect
    /dev/hdb2 2081 4161 1048824 83 Linux

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.

    shian:~# mkfs.ext3 /dev/hdb2
    mke2fs 1.37 (21-Mar-2005)
    warning: 62 blocks unused.

    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    131328 inodes, 262144 blocks
    13110 blocks (5.00%) reserved for the super user
    First data block=0
    8 block groups
    32768 blocks per group, 32768 fragments per group
    16416 inodes per group
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376

    Writing inode tables: done
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done

    This filesystem will be automatically checked every 30 mounts or
    180 days, whichever comes first. Use tune2fs -c or -i to override.

    shian:~# mkdir /mnt/tmp

    shian:~# mount /dev/hdb2 /mnt/tmp
  • Ahora vamos a reconstruir el raid:
    shian:~# mdadm --manage /dev/md0 --add /dev/hdb1
    mdadm: hot added /dev/hdb1
  • En este instante el raid 1 se está reconstruyendo. Toda la información del disco existente (/dev/hdc1) se está escribiendo en el nuevo disco (/dev/hdb1) para reconstruir el mirror y tener de nuevo la redundancia. Podemos comprobar el estado en el archivo /proc/mdstat:
    shian:~# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    md0 : active raid1 ide/host0/bus0/target1/lun0/part1[2] ide/host0/bus1/target0/lun0/part1[1]
    1048192 blocks [2/1] [_U]
    [=======>.............] recovery = 39.5% (415488/1048192) finish=0.1min speed=69248K/sec
    unused devices: <none>
  • Finalmente, después de un tiempo tenemos el raid recuperado:
    shian:~# cat /proc/mdstat
    Personalities : [raid1]
    read_ahead 1024 sectors
    md0 : active raid1 ide/host0/bus0/target1/lun0/part1[0] ide/host0/bus1/target0/lun0/part1[1]
    1048192 blocks [2/2] [UU]

    unused devices: <none>
  • Si no nos fiamos de que todo esté correcto (yo tengo que verlo para creerlo), podemos hacer lo siguiente para comprobar que la recuperación se ha realizado satisfactoriamente. Lo que vamos a hacer es desmontar el raid, montar únicamente el nuevo dispositivo /dev/hdb1 y comprobar el CRC del archivo que generamos anteriormente para comprobar que la recuperación ha sido correcta.
    shian:~# umount /mnt/raid
    shian:~# mount /dev/hdb1 /mnt/raid
    shian:~# cksum /mnt/raid/random1
    1652310020 26214400 /mnt/raid/random1
  • Y listo!. El raid se ha recuperado correctamente y toda nuestra información está a salvo. Es importante dejarlo todo como estaba antes de utilizarlo puesto que ahora mismo en /mnt/raid se encuentra montado de manera temporal sólo un dispositivo del raid y no éste completo. Si ahora hiciéramos algún cambio, creásemos archivos,... perderíamos todos esos datos en cuanto montásemos de nuevo el raid. Mejor lo dejamos todo como estaba:
    shian:~# umount /mnt/raid/
    shian:~# mount /mnt/raid/
    shian:~# df -h /mnt/raid/
    Filesystem Size Used Avail Use% Mounted on
    /dev/md0 1008M 42M 916M 5% /mnt/raid
  • Si ahora reiniciamos la máquina vemos que el raid arranca correctamente con los dos discos de nuevo:
    md: ide/host0/bus0/target1/lun0/part1's event counter: 0000000c
    md: ide/host0/bus1/target0/lun0/part1's event counter: 0000000c
    md: raid1 personality registered as nr 3
    md0: max total readahead window set to 124k
    md0: 1 data-disks, max readahead per data-disk: 124k
    raid1: device ide/host0/bus0/target1/lun0/part1 operational as mirror 0
    raid1: device ide/host0/bus1/target0/lun0/part1 operational as mirror 1
    raid1: raid set md0 active with 2 out of 2 mirrors
    md: updating md0 RAID superblock on device
    md: ide/host0/bus0/target1/lun0/part1 [events: 0000000d]<6>(write) ide/host0/bus0/target1/lun0/part1's sb offset: 1048192
    md: ide/host0/bus1/target0/lun0/part1 [events: 0000000d]<6>(write) ide/host0/bus1/target0/lun0/part1's sb offset: 1048192

  •    Hemos visto una manera bastante sencilla y fiable de tener nuestros datos importantes a buen recaudo. No obstante este sistema raid no sirve de nada sin una buena política de backups, puesto que no protege del borrado accidental de archivos.

       Después de haber probado FreeNAS y el Raid en Debian puedo sacar en claro lo siguiente:
  • FreeNAS es mucho más sencillo y fácil de configurar, pero no ofrece toda la flexibilidad que linux. Por ejemplo, con FreeNAS no es posible crear un raid con dos discos de distinto tamaño y aprovechar el espacio restante. En linux eso no supone ningún problema. Simplemente hay que tener claro que los datos de esa nueva partición no tendrán respaldo, por lo que no se debe utilizar para almacenar información importante.
  • FreeNAS todavía es una versión beta y aunque parece muy robusta y hay mucha gente que la está utilizando (sólo hay que echar un vistazo a sus foros), los desarrolladores indican que no se debería utilizar en entornos de producción. Por contra, el raid por software en linux se lleva utilizando desde hace bastante tiempo.
  • Si tengo algún problema con FreeNAS será más complicado encontrar soporte. Sólo tendría el foro para preguntar. Si tengo un problema con linux tengo a mano a Alex que seguro está encantado de echarme una mano ;-)
  • Al utilizar un sistema linux "estandar" podemos montar un apache, scripts de monitorización del raid, avisos por correo electrónico,... cualquier cosa que se nos ocurra. Con FreeNAS esto sería muy complicado de hacer.

  •    Ahora ya sólo me queda cambiar mi actual Duron 1200Mhz (algo que voy a hacer en las próximas semanas) puesto que ya está algo viejo y cada vez lo noto más lento y utilizarlo como servidor NAS-Debian en casa.

       El siguiente capítulo será la configuración de Samba para compartir los nuevos dispositivos creados con una máquina windows así como la gestión de los distintos permisos de usuario.

       

    martes, 13 de marzo de 2007

    Servidor NAS para casa

       Hace un mes descubrí el proyecto FreeNAS. Es un proyecto para crer un servidor NAS basado en una distribución de FreeBSD y con una interfaz gráfica php. La instalación es muy sencilla he incluso en la web de sourceforge podemos descargar una máquina virtual de VMware ya preparada para probar.

       Me ha picado el gusanillo y he estado algún tiempo realizando bastantes pruebas (gracias a la máquina virtual) creando servidores con discos en raid 1, raid 5, (por software claro)... compartiendo los datos con máquinas windows,... y aunque todavía se trata de una versión beta (actualmente 0.68b3) el producto está muy logrado y me ha sorprendido gratamente. Me he planteado crear un pequeño servidor NAS en casa con raid 1 para poder tener todos los datos importantes centralizados y poder gestionar mejor las copias de seguridad. Actualmente es bastante complicado porque mi mujer trabaja con su portatil pero parte de su información está en mi sobremesa, luego otra copia está en mi disco duro externo,... y nunca tiene tiempo de sincronizar la información!! en fin, un caos!.

       Un aspecto muy importante cuando se configura un servidor NAS es la recuperación en caso de fallo. En mi caso, con la máquina virtual es muy fácil de simular y probar. Sólo hay que desconectar un disco duro y arrancar de nuevo el sistema para ver qué ocurre. En las pruebas no se perdió nada de información aunque se trabajase sólo con un único disco. Posteriormente conecté un nuevo disco a la máquina virtual y lo quise añadir al raid 1. Al principio me volví loco puesto que desde la interfaz gráfica no encontraba la forma de hacerlo. Finalmente, después de leer el foro descubrí que a los desarrolladores se les había olvidado la opción de añadir un disco al raid 1. Como FreeNAS utiliza la herramienta gmirror de FreeBSD, googleando un poco encontré los comandos necesarios para reconstruir el raid sin problemas desde la línea de comandos.

       Unos días después le conté este proyecto a Alex y aunque me dijo que tenía buena pinta me sugirió que hiciera lo mismo con linux, exactamente con Debian. La ventaja de utilizar FreeNAS es que ya está todo configurado y orientado al servidor NAS. Así, es muy sencillo compartir la información con clientes windows, utilizar un servidor ftp,... Pero esto también es un inconveniente. El sistema está tan pensado para hacer sólo esto que es muy dificil añadir alguna mejora o modificarlo para adaptarlo a nuestros gustos. Además, aunque no tengo los conocimientos de Alex en linux, me defiendo. Sin embargo, esto no lo puedo decir de FreeBSD que es el sistema operativo en el que se basa FreeNAS.

       Así, descargué la última versión de Debian Sarge que encontré (la 3.1r5) y lo instalé en VMware para poder hacer todas las pruebas. En breve publicaré el siguiente artículo con todo lo que tuve que hacer y cómo solucioné los problemas (que hubo bastantes) hasta que logré que todo funcionase correctamente.