Cintas de backup y cargadores: mt y mtx

seguridadArco

Tal vez, antes de hablar en recetas anteriores de bacula hubiese sido conveniente hablar sobre el manejo de cintas de backup a pelo. Esto nos puede ser útil en caso de querer almacenar datos en cinta de forma esporádica o para limpieza de las mismas... o simplemente por saber un poco cómo funciona esto de las cintas SCSI.

Cargadores
Primero vamos a hablar un poco de los cargadores de cintas. En el caso de que contemos con una unidad de backup que lleve integrado el cargador (como por ejemplo una HP-DDS4) hemos de saber que controlaremos toda la unidad mediante dos dispositivos lógicos.

Para su funcionamiento en linux debéis saber que se debe activar en la BIOS de la controladora SCSI la posibilidad de contar con dos dispositivos SCSI con el mismo ID. Esto no se soportó correctamente en linux hasta la versión 2.6.18.

Nos referiremos al cargador mediante /dev/sg* y a la cinta cargada con /dev/st* o /dev/nst*. Con una configuración correcta en udev se nos creará /dev/changer como enlace a /dev/sg*. Nosotros vamos a suponer que sólo tenemos un cargador de cintas y una unidad de cinta (todo ello puede o no estar en el mismo dispositivo físico). Por tanto tendremos nuestro cargador en /dev/sg0 y la unidad de cinta será /dev/st0 y /dev/nst0.

El cargador lo usaremos mediante el comando mtx, básicamente las únicas operaciones que necesitamos realizar son:

  • Cargar una cinta del slot n:
    $ mtx -f /dev/sg0 load n
  • Extraer una cinta cargada (descargar):
    $ mtx -f /dev/sg0 unload
  • Extraer el carro de cintas:
    $ mtx -f /dev/sg0 eject

En el ejemplo hemos empleado el usuario root, no es necesario, basta usar un usuario con privilegios de escritura en /dev/sg* (típicamente los pertenecientes al grupo tape).

Cintas
Todos estos comandos, sólo funcionarán si hay una cinta cargada en la unidad (independientemente de que en el carrusel de cintas haya o no, puesto que la unidad NO se autocarga) y afectan únicamente a la cinta cargada (evidentemente).

Habréis observado que para el acceso a la cinta disponemos de dos dispositivos lógicos: /dev/nst0 y /dev/st0. Los dos se usan de igual manera, la diferencia es que después de usar st0 la cinta se rebobinará automáticamente. En cambio, si usamos nst0 la cinta se quedará donde se haya terminado la última operación.

Primero vamos a ver si la unidad de cinta está lista:
$ mt -f /dev/st0 status

Con este comando, además, habremos rebobinado la cinta, ahora podemos guardar nuestro home, por ejemplo:
$ tar cvf /dev/st0 ~/

Como sabréis, tar originalmente se usaba para almacenar y recuperar datos de dispositivos secuenciales (Tape ARchive). Si ahora queremos listar el contenido de la cinta:
$ tar tvf /dev/st0

Recordad que al usar st0 estamos rebobinando siempre la cinta, por eso hemos almacenado nuestro home al principio de la misma y a la hora de listarlo, también estábamos al principio. Para recuperar nuestros archivos:
$ tar xvf /dev/st0

Ahora imaginad que vamos a almacenar nuestro home y el de root:
$ tar cvf /dev/nst0 ~/
$ tar cvf /dev/nst0 /root/

Ahora usamos nst0 para no sobreescribir los archivos. Vamos a rebobinar la cinta del todo:
$ mt -f /dev/st0 rewind

Si ahora sólo queremos recuperar el directorio del root tendremos que recuperar primero nuestro home, pero si no queremos podemos saltárnoslo. Cuando se efectúa una operación de escritura en la cinta, se graba después una marca record. Podemos pasar la cinta hasta el primer record (con lo que nos saltaremos nuestro home):
$ mt -f /dev/nst0 fsf 1

Y ya podemos recuperar el home del root como antes:
$ tar xvf /dev/nst0

Finalmente, si queremos borrar completamente una cinta (escribir ceros en toda ella):
$ mt -f /dev/st0 erase

Esta operación tarda algunas horas, dependiendo del tamaño de las cintas.

Enlaces