lunes, 26 de febrero de 2018

¿Cómo manejo una unidad de cinta en Ubuntu?

Juan Perón exponía durante los distintos actos públicos la ideología benefactora del Estado Justicialista, y propalaba paternalmente aquellos conocimientos que podían servir al Pueblo. En un discurso en la inauguración del Tambo Nuevo en Santa Fé explica cómo controlar las antiguas unidades de cinta para hacer respaldos en Ubuntu.

Vean señores, en nuestra era, no cabe duda que el medio de almacenamiento mas extendido está constituido por los discos rígidos magnéticos.

De un tamaño original de un lavarropa, la evolución los ha hecho miniaturizarse, de manera tal que hoy no tienen más de 3 pulgadas de ancho y ocupan menos espacio que un atado de Pall Mall.

Si necesitamos transportabilidad y viajar con ellos, a estos chiquitos se le suele adosar de fábrica una interfaz USB, con lo que logramos un disco rígido externo. También, si nuestras necesidades de espacio y velocidad no son tan acuciantes, contamos ya con las prácticas memorias Flash (también con la misma interfaz, conformando un pendrive). Ello los convierte en los más peronistas de los medios de almacenamiento.

Sin embargo, existen medios de almacenamiento que - a pesar de su veteranía - no cejan en dar pelea y constituyen un verdadero "primer peronismo". Esto es así pues la confiabilidad de su almacenamiento y la gran durabilidad y estabilidad de su medio se une al bajo precio que pueden llegar a tener en ciertas condiciones (si lo comparamos con su capacidad). Uno de estos dispositivos para el almacenamiento ha superado la barrera del tiempo y siempre se renueva tecnológicamente: es la cinta magnética.

Desde las unidades de IBM que acompañaban a las mainframe (de un tamaño individual que superaba a una heladera Siam), hasta el simpático Datasette del microordenador Commodore 64, la cinta ha sido protagonista del almacenamiento de Masa.


A nivel empresarial, se utiliza la cinta como medio de respaldo de la información, y actualmente conserva su valía en tal accionar. Es por ello que hoy, a pesar de la inmensidad de los Terabytes disponibles en sistemas de disco duro, la cinta aún conserva su vialidad como medio de resguardo.


Su principal desventaja es tal vez la secuencia lineal que normalmente tiene su operación de escritura (lo cual lo desaconseja para tareas diarias), y también lo lenta de su acción de lectura. Su ventaja radica en la alta capacidad relativa y en el bajo costo del medio de almacenamiento.

En este caso, explicaré el uso de una unidad marca HP modelo C1533A adosada a una placa controladora PCI Adaptec Scsi-2.

Se trata de una unidad tecnológicamente superada pero que puede servir para practicar y para emprender para pequeñas tareas de resguardo a una velocidad de 1,2GB/h. Esto es así pues la unidad de cinta junto con su placa controladora la recibimos como donación, y emplea extendidos casettes de cinta DAT de los cuales conseguimos en cajas bulk de 20 unidades por muy bajo costo.

Específicamente en este caso del Verbatim DataLife formato DDS-2 (cassette con 120 metros cinta de 4mm de ancho (realmente 3,81mm), que permiten almancenar unos 4GB de datos sin compresión y 8GB con compresión.

Nos sirven como una buena opción para respaldar datos de trabajo de múltiples servidores, y distinta información en forma de documentos de texto y planillas electrónicas, así como guardar datos de páginas webs montadas en una miríada de servidores Apache...

Pues bien, los sistemas operativos GNU con Linux (y otros sistemas similares a Unix) son capaces de funcionar a través de estos dispositivos de cinta, que si bien son poco conocidos ya, en casos específicos siguen siendo útiles. Desde el punto de vista del software libre, se emplean el comando mt ("magnetic tape", o cinta magnética) para controlar la operación de la o las unidades de cinta magnética. Necesitaremos utilizarlo toda vez que operemos con este tipo de dispositivos.

Dispositivos de Unidades de Cinta

En primer lugar, debemos conocer cómo nuestro sistema llama o nomencla a nuestra unidad de cinta (en este caso la HP C1533A). Esto es así pues - desde un punto de vista lógico - en los sistemas GNU con Linux los dispositivos de cinta son dispositivos de caracteres nomenclado como simples archivos en nuestro sistema de archivos. O sea, como todos los demás dispositivos, encontraremos un fichero especial en el directorio /dev/ al cual nos referiremos como la unidad de cinta.

Sin embargo, podríamos encontrar varios tipos distintos de dispositivos de cinta, al cual el sistema nomencla dependiendo sus características propias. Por ejemplo:
  • Las unidades de cinta de interfaz SCSI usan los nombres /dev/st0, /dev/nst0, /dev/st1, /dev/nst1, etcétera. La interfaz SCSI y su controlador es considerado de las más confiables, pero naturalmente las unidades de cinta SCSI son más caras que las otras.
  • Los dispositivos de cinta ATAPI comienzan con /dev/ht0 y /dev/nht0.
  • También existe un soporte limitado para unidades de cinta a través del viejo controlador floppy, localizados en /dev/ft0 y /dev/ntf0.

Existen dos versiones de cada dispositivo de cinta en los sistemas GNU con Linux:
  • Un dispositivo rewind rebobina la cinta después de cada operación, por ejemplo /dev/st0 es un dispositivo rewind (con capacidad de rebobinado).
  • Un dispositivo de cinta no-rewind no rebobinará la cinta después de sus operaciones. Los dispositivos No-rewind comenzarán con una n; por ejemplo, /dev/nst0 es un dispositivo no-rewind.
Debemos saber que en vista de esta diferenciación mecánica, los dispositivos rewind como nuestra unidad DDS-2/DAT son prácticamente inútiles para el uso del archivado diario. Su objetivo solamente es realizar respaldos secuenciales en la cinta. En las secciones siguientes veremos que será necesario operarlos reposicionando la cinta mediante las acciones de avance o rebobinado de cinta...

Ahora bien, para identificar nuestra unidad de cinta, podremos ingresar el comando:

dmesg

...y buscar en el mismo las identificadores de la misma:
  Vendor: HP        Model: C1533A            Rev: 9503
  Type:   Sequential-Access                  ANSI SCSI revision: 02
st: Version 20010812, bufsize 32768, wrt 30720, max init. bufs 4, s/g segs 16
Attached scsi tape st0 at scsi0, channel 0, id 4, lun 0

...como vemos, en el caso de la unidad de cinta HP C1533A, recibe en nuestro sistema la nomenclatura de /dev/st0 (el primer nombre de dispositivo de cinta SCSI con capacidad de rebobinado).

Configurar el entorno

Ya que hemos visto qué nombre recibe la unidad de cinta en nuestro sistema, será útil especificarlo en nuestro archivo de entorno .bashrc. Esto es particularmente útil si siempre usaremos la misma unidad de cinta en el sistema, o si sólo tenemos una de ellas, pues nos ahorrará tener que expecificar en cada comando que la unidad de cinta es /dev/st0 o lo que fuese.

Configuraremos entonces la variable de entorno TAPE para que represente el dispositivo que tenemos. En nuestro caso podríamos ingresar:

nano ~/.bashrc

...esto abrirá el editor de texto GNU Nano con archivo de ejecución .bashrc (ya debería tener contenido, no modificamos nada de lo que ya está escrito). Al final del archivo le agregamos las siguientes líneas:

## Agregado de Variable TAPE por Usuario Perón ## 
TAPE=/dev/st0
export TAPE

Finalmente, guardamos el archivo con Ctrl+q y salimos del editor GNU Nano con Ctrl+x.

Trabajando con Unidades de Cinta

La cinta es una de los medios de almacenamiento más simples en existencia. Podríamos pensar en la cinta como una secuencia de archivadas, con una marca de archivo al final de cada una de ellas que la separa de la siguiente, como se muestra en la figura 1. Presten particular atención a que no existe una marca de archivo al principio de la cinta, y que la primera archivada (llamamos así a la tanda de ficheros que se graban secuencialmente) recibirá el número 0.


Figura 1: Archivadas y marcas de archivo en la cinta.

A diferencia de otros dispositivos de almacenamiento más complejo, la cinta normalmente carece de un sistema de archivos. Por otro lado, no existe información en la cinta que indique el nombre de cada archivo (aunque los sistemas de respaldo automático usualmente incluyen un archivo de índice especial al comienzo de la cinta). Cuando operamos manualmente con la cinta, operaremos con los números de archivo y las marcas de archivo, y nada mas.

Por ello tomamos un casette DDS-2 y lo colocamos en la unidad de cinta. Como operaremos "a pelo", debemos tener cuidado de lo que hacemos. Tal es el motivo por el cual usamos una cinta virgen para practicar.

Para acceder a los datos en la cinta, debemos manipular el cabezal de la unidad de lectura. La figura 2 nos muestra la posición inicial del cabezal. Suponiendo que  que nuestro dispositivo de cinta sea st0, empleamos el dispositivo /dev/st0.

Primero, verificamos la posición de la cinta con el comnado status mt (la variable -f /dev/st0 especifica el archivo de dispositivo de la unidad de cinta. No es necesario poner dicha variable si ya especificamos nuestra variable de entorno TAPE.

mt -f /dev/st0 status

Figura 2: El cabezal al comienzo de la cinta.

El sistema debería devolvernos algo así (en el ejemplo, una unidad de cinta DAT):
SCSI 2 tape drive:
File number=0, block number=0, partition=0.
Tape block size 0 bytes. Density code 0x13 (DDS (61000 bpi)).
Soft error count since last status=0
General status bits on (41010000):
 BOT ONLINE IM_REP_EN

Esto nos representa mucha información:
  • El número de archivo actual es 0.
  • El número de bloque actual es 0, de modo que el cabezal está al comienzo del archivo.
  • Debemos ignorar la partición, sólo las unidades de tipo moderno los soportan y esta unidad de cinta tipo DDS-2 no lo hace.
  • El tamaño de bloque es 0, lo que en realidad significa que la unidad de cinta no tienen un tamaño de bloque fijo específico.
  • El código de densidad especifica cuánta información puede caber en la cinta.
  • El soft error count es la cantidad de errores recuperables que han ocurrido desde la última vez que ejecutamos mt status.
  • Los status bits explican más acerca del estado de la cinta y de la unidad de cinta. BOT significa "comienzo de cinta", y ONLINE reporta que la unidad de cinta está lista y cargada.

Creando Archivadas en una cinta

Es difícil entender cómo una unidad de cinta opera pasando a través de varios ficheros en una cinta cualquiera de una colección de respaldos. Por lo tanto, para explicar el proceso de búsqueda en una cinta, lo imaginaremos creando algunas archivadas por nosotros mismos, antes de especificar cómo descargar sus datos. Una vez que hayamos comprendido esto, seremos capaces de avanzar y rebobinar la cinta sin grandes confusiones que nos hagan preocupar por la pérdida de datos. Seremos entonces verdaderos peronistas de pelo en pecho.

Imaginemos que queremos crear tres archivadas en la cinta magnética. Específicamente, usaremos tar para encadenar todos los ficheros que se encuentran en los directorios /lib, /boot y /dev de nuestro sistema GNU con Linux. Estos directorios son algunos de los importantes de sistema y los usaremos como ejemplos.
  1. Colocamos un cartucho de cinta en la unidad (una casette DDS-2 virgen o cuyo contenido no nos interese)-
  2. A diferencia del caso anterior, nos aseguramos que nuestra variable de entorno TAPE esté configurada como un dispositivo no-rewind (sin rebobinado), en este caso podremos emplear /dev/nst0.
  3. Ejecutamos el comando mt status para verificar que la cinta está en la unidad y que la variable TAPE está configurada.
  4. Cambiamos al directorio raíz de nuestro sistema de archivos con el comando cd /.
  5. Creamos una archivada tar del primer archivo en la cinta (el directorio /lib) por medio del comando: tar zcv lib
  6. Ejecutamos el comando mt status. La salida debería ser algo similar a esto, indicando que la cinta está en el siguiente archivo (archivo 1):
    SCSI 2 tape drive:
    File number=1, block number=0, partition=0.
    Tape block size 0 bytes. Density code 0x13 (DDS (61000 bpi)).
    Soft error count since last status=0
    General status bits on (81010000):
     EOF ONLINE IM_REP_EN
    
  7. Luego creamos una archivada de nuestro directorio /boot con el comando: tar zcv boot
  8. Creamos una archiva da nuestro directorio /dev con el comando: tar zcv dev

En cuanto a la performance, las viejas unidades DDS-2 transmiten unos 0,360MB/s sin compresión, y el doble con compresión 2:1. Esto es unos 1.23GB/h, y tarda unas 3h10m minutos para almacenar los 4GB del casette (sin compresión). Al utilizar compresión, la capacidad se duplica a 8GB, pero se tarda el mismo tiempo en grabar o leer.

Los contenidos de la cinta ahora deberían figurar así:

Figura 3: La cinta contiene tres archivadas, y el cabezal estar al comienzo de una nueva archivada.

Leer desde la cinta

Ahora que tenemos algunos archivos en la cinta, podremos intentar leerlos:
  1. Nos posicionamos al directorio /tmp para evitar cualquier accidente (en caso de que accidentalmente tipeásemos x en vez de t en uno de los pasos que siguen). cd /tmp
  2. Rebobinamos la cinta: mt rewind
  3. Verificamos el primer archivo en la cinta, la archivada de /lib: tar ztv
    Debería aparecer un largo listado de los ficheros en la archivada que están duplicados de nuestra carpeta /lib.
  4. Ejecutamos mt status. Debería devolvernos algo como:
    SCSI 2 tape drive:
    File number=0, block number=4557, partition=0.
    Tape block size 0 bytes. Density code 0x13 (DDS (61000 bpi)).
    Soft error count since last status=0
    General status bits on (1010000):
     ONLINE IM_REP_EN
    
La cinta aún está en la Archivada 0, el primer archivo en la cinta. ¿Cómo sucede esto? La respuesta es que tan pronto como termina su lectura, el comando tar se detiende donde está en la cinta, porque uno podría querer hacer algo loco (como cortar el archivo). El cabezal quedó posicionado al final de la Archivada 0 (notemos el contador de número de bloque, en la devolución del comando mt status).

Figura 4: El cabezal está al final de la Archivada 0.

La consecuencia mas importante de esta nueva posición de la cinta es que otro comando tar ztv no accedería al archivo siguiente en la cinta, porque la cabeza no está al comienzo del nuevo archivo, sino que se encuentra al comienzo de la marca de archivo. Para avanzar la cinta hacia adelante hasta el siguiente archivo (que en este caso, sería la Archivada 1 formada por el directorio /boot), usamos el siguiente comando:

mt fsf

Este comando mueve la cinta de manera que el cabezal quede al final de la marca de archivo (al comienzo de la archivada 1 /boot), como se muestra en la figura:

Figura 5: El cabezal está al comienzo de la archivada 1.

13.6.4 Extraer Archivadas

Para extraer archivadas desde la cinta, necesitamos reemplazar la variable t que aparecía en los comandos de la sección anterior, con la variable xp, de modo que queden así:

tar zxpv

Como es usual, debemos revisar bien nuestro directorio de trabajo antes de extraer cualquier archivo. Os recomiendo siempre utilizar el directorio /tmp para estos menesteres, pues en cualquier situación podremos reever qué leímos en tal directorio... Hombre precavido vale por dos.

Avanzando la cinta y haciendo respaldos

Para avanzar la cinta hasta la siguiente archivada ingresamos:

mt fsf

También existe un comando para rebobinar la cinta:

mt bsf

Sin embargo, es importante comprender que este comando rebobina la cinta hasta el final del archivo previo, o sea, hasta el comienzo de la siguiente marca de archivo que vea el cabezal.

Digamos que estamos al comienzo del archivo 1, como se muestra en la figura 4. Al ejecutar mt bsf, quedará como se muestra en la figura 5. Si en tal caso ejecutamos un mt status, el número de archivo debería ser 0 con un número de bloque de -1 (pues el controlador no puede calcular el largo del archivo por si mismo). En general, para volver al comienzo del archivo previo cuando estamos al comienzo de un archivo, debemos rebobinar dos veces y luego avanzar una vez el cabezal. Gracias a que la mayoría de los comandos de movimento de cinta mt soportan un conteo opcional (por ejemplo, un 2 en este caso), podremos ejecutar la siguiente secuencia:

mt bsf 2
mt fsf

Aún así debemos tomar otra consideración, porque la cinta en este ejemplo ya estaba al comienzo del archivo 1. Al correr mt bsf 2, se intentará rebobinar la cinta dos marcas de archivos. Como el principio de la cinta no tiene una marca de archivo, chocará con el inicio de la misma, produciendo un Error de entrada/salida (I/O error). El comando mt fsf subsiguiente adelantará nuevamente la cinta al archivo 1, esquivando el archivo 0. Si queremos volver al Archivo 0, debemos siempre rebobinar la cinta, con el comando:

mt rewind

Algunas modelos de unidades de cinta son capaces de detectar cuál es la última archivada con datos. En tal caso podríamos avanzar rápidamente la cinta hasta que el cabezal esté en dicho lugar, ingresando:

mt -f /dev/nst0 eod

En nuestro caso, el cabezal volvería a quedar como el la Figura 3...

En resúmen, debemos prestar gran atención a la posición del cabezal con respecto a las marcas de archivo, y elegir el comando apropiado. Si todo esto parece ridículo, probablemente podremos utilizar el direccionador a un n específico, que siempre funcionará (aunque será más lento).

mt rewind
mt fsf archivo

Para expulsar la cinta:

mt offline

Variables del comando mt y estatus

En resúmen, estas son las variables más comunes del mt:
  • mt status Nos devuelve el reporte de estado.
  • mt fsf n Avanza hasta el comeinzo del primer bloque del archivo siguiente. El parámetro n es opcional, si está especificado avanza n archivadas en lugar de solo una.
  • mt bsf n Rebobina hasta el final del archivo previo. La n es un contador opcional de archivos.
  • mt rewind Rebobina la cinta.
  • mt offline Rebobina la cinta, y luego la prepara para su remoción. En algunas unidades de cinta, la unidad de cinta eyecta el cartucho. En otros, destraba la unidad de modo que la podemos sacar a mano.
  • mt retension Avanza la cinta hasta el final y luego la rebobina. Esto a veces ayuda con las cintas que tienen problemas de lectura.
  • mt erase Borra toda la cintas. Usualmente esto lleva un largo tiempo.
Hay una gran variedad de variables para el comando, listados en su página de manual, pero normalmente no son muy útiles a no ser que intentemos extraer bloques desde el centro de una archivada o que busquemos opciones específicas para una unidad de cintas SCSI.

Al ejecutar mt status se nos devolverá una serie de códigos de bit de estado (como el código BOT explicado anteriormente. Aquí hay algunos de ellos:
  • ONLINE La unidad está lista, con una cinta cargada.
  • DR_OPEN La unidad está vacía (posiblemente con la puerta abierta).
  • BOT La posición del cabezal es al principio de la cinta.
  • EOF La posición del cabezal es la de comienzo de un archivo (al final de la marca de archivo).. Este es un código algo confuso, porque se puede confundir con el de "final de archivo".
  • EOT El cabezal está al final de la cinta.
  • EOD El cabezal está al final de la parte grabada de la cinta.
  • WR_PROT La cinta actual está protegida contra escritura.

Comandos para respaldar a cinta


El siguiente es un resumen de los comandos necesarios para controlar una unidad de cinta con el propósito de respaldar/restaurar datos.

En estos ejemplos se utiliza siempre la variable -f /dev/st0 para aclararle al sistema que en los ejemplos, tal dispositivo es nuestra unidad de cinta. Naturalmente debemos cambiarlo si nuestro dispositivo es distinto. Asimismo, si ya configuramos la variable de entorno TAPE como se indicó en el paso anterior, podremos omitir "-f /dev/st0" del comando, o lo que corresponda a nuestro dispositivo.


Para rebobinar la cinta:

mt -f /dev/st0 rewind 

Para respadar en la cinta los directorios /www del servidor web Apache y /home con el comando tar (z: usa compresión Gzip):

tar -czf /dev/st0 /www /home

Para saber en qué bloque estamos con el comando mt:

mt -f /dev/st0 tell

Para mostrar una lista de archivos en la unidad de cinta:

tar -tzf /dev/st0

Para restaurar el directorio /www desde la cinta:

cd /
mt -f /dev/st0 rewind
tar -xzf /dev/st0 www

Para descargar el cartucho de cinta:

mt -f /dev/st0 offline

Para mostrar la información de status de la unidad de cinta:

mt -f /dev/st0 status

Para borrar el cartucho de cinta:

mt -f /dev/st0 erase

Podremos avanzar o rebobinar la cinta con el comando mt:

a) ir al final de los datos:
mt -f /dev/st0 eod

b) Ir a la grabación previa:
mt -f /dev/nst0 bsfm 1

c) Avanzar la cinta:
mt -f /dev/nst0 fsf 1


Ejemplo de Respaldos en múltiples cartuchos de cinta en Linux

Para respaldar a múltiples cintas empleamos el siguiente comando (por ejemplo, para respaldar nuestra carpeta de usuario /home):

tar -clpMzvf /dev/st0 /home 

Para comparar el respaldo de cintas, ingresamos:

tar -dlpMzvf /dev/st0 /home

Para restaurar los datos desde la cinta, en caso de pérdida de datos o fallo de disco duro:

tar -xlpMzvf /dev/st0 /home

...donde,

d: encuentra diferencias entre la archivada y el sistema de archivos.
x: extra los ficheros desde una archivada
l: lista los contenidos de un archivo
p: ignora umask cuando extrae los archivos
M: Crea/lista/extrae un archivo multivolúmen (múltiples cintas).
z: comprime el respaldo enpleando gzip
v: Lista detalladamente los archivos siendo comprimidos,
f /dev/st0 es el dispositivo de cinta
/home: Respalda nuestra carpeta de usuario (puede ser cualquier otra).

Acceso directo a los Archivos de la cinta

tar no es el único comando capaz de escribir archivadas a la cinta. Muchas veces podremos no saber qué hay en la cinta, e incluso si sabemos, podríamos querer copiar un archivo desde la cinta al sistema de archivos local para un análisis más profundo (y mas simple). Para ello podremos emplear al viejo y peludo dd, por ejemplo:

dd if=/dev/nst0 of=archivo_de_salida

Esto a veces podría fallar: podríamos recibir un error de E/S debido a que no especificamos el tamaño de bloque correcto. ¿Por qué? La respuesta requiere ciertas explicaciones. Cuando trabajamos con cintas, a menudo necesitaremos conocer el tamaño de bloque de la cinta. Las aplicaciones tienden a escribir en la cinta en un tamaño de bloque predeterminado, y muchas unidades de cinta no permitirán la lectura desde la cinta a no ser que especificamos correctamente el tamaño de bloque. Esto casi nunca es un problema, porque normalmente escribimos y leemos con el mismo programa. Sin embargo, si queremos usar dd para obtener acceso directo a los archivos de la cinta, podríamos necesitar especificar el tamaño de bloque manualmente.

El programa que escribe el archivo en la cinta normalmente es quien determina el tamaño de bloque a utilizar. En el caso del programa tar, el tamaño de bloque por defecto es de 10KB (especificado en dd como 10k). Como en el programa dd el tamaño bloque por defecto es diferente (usa normalmente 512 bytes), habremos de alterar su parámetro bs ("tamaño de bloque", block size) para que se adapte al contenido hecho con tar en la cinta. Para ello usaríamos:
dd bs=10k if=/dev/nst0 of=archivo_de_salida

Os listaré los tamaño de bloques comunes para diferentes programas utilizados para el copiado o volcado de datos:
Archivador
Tamaño de bloque
Parámetro bs
tar
10KB (20 x 512 bytes)
bs=10k
dd
512 bytes
bs=512
cpio
512 bytes
bs=512
dump
10KB (20 x 512 bytes)
bs=10k
Amanda
32KB
bs=32k

Nota:
A diferencia de tar, dd avanza el cabezal hasta el siguiente archivo en la cinta, en vez de sólo moverlo hasta la marca del archivo.



Las cintas LTO son mucho más simples de operar, pues incluyen un Sistema de Archivos para Cintas Lineales (LTFS) lo que las hace más cómodas para buscar archivos específicos. Continen una tabla de alocación, y por lo tanto operan como cualquier partición montada en nuestro sistema de archivos.

lunes, 19 de febrero de 2018

¿Cómo instalo ZFS en Ubuntu?


Reunido con las autoridades de la Fuerza Aérea Argentina y con la presencia del Profesor Kurt Tank, Juan Perón explica cómo montar un sistema de almacenamiento ZFS de alta seguridad y performance en Ubuntu.

Vean señores, nuestro sistema informático tiene por ventaja la característica de ser absolutamente escalable, y una de las características principales del sistema GNU con Linux es la estabilidad que le provee a los datos.

Esto significa que el sistema de archivos puede ampliarse con poca dificultad, siempre que nuestro hardware lo permita.

Antiguamente, esto se aplicaba el lento pero confiable registro en cinta magnética, en boga en los datacenters mas paquetes. Para tales menesteres, Linux reserva el potente comando tar para secuenciar los datos en la cinta, e incluso es capaz de manejar directamente las unidades de cinta fácilmente a través del comando mt (magnetic tape). Incluso actualmente se pueden usar unidades de cinta cassette internas, como la Quantum de 160/320GB munida de interfaz SATA.

La cinta es perfecta y de bajo costo para el mantenimiento de datos "en frío". Esto significan los datos imporantes de todo trabajo, que debemos resguardar en una o más copias. En ella ingresamos todos los datos y los planos de la Fábrica Militar de Aviones.

Ahora bien, estos técnicos alemanes nos han traído nueva tecnología gracias al uso de varios discos rígidos en cada sistema.

La alta capacidad actual y la reducción de costos de los discos rígidos han supuesto la popularidad de los sistemas de almacenamiento en red, los cuales se verifican superiores a la cinta en el almacenamiento "en caliente". Disponiendo  de los datos a través de una red local, podemos trabajar todos y compartir estos datos de una manera totalmente fluida.

Lo mejor es que podremos armar un dispositivo de estos en nuestra propia PC, o buscar un equipo ya hecho especialmente pensado para estos menesteres, que vaya desde las soluciones hogareñas pequeñas hasta un equipo con varias decenas de discos.

Pero no todo es color de rosas. Para ser efectivos, debemos disponer no sólo de un equipo, sino de un esquema de trabajo. Y en este caso debemos referirnos a la central importancia que cobra el esquema de almacenamiento de archivos.

Vean señores, Micro$oft ha intentado propender su sistema FAT32, y ahora el NTFS. Tales sistemas no son muy buenos que digamos y tienen el inconveniente de fragmentar los datos a lo bestia. Naturalmente que Linux cuenta con esquemas superiores como el Extendido, en sus varias versiones. Desde hace un tiempo que el Ext4 opera entonces como un excelente modelo de almacenamiento de archivos multiusuario y multiplataforma. Yo lo uso y lo recomiendo muy ampliamente entre los sistemas GNU.

No obstante, tenemos desde hace algunos años un nuevo sistema de archivos, el ZFS. Se trata de un sistema de archivos combinado y un administrador de volumen lógico desarrollado por Oracle. Entre sus características, ZFS incluye protección contra la corrupción de los datos tan habitual en los gobiernos de la derecha, la alta capacidad de almacenamiento (hasta 256 Zettabytes), instantáneas de volumen y clonado mientras escribe, compresión eficiente sin pérdida, chequeo continuo de integridad, etc.


El nuevo estándar cobra vital importancia si manejamos grandes cantidades de  datos, o proveemos un sistema de archivos de respaldo para tareas de virtualización desde discos rígidos, ZFS es una muy buena opción. En nuestro caso lo emplearemos como medio para almacenar gran contenido de video de alta definición para un equipo de archivo y edición de video digital.

Para ello abrimos una terminal con Ctrl+Alt+T e ingresamos los siguientes comandos de organización:

sudo apt update
sudo apt install zfsutils-linux

Luego de ello, debemos revisar si ZFS fue instalado correctamente, para
ello podremos ejecutar:

whereis zfs

Esto debería devolvernos algo como lo siguiente:




A continuación, debemos elegir los discos que queremos proporcionar para para hacer la cola de datos. Revisamos nuestros discos instalados con:

sudo fdisk -l

Anotamos cuidadosamente los nombre de dispositivos de las unidades que deseamos usar.

Estas son las dos unidades que queremos agregar al sistema de almacenamiento, al cual llamaremos "pozo" (pool en inglés).:












Acto seguido, procederemos a crear el pozo.

Hay dos tipos de pozos que podemos crear. Un pozo simple, donde
una copia de los datos se almacena a en todas las unidades incluidas en el pozo, o un pozo espejado, donde una única copia completa de los datos se almacena en todas las unidades que componen el pozo.

Para crear un pozo simple, ejecutamos

sudo zpool create new-pool /dev/sdb /dev/sdc

Para crear un pozo espejado, ejecutamos:

sudo zpool create new-pool mirror /dev/sdb /dev/sdc

En ambos ejemplos, "new-pool" es el nombre del pozo. En vuestro caso podrán utilizar un nombre mas descriptivo como "pozo-video" o lo que deseen.

En ocasiones, podría aparecer un error como el siguiente:







Agregamos "-f" al final del comando de creación zpool para corregirlo.

El pozo de almacenamiento que hemos creado se montará en /new-pool. Si lo deseamos más adelante, podríamos seleccionar un punto de montaje diferente usando el modificador -m.

sudo zpool create -m /usr/share/pozo new-pool mirror /dev/sdb /dev/sdc

El pozo montada aparecerá en Ubuntu como si fuese cualquier otra parte
del sistema de archivos (en este caso, localizada dentro de /usr/share/pozo).

Podremos revisar el estado del pozo de almacenaimiento de formato ZFS con:

sudo zpool status

Este comando nos devolverá el estado de nuestro pozo:











Si quisiéramos eliminar el pozo ZFS, podremos removerlo. Debemos tener cuidado ya que esto también destruirá cualquier archivo que hayamos creado dentro del pozo de almacenamiento ZFS:

sudo zpool destroy new-pool

Idealmente, debemos confirmar que el pozo ha sido removida de nuestro sistema de archivos pidiendo nuevamente el estado de cola con:

sudo zpool status

También encontraremos información detallada sobre el manejo del sistema de archivos ZFS aquí.

domingo, 18 de febrero de 2018

¿Cómo sintonizo TV digital terrestre fácilmente en Ubuntu?


El 17 de Mayo de 1951, durante la ejecución del Decreto 9695 que daba creación al Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET), Juan Perón expuso en un discurso las altas necesidades que tenía el Estado, y explicó a los científicos cómo usar un script para facilitar la sintonía de la TV Digital Terrestre en Ubuntu.

(...)
Los desarrollos científicos que ha posibilitado nuestro Movimiento han sido dirigidos desde sus comienzos a la utilidad de la Nación toda, y sus habitantes. La petroquímica y las posibilidades que nos dan los altos estudios sobre física y energía atómica (la cual ya hemos emprendido) nos configuran en un camino que hemos de seguir por el bien de la República.

Este Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET) fue planteado con ese alto objetivo: que nuestros científicos investiguen bajo auspicio de un Estado fuerte y redistribuidor. Cada uno ha de recibir los beneficios del desarrollo, en este país en lo que está todo por acerse pero en el que la materia gris - como la verde - abundan.

Los ejemplos que lo justifican son múltiples. Vean señores, ver la TV Digital Terrestre es un derecho y una obligación que todo buen patriota ha de tener. Los contenidos son distribuidos gratuitamente en alta definición y con sonido digitalizado, bajo el estandar ISDB-T. En nuestro Movimiento tenemos una máxima que reza "todo lo que es de aire, debe poder recibirse en un sistema GNU con Linux a través de software libre".

Esto ha hecho que nuestro movimiento se torne en uno de gran apreciación, no sólo científica, sino a través de los usuarios comunes que son el verdadero consumo.

Lamentablemente, estas tareas de sintonizar el espectro radioeléctrico - el llamado "aire" - ciertamente requieren operaciones de configuración previa que requieren un buen conocimiento técnico, y si bien ya me he explayado en ello, dificultan una tarea que debería ser banal.

Ante tal necesidad se hace patente el derecho de desarrollar un software libre que le de solución. Ello es lo que se ha propuesto el compañero debianero, de rama popular del gentooísmo católico, Facundo Sánchez. Ha emprendido la creación de un guión de programación que simplifica la preparación de la TDT. Para aplicarlo, debemos hacer lo procedente:

En primer lugar, abrimos una terminal con Ctrl+Alt+T e ingresamos:

sudo apt update
sudo apt install vlc dvb-apps nano
Esto instalará los programas requeridos para operar la TDT.

nano tdt.sh

Se abrirá el editor GNU Nano con un archivo en blanco. Al mismo le podremos pegar el siguiente código fuente:

# /bin/bash
# ver 201802180527
# Se ruega pasar primero por la direccion https://ubuntuperonista.blogspot.com.ar/2015/08/el-justicialismo-ha-desarrollado.html
# facundo.areo@gmail.com
# Instrucciones,guardar este archivo como TDT.sh
# Licencia GPLV3 😊

touch .frec_canales02.conf
echo "
# Canales UHF del 14 to 69 en el sistema argentino de televisión digital terrestre SATVD-T
T 473142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 14
T 479142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 15
T 485142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 16
T 491142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 17
T 497142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 18
T 503142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 19
T 509142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 20
T 515142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 21
T 521142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 22
T 527142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 23
T 533142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 24
T 539142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 25
T 545142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 26
T 551142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 27
T 557142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 28
T 563142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 29
T 569142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 30
T 575142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 31
T 581142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 32
T 587142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 33
T 593142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 34
T 599142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 35
T 605142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 36
# canal 37 no se usa
T 617142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 38
T 623142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 39
T 629142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 40
T 635142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 41
T 641142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 42
T 647142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 43
T 653142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 44
T 659142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 45
T 665142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 46
T 671142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 47
T 677142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 48
T 683142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 49
T 689142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 50
T 695142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 51
T 701142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 52
T 707142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 53
T 713142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 54
T 719142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 55
T 725142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 56
T 731142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 57
T 737142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 58
T 743142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 59
T 749142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 60
T 755142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 61
T 761142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 62
T 767142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 63
T 773142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 64
T 779142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 65
T 785142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 66
T 791142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 67
T 797142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 68
T 803142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 69
" > frec_canales02.conf

opt1="Ver TDT"
opt2="Buscar canales"
opt3="Referencias"
#opt4="option 4"
#opt5="option 5"
#opt6="option 6"
int=`zenity --height=275 --list --radiolist --text 'Seleccione la accion:' --column 'Select...' --column 'Interface Name' FALSE "$opt1" FALSE "$opt2" FALSE "$opt3"`
# FALSE "$opt4" FALSE "$opt5" FALSE "$opt6"`
echo "La opcion seleccionada es: "$int

case $int in
      "Ver TDT")
         echo "Ver TDT1"
            vlc .canalesd02.conf
            exit
      ;;
      "Buscar canales")
             scan frec_canales02.conf > .canalesd02.conf
            exit
      ;;
      "Referencias")
              echo "Ubuntu Peronista"
            echo " https://ubuntuperonista.blogspot.com.ar/2015/08/el-justicialismo-ha-desarrollado.html"
            exit
      ;;
      *)
         echo "desconozco esa opción"
            exit
      ;;
  esac
echo "Un fuerte abrazo Peronista !!!"

#https://ubuntuperonista.blogspot.com.ar/2015/08/el-justicialismo-ha-desarrollado.html
#https://ubuntuperonista.blogspot.com.ar/2012/10/mygicaS870ubuntu1204precisetvdigitalISDBT.html
#https://ubuntuforums.org/showthread.php?t=1999502



Una vez ingresado, lo grabamos con Ctrl+o y salimos del editor con Ctrl+x. Luego le asignamos permisos de ejecución con:

chmod +x tdt

...Y lo ejecutamos con:

./tdt.sh

El programa nos presentará en nuestra pantalla el siguiente cuadro de diálogo.
Lo primero que debemos hacer es memorizar los canales, lo cual nos será facililtado por el script. Simplemente tildamos "Buscar canales" y presionamos el botón Aceptar. A continuación y durante un par de minutos, nuestro sistema hará uso de la funcionalidad de búsqueda de canales para ejercer la sintonía. Si se encuentran canales, en nuestra terminal debería aparecer información similar a la siguiente:
Una vez finalizada la búsqueda del espacio radioeléctrico, nos devolverá al prompt de sistema. Para ver la televisión digital terrestre debemos ingresar nuevamente al programa, pero en el cuadro de diálogo debemos escoger "Ver TDT".

Ahí se lanzará el reproductor VLC recibiendo el stream de Televisión Digital Terrestre a través de nuestro sintonizador. Para cambiar los canales podremos avanzar al siguiente stream programado, o utilizar para ello la lista de reproducción (podremos abrirla con Ctrl+L, o bien haciendo clic sobre la imágen de video con el botón derecho del ratón, y elegimos "Lista de Reproducción".

sábado, 3 de febrero de 2018

¿Cómo instalo M.A.R.S. Shooter en Ubuntu?

En el imprescindible La hora de los Pueblos, Juan Perón expone la decadencia de los imperios y el rol eterno de la doctrina Justicialista en la lucha por la Liberación, a la vez que enseña a instalar el ridículamente vistoso juego de tiros espaciales M.A.R.S. en Ubuntu.

(...)
Los imperialismos tienen un destino al que, por determinismo histórico, no pueden escapar como lo viene confirmando la historia a lo largo de todos los tiempos. No valen ni la riqueza ni la fuerza para sostenerlos: ni Cartago sobrevivió a Escipión El Africano, ni Roma, el imperio más fuerte que ha producido la humanidad, pudo hacerlo ante su propia decadencia: es que a los
imperialismos nadie los tumba de afuera, se pudren por dentro.
Si Roma, en la época de la carreta, tardó más de un siglo en derrumbarse y desaparecer, los imperialismos modernos, en los tiempos del cohete, están ante un proceso más peligrosamente rápido.


Por eso, hoy se lucha por la liberación tanto al Este como al Oeste de la famosa cortina, y todos los que se empeñan en la liberación se sienten compañeros de lucha, poco importa la ideología que los distingue, porque el tiempo y los sucesos van superando todas las ideologías: ¿acaso los Estados Unidas y la URSS hicieron cuestión ideológica en 1938 cuando se coligaron para aniquilar a Alemania y a Italia, o cuando se repartieron el dominio y la explotación del mundo al terminar la Segunda Guerra Mundial?

A nosotros los peronistas, es difícil que la oligarquía, los gorilas o los políticos nos hagan entrar con el cuento de esa lucha, porque hace veinte años que los venimos viendo aliados con ellos, desde la "Unión Democrática" de 1945 hasta la "Revolución Gorila" de 1955.

El problema que encara el peronismo es otro muy distinto que el de empeñarse en una pelea con los molinos de viento, cuando contempla su Patria ocupada, su Pueblo miserable y hambriento, sus riquezas entregadas a los más oscuros intereses, sus hermanos sin trabajo y su país sumido en una inercia suicida. Para nosotros organizar es adoctrinar, porque la doctrina es el único caudillo que resiste a la acción destructora del tiempo, y nosotros trabajamos para el porvenir.

La fuerza del Peronismo radica en gran parte en que constituye un gran movimiento nacional y no un partido político. Lo moderno, que obedece a las nuevas formas impuestas por la evolución y las necesidades actuales, es una idea transformada en doctrina y flecha ideología, que luego el Pueblo impregna de una mística con que el hombre suele rodear a todo lo que ama. Ese es el único caudillo que puede vencer al tiempo a lo largo de las generaciones.


Por eso el Peronismo ha podido resistir a la violencia gorila, como a la insidiosa "integración" que intentó el gobierno que le sucedió y está resistiendo con éxito a todos los esfuerzos de disociación de la actual campaña que intenta el "Gobierno". Nuestros enemigos, que vienen del sistema demoliberal, traen con ellos, de una época política que ha sido superada por el tiempo, los viejos esquemas de una escuela caduca y por eso se sienten superados por el peronismo que representa una etapa nueva: la de los grandes movimientos nacionales que estamos viendo surgir en todas partes donde existe progreso y evolución. Lo que en realidad existe en el panorama político argentino es un atraso evidente con referencia a las formas que vienen caracterizando al mundo moderno y futuro.

Es por ello que podremos presentar nuestra lucha futura por la liberación en el espacio 2D a través de M.A.R.S., un juego espacial de disparos en tercera persona con efectos visuales coloridos y sorprendentes, así como física atractiva. Los jugadores deben combatirse unos a otros u operar contra enemigos controlados por la computadora a través de las rutinas de inteligencia artificial. Así mismo, hay una gran variedad de modos excitantes de juego.



Su visual es simple pero actualizada, y sin duda su modalidad se inspira en el primogénito de los juegos de video, así como en el Bitfighter, sobre el cual ya me he extendido.

Para ello abrimos una Terminal con Ctrl+Alt+T e ingresamos:

sudo snap install marsshooter

Tras ingresar nuestra contraseña de Conductor, el programa se instalará en breves segundos.

Para ejecutarlo, vamos a Aplicaciones / Juegos / M.A.R.S.

Lo primero será configurar el idioma, por lo que elegimos "español".
Luego podremos iniciar un juego solo (jugando contra la computadora), o podremos jugar a través de una red LAN o un servidor público en internet.
La historia del juego nos lleva a un hipotético año 3547 donde las civilizaciones se han establecido en sus respectivos planetas, y luchan por la hegemonía espacial en una gran guerra de naves y tiros. Nuestro objetivo es proteger nuestro planeta contra los enemigos que vienen a atacarlo. 

Una vez definido el tipo y modalidad de juego, podremos manejar nuestra nave con A, W, y D, y disparar con Ctrl. En nuestro espacio 2D, cada planeta y cuerpo celeste ofrece atracción gravitatoria, la cual puede influir en nuestro disparos y misiles.
Sin duda entre las buenas características de este juego se encuentra la banda de sonido, proporcionada por la banda de metal sinfónico húngaro Obsidian Shell, lo que lo torna en un bizarro y colorido robotech.