Migrar S.O. RHEL/CentOS/SL 7 que bootea por SAN

Migrar S.O. RHEL/CentOS/SL 7 que bootea por SAN a otra LUN

Entorno

Sistema Operativo: CentOS 7.1
Lun Actual: /dev/mapper/emc_so
Lun Nueva: /dev/mapper/vsp_so
Particiones:

/boot -> /dev/mapper/emc_so1
LVM -> /dev/mapper/emc_so2

  • Volume Group -> rootvg
    • / -> rootlv
    • /tmp -> tmplv
    • /home -> homelv
    • /var -> varlv

Para lograr que la migracion se culmine de manera correcta se deben seguir los siguientes pasos:

1: Se debe presentar la lun nueva al equipo, y lograr que el equipo la reconozca:

Para que el S.O. reconozca la nueva LUN posiblemente sea necesario re-escanear o reiniciar las HBAs para eso podemos usar los siguientes comandos:

Escanear HBA: echo - - - > /sys/class/scsi_host/host#/scan

Reiniciar HBA: echo 1 > /sys/class/fc_host/host#/issue_lip

Donde # se debe reemplazar por el numero de HBA.

Se recomienda realizar un escaneo de todas las HBAs, en caso de que aun no se reconozco la lun se puede proceder a reiniciar las HBAs y luego volver a escanear las mismas.

En esta estapa se recomienda configurar el "nombre amigable" de la nueva lun, para esto debemos identificar el wwid de la lun nueva, el wwid es el valor que se muestra entre parentesis al ejecutar multipath -ll.

Por Ejemplo, si queremos identificar el wwid de una LUN presentada desde un Storage Hitachi:

[root@c7ke ~]# multipath -ll | grep HITACHI

mpathf (360060e80129f9b0050409f9b000002a1) dm-15 HITACHI ,OPEN-V

Una vez que tenemos el wwid de la lun nueva podemos asignarle un nombre amigable agregando la siguiente entrada en el archivo /etc/multipath.conf:

multipaths {
    multipath {
        wwid    360060e80129f9b0050409f9b000002a1
        alias   vsp_so
    }
}

Reemplanzando el wwid por el de la LUN nueva y el alias porque el nombre que elijamos.

Luego se debe "recargar" el servicio multipath para que tome los cambios:

service multipathd reload

2: Una vez que el equipo reconozca la Lun nueva es necesario particionar la misma.

Para clonar la tabla de particiones de la lun actual a la lun nueva podemos utilizar el comando sfdisk:

sfdisk -d /dev/mapper/emc_so | sfdisk /dev/mapper/vsp_so

Luego es necesario que el equipo reconozca las particiones creadas con el comando anterior:

partprobe /dev/mapper/vsp_so

3: Clonamos el /boot.

Como el /boot solo es accedido al momento del booteo del sistema lo podemos desmontar y clonar sin afectar el funcionamiento del S.O.

Para la clonacion de dicho FS podemos usar el comando dd:

umount /boot

dd if=/dev/mapper/emc_so1 of=/dev/mapper/vsp_so1 bs=5M

4: Movemos los volumenes LVM.

Si tenemos implementado LVM la migracion se simplifica bastante ya que con el comando pvmove se pueden mover datos en caliente.

Primero debemos crear los "Physical volumens"

pvcreate /dev/mapper/vsp_so2

Luego debemos extender nuestro "volume group" de manera a que la particion de la lun nueva sea parte del mismo.

vgextend rootvg /dev/mapper/vsp_so2

Procedemos a migrar los volumenes

pvmove /dev/mapper/emc_so2 /dev/mapper/vsp_so2

Una vez que termine la migracion de los volumenes podemos quitar del "volume group" la lun vieja.

vgreduce rootvg /dev/mapper/emc_so2

Finalmente debemos eliminar los PVs en la lun vieja para que al retirar no se presenten errores

5: Retirar la lun vieja.

Al culminar el paso 4 todo el Sistema Operativo esta sobre la Lun nueva, por lo tanto podemos despresentar la lun vieja de manera segura.

6: Montar el /boot

Una vez que retiramos la lun vieja podemos volver a montar el /boot. Para evitar errores al montar ese necesario hacer una recarga de los servicios manejados por el systemd, esto debido a que existe un unit-file que se encarga del /boot.

systemctl daemon-reload

En caso de que en el archivo /etc/fstab tengamos el /boot configurado a traves de UID, podemos montar el /boot con el siguiente comando:

mount /boot

En caso contrario debemos corregir el path en el fstab, cambiando /dev/mapper/emc_so1 por /dev/mapper/vsp_so1, luego ejecutamos:

mount /boot

7: Verificar configuracion del MultiPath:

Para que la migracion culmine de manera exitosa es muy importante tener bien configurado el multipath.

Una vez identificado el wwid de la lun nueva es sumamente importante verificar que la misma se encuentra dentro de 2 archivos:

/etc/multipath/wwids

Dentro del /etc/multipath/wwids deberiamos encontrar una linea parecida a la siguiente:
/360060e80129f9b0050409f9b000002a1/

[root@c7ke ~]# cat /etc/multipath/wwids | grep 360060e80129f9b0050409f9b000002a1
/360060e80129f9b0050409f9b000002a1/

Donde el valor dentro de las barras (/) debe se el wwid de la lun nueva

/etc/multipath/bindigs

Dentro del /etc/multipath/bindings deberiamos encontrar una linea parecida a la siguiente:
mpathf 360060e80129f9b0050409f9b000002a1

Ej:
Donde mpathf puede ser mpath[a-z] y el segundo valor debe ser el wwid de la lun nueva

[root@c7ke ~]# cat /etc/multipath/bindings | grep 360060e80129f9b0050409f9b000002a1
mpathf 360060e80129f9b0050409f9b000002a1

8: Eliminar cache de LVM

Para evitar problemas con el proximo inicio se recomienda eliminar la cache LVM:

rm /etc/lvm/cache/.cache

9: Configurar el grub2 con la lun nueva

Para dicha tarea es necesario editar el archivo /boot/grub2/device.map. El mismo debe contener lo siguiente:

(hd0) < ruta_de_la_lun_nueva >

Por ejemplo en nuestro caso nuestra lun tiene como nombre vsp_so. Por lo tanto el archivo debe contener lo siguiente:

(hd0) /dev/mapper/vsp_so

10: Instalar el grub2 en la nueva lun

Se debe instalar el grub2 directamente sobre la LUN

[root@c7ke ~]# grub2-install /dev/mapper/vsp_so

11: Volver a crear el Initial Ram Disk (initrd)

Luego de realizar y verificar todos los pasos anterios debemos volver a crear el initrd:

[root@c7ke ~]# cd /boot/
[root@c7ke boot]# dracut -f -v -a multipath

Reiniciar el Servidor

Finalmente podemos reiniciar el servidor, al reiniciar debemos cambiar la politica de booteo del mismo para apuntar a la nueva LUN

Deja un comentario