Trace: recuperacion_so

Recuperación de S.O. en caso de actualización

En algunas ocasiones realizar al realizar una actualización, se necesita crear un respaldo del sistema operativo, en el caso de sistemas virtualizados es un usual hacer un snapshot, pero debido a gran cantidad de información que la aplicación almacena, limitaciones físicas como discos o la red, se requiere un downtime del servicio considerable, este documento pretende proponer algunos escenarios para reducir ese tiempo.

Escenarios

Se asume que las instalaciones del sistema operativo están configurados similar a los siguientes factores:

  • Configuración de particionamiento con LVM
  • El sistema operativo está en un grupo de volúmenes diferente a los de la aplicación
  • El volume group del sistema operativo está compuesto únicamente de un volumen físico
  • Sólo se ha probado con RHEL 6 y 7 en todos los escenarios y Suse 11 en el caso de la utilización de la herramienta dd.

La siguiente es una salida de ejemplo del comando df -h:

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root    7.1G  2.9G  4.3G  41% /
devtmpfs                 486M     0  486M   0% /dev
tmpfs                    497M     0  497M   0% /dev/shm
tmpfs                    497M  6.7M  490M   2% /run
tmpfs                    497M     0  497M   0% /sys/fs/cgroup
/dev/vda1               1014M  125M  890M  13% /boot
/dev/mapper/db2vg-db2lv  8.8G  1.2G  7.2G  14% /opt/ibm
tmpfs                    100M     0  100M   0% /run/user/0
tmpfs                    100M     0  100M   0% /run/user/1000

La siguiente imagen es una representación del particionamiento de ejemplo:

Attach de discos

Este escenario consiste en remover los LUNs que no pertenecen a los grupos de volúmenes del sistema operativo mediante el hypervisor. Esto varía dependiendo de el entorno de virtualización, por lo cual será necesario que un especialista del ambiente colabore con la remoción temporal de los LUNs. Luego se realiza un snapshot, que será mas reducido pues ya no incluye los datos de la aplicación, de la máquina virtual.

Se seguirán los siguientes pasos:

  • Detener aplicaciones
  • Desmontar file systems
  • Comentar /etc/fstab
  • Remover LUNs desde el hipervisor
  • Hacer snapshot
  • Actualizar
  • Validar

Si la actualización es correcta:

  • Añadir los LUNs desde el hipervisor
  • Eliminar comentarios /etc/fstab
  • Montar file systems
  • Iniciar aplicaciones
  • Eliminar snapshot

Si la actualización es incorrecta:

  • Revertir snapshot
  • Añadir los LUNs desde el hipervisor
  • Eliminar comentarios /etc/fstab
  • Montar file systems
  • Iniciar aplicaciones
  • Eliminar snapshot

En el caso de KVM, se puede crear un snapshot mediante virsh:

virsh connect qemu:///system
list
snapshot-create-as --domain $NOMBREMAQUINAVIRTUAL --name "$NOMBRESNAPSHOT"
snapshot-list $NOMBRESNAPSHOT
snapshot-info --current $NOMBRESNAPSHOT

Luego se realiza la actualización, este documento no pretende abarcar el proceso de la actualización.

En caso de fallo de la actualización se puede revertir y eliminar el snapshot de la siguiente manera:

snapshot-revert --domain $NOMBREMAQUINAVIRTUA --snapshotname $NOMBRESNAPSHOT --running
snapshot-delete --domain $NOMBREMAQUINAVIRTUA --snapshotname $NOMBRESNAPSHOT

En caso de que la actualización sea exitosa puede eliminar el snapshot de la siguiente manera:

snapshot-delete --domain $NOMBREMAQUINAVIRTUA --snapshotname $NOMBRESNAPSHOT

Hacer un snapshot de LVM

Este método consiste en hacer un snapshot mediante LVM, la ventaja frente al anterior es que requiere menor intervención del personal especialista en el hypervisor:

  • Documentar todos los kernels disponibles
ls /boot/> /root/kernels
  • Añadir un LUN adicional al volume group o al menos tener espacio suficiente
  • Hacer el snapshot:
lvcreate -L 8GB -s -n root_snapshot /dev/rhel/root
  • Hacer la actualización

Si la actualización es correcta:

  • Remover el snapshot:
lvremove /dev/rhel/root_snapshot
  • En caso de ser necesario remover el physical volume

Si la actualización es incorrecta:

  • Bootear desde DVD
  • Seleccionar la opción “Rescue boot”, una vez en el shell ejecutar el siguiente comando:
lvconvert --merge /dev/rhel/root_snapshot
  • Reiniciar
  • Se debe seleccionar en el boot menu el kernel anterior
grub2-mkconfig> /boot/grub2/grub.cfg
  • Una vez iniciado el sistema mueva los registros del kernel anterior según salgan en el menú y el archivo de kernels:
mv /boot/vmlinuz-3.10.0-693.17.1.el7.x86_64 /root
mv /boot/initramfs-3.10.0-693.17.1.el7.x86_64.img /root
  • Luego genere un nuevo archivo de configuración para GRUB2, con el siguiente comando:
grub2-mkconfig> /boot/grub2/grub.cfg
  • Reiniciar
  • En caso de ser necesario remover el physical volume

Hacer una copia con dd

Para este procedimiento vamos a asumir que el volume group está solo en un disco

dd if=/dev/vda conv=sync,noerror bs=64K | gzip -c> vda.img.tar.gz

Si la actualización es correcta:

  • Elimine el archivo con el respaldo:
rm vda.img.tar.gz

Si la actualización es incorrecta:

  • Bootear desde DVD
  • Seleccionar la opción “Rescue boot”, en lugar de continuar con el asistente seleccione “Skip to shell” y siga los siguientes pasos:
mkdir /media
vgchange -a y db2vg
mount /dev/mapper/db2vg-db2lv /media
cd /media
gunzip -c vda.img.tar.gz | dd of=/dev/vda
sync
  • Reiniciar

Referencias

recuperacion_so.txt · Last modified: 2018/04/04 11:28
Public Domain Except where otherwise noted, content on this wiki is licensed under the following license: Public Domain