19 julio 2010

Buenas prácticas garantizando la disponibilidad de un sistema

Una de las características más importantes a garantizar en un sistema es su disponibilidad. En caso de que tengamos un fallo (hardware, software, involuntario o premeditado por otras partes) que inutilice parte o la totalidad de los datos que se encuentran en el sistema, deberemos disponer de mecanismos que nos permitan restaurar el servicio lo antes y mejor posible.

Creo que en SbD, no hemos tocado de una forma frontal y directa, una de las prácticas de mantenimiento más importantes que se deben llevar a cabo como parte de la vida de un sistema.

Por ello me gustaría dar ciertas pautas sobre qué puede hacer por nosotros una buena política de backups:

  • RAID: Desde el punto de vista de los discos duros, el RAID 1 es la disposición en la que más espacio de almacenamiento se desperdicia, pero también es el que mayor disponibilidad ofrece. Si alguno de los dos discos del RAID se muere, el otro tiene toda la información actualizada hasta el momento final. Otra alternativa comúnmente utilizada y bastante eficiente es RAID 5.
  • Redundancia: El servicio ofrecido en sí debe estar ofrecido por dos o varios nodos de cada dispositivo en lo que se conoce como un clúster. De esta manera, si un nodo de cualquier parte de un sistema deja de estar operativo, el/los otro/s siguen haciendo la misma función. Asimismo, es una buena medida, redundar el propio servicio en sí en otra ubicación geográfica diferente para evitar catástrofes (que aunque poco probables, ocurren) en las que un edificio entero que alberga uno o varios CPDs, arden o se destruyen, por algún tipo de atentado terrorista por ejemplo.
  • Copia fría: Nada más instalar el sistema completamente funcional, afinado, optimizado, parcheado y securizado, es imprescindible hacer lo que se llama una copia fría de la instalación. Este mismo tipo de copia es conveniente hacerla con cierta frecuencia para poder volver a un punto de buen funcionamiento conocido, en caso que suceda alguna catástrofe. Al menos sabes que "hasta aquí" funcionaba bien y siempre puedes partir de aquí si toca hacer una restauración. Las copias frías se llaman así porque se hacen sin estar utilizándose ninguno de los datos de los discos, es decir no hay ningún fichero en uso. La mejor forma es hacerlo arrancando con otro sistema operativo Live (ya sea en un CD o en un USB) y copiar las particiones de los discos de forma completa tal cual están, sin ni siquiera acceder a los ficheros en sí. Suelo utilizar una distribución Linux basada en Gentoo llamada "System Rescue CD" que incorpora una utilidad llamada "Partimage". Con ésta puedes seleccionar las diferentes particiones del disco que quieres clonar. Aunque se puede comunicar en modo cliente-servidor con un servicio Partimage instalado en otra máquina, yo suelo operar de otra manera. Arranco otra máquina de la red en la que comparto por Samba o por NFS algún recurso. Previamente a ejecutar Partimage, montamos ese recurso de red en un punto de montaje en el /tmp virtual del sistema arrancado. Luego a Partimage le digo que la copia de cada partición me la deje en /tmp/remote por ejemplo. Me ha tocado tener que restaurar en más de una ocasión desde ese backup y el resultado es excelente, por lo que la herramienta es altamente recomendable.
  • Copia caliente: Consiste en copiar los datos que consideramos críticos de un sistema a otra ubicación. La finalidad es tener una copia más actualizada de los mismos de lo que nos puede dar una copia fría. Lo que se guarda y la frecuencia definida, en este caso, depende mucho de la funcionalidad del sistema en sí, así como de lo cambiante de los datos, por lo que debe ser tenido analizado caso por caso por parte de los responsables de la información a guardar. Para ello se suele utilizar software de backup, comercial o libre, o en algunos casos (me incluyo) mediante scripts hechos a mano que copien en un tar.gz/bz2 o (elige tu algoritmo de compresión favorito) que empaquete los datos. Con cada paquete de datos copiados, es recomendable no dejarlos en la propia máquina, sino enviarlos a otro sitio. En caso de una red casera en la que no se quiera tener varias máquinas encendidas, quizá sí que sea válido copiarlos en un DVD regrabable o en un USB permanentemente conectado, para poder tener una copia de actualizada si fallan los discos, pero en el caso de una empresa, lo mejor es tener centralizadas las copias en otra ubicación.
  • Vaulting: Este tipo de backup consiste en que los datos (en caliente) se van replicando en "casi tiempo real" en otra ubicación. Suele ser costosa en términos del ancho de banda necesitado para llevar los datos de muchas máquinas a otro sitio, pero permite que en caso de hecatombe de la ubicación completa, los últimos datos disponibles se encuentran en otros sitios. Es importante guardar datos de varias "épocas" puesto que si una máquina se ve comprometida o troyanizada y se restituye el último backup existente, se restaura también el troyano en la máquina nuevamente.
  • Time machine: Aunque este concepto lo empecé a conocer como original de Apple, y no como un "estándar de backups", me gustaría explicarlo un poquito. Es un híbrido entre Vaulting y Copia Caliente. La idea es definir un dispositivo (ya sea un disco duro externo o un Time Capsule, a través de red inalámbrica) sobre el que con bastante frecuencia se irán haciendo "copias calientes". No llega a ser Electronic Vaulting en sí, pero es una buena solución para redes "caseras". Para sistemas operativos Linux podemos utilizar TimeVault.

6 comments :

Anónimo dijo...

Time Machine lo mejor ! El que la compu haga copias de seguridad cada X tiempo en un disco duro externo es lo mejor.

Habia un programa que te permitia hacer estas copias de manera "bomba logica" o por eventos:

- Te ve que manejas mucho un documento ( un trabajo ), lo copia por que cree que es importante ( mirando documentos recientes, etc )
- Se conecta alguien a tu PC, hace copias del log nada mas entrar, a ver quien es mas rapido si el atacante o el programa, ya si el atacante ejecuta un script nada mas entrar ... eso es una carrera xD

alvaro dijo...

Con rsync se puede emular el funcionaminto del time machine de apple (http://blog.interlinked.org/tutorials/rsync_time_machine.html), tanto para Linux como Windows, es increible.

Gran sitio, siempre se aprende algo nuevo :)

slds,
Al.

primolarry dijo...

Timevault está muerto, no hay nada nuevo desde 2007. Recomiendo usar backintime, que sí está activo:

https://launchpad.net/backintime

saludos

Román Ramírez dijo...

Windows 7 en las versiones que no son Home, te permite montar raid1, cosa bastante interesante.

Hay una utilidad de Microsoft, synctoy, que te permite sincronizar en plan sencillote y es bastante interesante.

Pero, desde luego, lo ideal es funcionar con un sistema de calidad que incorpore los elementos del artículo de Lorenzo: raid1 + rescue + backup.

Anónimo dijo...

Te recomiendo otro live-cd para las copias frías: http://clonezilla.org/ el cual se basa en varias aplicaciones, entre ellas partimage, y soporta ext4.

@Román Ramírez: no sabía que se podía implementar RAID por software en productos Microsoft. Gracias por el aporte. Por cierto, si te interesa en las distros GNU/Linux está esta podibilidad de RAID y varias más.

Lorenzo Martínez dijo...

@Anónimo1 -> Efectivamente Time Machine me parece de lo mejor. Sinceramente, yo lo utilizo con disco duro externo, por lo que la frecuencia de backup es menor pero bueno,... con Time Capsule tienes que tener aún más tranquilidad si algo pasa en el PC.

@Álvaro -> Hace tiempo hablamos de una solución parecida para sincronizar un directorio en concreto (transferido y almacenado de forma cifrada hasta el destino) aquí: http://www.securitybydefault.com/2008/12/electronic-vaulting-mashup-con-fuse.html

@PrimoLarry -> Gracias por el dato, tiene bastante buena pinta y le echaré un vistazo!

@Román -> La verdad es que como no suelo utilizar Windows como sistema operativo de escritorio (más que para un par de funcionalidades en una máquina virtual) no conocía esta posibilidad. Con Linux hace un montón de años que hice RAID por software con varios discos duros SCSI por aquello de tener un disco duro más grande (era un RAID 0) y la verdad es que el rendimiento no me gustó. El contar con una controladora RAID por hardware hace que merezca la pena.

@Anónimo2 -> ¿me vas a creer que bajé Clonezilla hace tiempo y no llegué a crear el CD porque al final hice funcionar bien SysrescueCD? De todas maneras, muchas gracias por la info. Así nuestros lectores pueden elegir entre otras soluciones.

Gracias por vuestros comentarios!