====== Recuperación de desastres ====== ===== Introducción ===== En el mundo de la tecnología, los desastres pueden ocurrir en cualquier momento, ya sea debido a un fallo en el hardware, un error humano o un ataque cibernético. Cuando se trata de servidores, la recuperación de desastres es crucial para minimizar el tiempo de inactividad y garantizar la continuidad del negocio. En este artículo, exploraremos las diferentes estrategias y técnicas para recuperar un servidor después de un desastre, desde la recuperación de GRUB hasta la reinstalación manual y otras ideas útiles. ===== Generalidades ===== Antes de profundizar en las técnicas de recuperación, es importante entender algunos conceptos básicos. Un desastre en un servidor puede ser causado por una variedad de factores, incluyendo: * Fallos en el hardware, como la falla de un disco duro o una placa base * Errores humanos, como la eliminación accidental de archivos o la configuración incorrecta del sistema * Ataques informáticos, como la infección por malware o la explotación de vulnerabilidades En cualquier caso, la clave para una recuperación exitosa es tener un plan de emergencia y conocer las herramientas y técnicas necesarias para restaurar el sistema a su estado original. Ante un desastre, lo más importante será prepararse para el trabajo, entonces: * Calma: en general la mayoría de los desastres se pueden resolver de una manera u otra, y estar en foco es imprescindible para evitar errores * Pensar: antes de actuar, considerar factores y situaciones, investigar si hay procedimientos, buscar errores y evaluarlos. Imprescindible es evitar tomar acciones impulsivamente * Evaluar: entender la gravedad de la situación: si nadie puede trabajar, o sólo algunas personas; si hay backups actualizados o no; si se muestran errores, de qué tipo, y si se encuentra información al respecto en Internet; así, tomarse un tiempo para revisar lo que está ocurriendo * Actuar: cuando se decida tomar acción, anotar qué se hace y cómo, investigar los errores que se muestren y pensar si cualquier acción puede llegar a empeorar la situación, antes de hacerlo Es imprescindible tener a mano alguna distribución de rescate en pendrive, como [[https://www.system-rescue.org/|System Rescue CD]] o alguna otra. También es útil considerar tener una versión de esa distro más vieja, para el caso de hardware más antiguo. Algunas distribuciones Live también pueden servir en caso de no disponer otra cosa. ===== Recuperación de GRUB ===== GRUB (Grand Unified Bootloader) es el cargador de arranque que permite al sistema operativo iniciarse. Si GRUB se daña o se elimina, el sistema no podrá arrancar. Para recuperar GRUB, se pueden seguir los siguientes pasos: * Arrancar el sistema con un disco de rescate o un USB con un sistema operativo live * Montar la partición raíz del sistema y ejecutar el comando **grub-install** para reinstalar GRUB, por ejemplo: grub-install -root-directory=/mnt/raiz /dev/sda * Verificar que GRUB esté configurado correctamente y que el sistema pueda arrancar sin problemas ==== Bibliografía ==== * https://phoenixnap.com/kb/grub-rescue ===== Jaula chroot ===== Una jaula **chroot** es una herramienta que permite crear un entorno de ejecución aislado para un sistema operativo. Esto puede ser útil para recuperar un sistema que no puede arrancar normalmente. Para crear una jaula chroot, se pueden seguir los siguientes pasos: * Arrancar el sistema con un disco de rescate o un USB con un sistema operativo live Comandos para crear una jaula chroot: mount /dev/sda1 /mnt/raiz mount --bind /dev /mnt/dev mount --bind /dev/pts /mnt/dev/pts mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys Finalmente, ejecutar chroot: chroot /mnt/raiz /bin/bash ===== Chequeo de discos ===== Los discos duros pueden fallar en cualquier momento, por lo que es importante realizar chequeos regulares para detectar problemas potenciales. Para realizar un chequeo de discos, se pueden utilizar herramientas como **fsck** o **chkdsk**. Estas herramientas pueden detectar y reparar errores en el sistema de archivos y en la estructura del disco. ==== Ejemplos ==== Chequeo básico: fsck /dev/sdb1 Forzar el chequeo del FS: fsck -fv /dev/sdb1 ==== Bibliografía ==== * https://phoenixnap.com/kb/fsck-command-linux ===== Copiado de discos dañados ===== Si un disco duro se daña, es importante copiar los datos importantes lo antes posible para evitar la pérdida de información. Para copiar un disco dañado, se pueden utilizar herramientas como **dd** o **ddrescue**. Estas herramientas pueden copiar los datos del disco dañado a un disco nuevo o a un archivo de imagen. ==== Ejemplos ==== Copiar un disco en otro, recuperando bad sectors si es posible: ddrescue -fv /dev/sda /dev/sdc Copiar una imagen de disco completo a un disco físico: ddrescue -fv /mnt/imagenes/imagen.img /dev/sdc ===== Reubicación y cambio de particiones ===== Si un sistema operativo se instala en una partición que se ha vuelto demasiado pequeña, puede ser necesario reubicar el sistema a una partición más grande. Para reubicar un sistema, se pueden seguir los siguientes pasos: * Arrancar el sistema con un disco de rescate o un USB con un sistema operativo live * Utilizar herramientas como **gparted** o **fdisk** para crear una nueva partición y copiar el sistema a la nueva partición * Verificar que el sistema esté configurado correctamente y que pueda arrancar sin problemas ===== RAID por software ===== Las unidades RAID armadas con mdadm son excelentes, tienen una enorme resiliencia a fallas, y permiten hacer magia de manera relativamente fácil. Pero a veces puede ser necesario resolver temas, por ejemplo ante falla de un disco. ==== Bibliografía ==== * https://doc.axrglobal.com/servidores:raid ===== Reinstalación manual ===== En algunos casos, puede ser necesario reinstalar el sistema operativo desde cero. Para reinstalar un sistema manualmente, se pueden seguir los siguientes pasos: * Arrancar el sistema con un disco de rescate o un USB con un sistema operativo live * Utilizar herramientas como **apt** o **yum** para instalar los paquetes necesarios para el sistema * Configurar el sistema y reinstalar las aplicaciones y los datos necesarios ===== Otras ideas para resolver emergencias ===== Además de las técnicas mencionadas anteriormente, hay otras ideas que pueden ser útiles para resolver emergencias en servidores: * Copiado remoto: se puede utilizar herramientas como **rsync** o **scp** para copiar archivos y directorios entre servidores de manera remota. * Uso de máquinas virtuales: se pueden crear máquinas virtuales para probar y depurar sistemas antes de implementarlos en producción. * Uso de sistemas de archivos en red: se pueden utilizar sistemas de archivos en red como **NFS** o **SMB** para compartir archivos y directorios entre servidores. * Uso de herramientas de respaldo: se pueden utilizar herramientas de respaldo como **Bacula** o **BackupPC** para crear copias de seguridad del sistema y restaurarlas en caso de un desastre. ==== Ejemplos ==== Copiado de un disco desde un equipo remoto al disco local: ssh usuario@remoto "dd if=/dev/sda" | dd of=/dev/sdb status=progress Copiado de un disco desde un equipo remoto a una imagen en un directorio local: ssh usuario@remoto "dd if=/dev/sda" | dd of=/mnt/temp/remoto-sda.img status=progress Copiado de un sistema de archivos local a un servidor remoto: rsync -av --progress /mnt/disco/ usuario@remoto:/mnt/backup ==== Bibliografía ==== * https://phoenixnap.com/kb/how-to-rsync-over-ssh ===== Conclusión ===== La recuperación de desastres en servidores requiere un plan de emergencia y conocimientos de las herramientas y técnicas necesarias para restaurar el sistema a su estado original. Desde la recuperación de GRUB hasta la reinstalación manual y otras ideas innovadoras, hay muchas formas de abordar un desastre en un servidor. Es importante estar preparado y tener un plan de emergencia para minimizar el tiempo de inactividad y garantizar la continuidad del negocio.