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
:
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/
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
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
11: Volver a crear el Initial Ram Disk (initrd)
Luego de realizar y verificar todos los pasos anterios debemos volver a crear el initrd: