15 – copiando bloques

Bienvenidos al episodio 15 de deployandome, el podcast de tecnología para sysadmins y devops. Soy Rodolfo Pilas y estoy grabando el 8 de junio de 2017.

En los capítulos anteriores veníamos conversando sobre `Vagrant`. En ellos les comentaba es una herramienta que ha cambiado mi forma de trabajar en el día a día, pues me permite probar nuevas herramientas, configuraciones y opciones de instalación. A Vagrant lo uso a nivel profesional, en mi trabajo diario, y en cursos en la Universidad.

Si bien tenía la intención continuar profundizar algunos otros puntos sobre Vagrant, creo que es momento de cambiar el tema. Pero, si te has entusiasmado con Vagrant tienes muchas fuentes y documentación on-line donde buscar guías y más información.

En esta edición abordaremos otro tema, pero esta vez, no será un tema digamos “nuevo”, sino que empezaré con una vieja y tradicional herramienta del proyecto GNU y algunas otras cosa ya más modernas.

¿para qué?

pues para copiar bloques. Así que nos metemos en el tema de storage, una vez más.

Sin más presentaciones, aquí vamos:

¿conocen dd ?

Les confieso que yo pensaba que quería decir ‘disk dupplicator’ y, según con que experiencia y cuidado la utilziaras también podía tomar su nombre de ‘disk destroy’ … pero no, investigando para este podcast me enteré que su nombre evoca el concepto de "Data Definition" del Lenguaje de Control de Tareas de los famosos y antiguos Sistemas/360 de IBM.

Bueno, este dd que ha llegado hasta nuestros días y que está presente en todos los sistemas Linux puede duplicar datos a partir o hacia ficheros, dispositivos, particiones y volúmenes. Su función es leer bloques y escribir bloques.

Algunas de sus funciones más utilizadas suelen ser

  • Crear una imagen ISO a partir de un CD, un DVD o un Blu-ray
  • Recuperar un disco duro o una tarjeta SD a partir de una imagen en el disco
  • Clonar una partición en otra
  • Clonar un disco en otro disco.

En mi blog pilas.guru he abordado un par de veces los usos que hago de dd:

  • En un artículo de 2004 titulado “Respaldando particiones enteras del disco” contaba cómo hacía para copiaba particiones del disco para evitar perder los datos y luego las volvía a recuperar.
  • En otro artículo del 2015 titulado “Crear archivos grandes” reseñe algunas herramientas para estas tareas, entre ellas el dd.

En nuestros Linux dd es parte de los GNU coreutils.

CloneZilla es una herramienta para clonarme discos, obtener imágenes y recuperar discos ante desastres.

CloneZilla es un software copia discos que no están en uso, es decir requiere arrancar el computador y se presenta en formato de distribución de GNU/Linux que se llama Clonezilla Live.

La copia se puede guardar en un dispositivo de storage local, en un servidor que se accede por SSH o en un recurso compartido por Samba o NFS.

La principal ventaja de Clonezilla sobre dd es que solamente guardará y recuperará los bloques que tienen datos. A ver si explico esta ventaja, dd clona un disco bloque a bloque, sin importar si está en uso o no; por ejemplo, un disco de 512G ocupará un archivo de 512G al copiarlo con dd. Pero si utilizo Clonezilla solamente los bloques en uso son copiados y los bloques con espacio libre, no son copiados.

Clonezilla también dispone de una versión llamada Clonezilla Server que permite alojar las imágenes y recuperar en varios equipos a la vez (según la documentación hasta 40 equipos a la vez). Muy útil para instalaciones masivas.

Clonezilla es un software libre licenciado con GPLv2 y está diseñado por Steven Shaiu y desarrollado por el NCHC Labs en Taiwán.

El último software para copiar bloques del que quiero hablar es ddrescue que es una herramienta para recuperación de datos.

Al igual que dd copia datos de un archivo o de un dispositivo de bloques en otro, pero en vez de abortar ante un error de lectura, como hace dd, tratará de recuperar los errores y tener una copia coherente y usable.

  • El uso principal de ddrescue es recuperar datos de esos discos duros que han tenido problemas graves.
  • También puede ser utilizado para recuperar respaldos dañados leyendo. En esos casos ddrescue puede leer cada uno de los respaldos y guardarlos en el mismo destino, completando los bloques dañados de un respaldo con la información del siguiente.
  • ddrescue también puede ser utilizado para “llenar” de datos partes del archivo de destino, por ejemplo para limpiar datos, marcar áreas dañadas o intentar reparar sectores dañados.

Corresponde destacar que ddrescue no es un derivado del comando dd, ni tiene relación con él. Es también una herramienta de software libre del proyecto GNU escrita en C++ y su primera versión es del 2004.

Para mucho de este podcast me he basado en wikipedia, que fue la puerta de entrada para avanzar en encontrar información de cada comando.

Soy Rodolfo Pilas, en twitter me siguen por @pilasguru y les dejo un saludo a todos, confiando en que este podcast les haya aportado para mejorar y, como siempre, espero sus inquietudes y sugerencias comentando en deployando.me

Hasta la próxima edición.

Referencias: