Bricolaje 3. Migración de los sistemas de ficheros al los volúmenes LVM
@ Samquejo | Jueves, 19 de Noviembre de 2020 | 6 minutos de lectura | Actualizado en Jueves, 19 de Noviembre de 2020

Cover: Bricolaje 3. Migración de los sistemas de ficheros al los volúmenes LVM

Como decíamos el otro día…

En el artículo anterior, https://www.yovirtualizador.com/posts/2020/20201112 dejé pendientes muchas cosas.
Al menos el disco quedó particionado.

Revisando la configuración

Puesto que ya tenemos el disco particionado y los volúmenes creados, solo nos queda revisar. La información que vuelca lvdisplay es extensa y solo nos interesa una parte, así que filtramos un poco por medio de lvdisplay | grep LV

vigesimoprimera captura

Lo cual nos da una idea de que volúmenes tenemos y su tamaño.
El UUID del LV no nos interesa ni nos es útil directamente en este momento.
Lo que necesitamos es el UUID del sistema de ficheros, del disco formateado en cada volumen.
Se obtiene con blkid

vigesimosegunda captura

Ups, me faltaba crear el filesystem del último volumen. No pasa nada puesto que el comando mkfs tambíen devuelve el UUID.

Nos quedan:

Volumen UUID Destino Tamaño
/dev/vg_microarm/lv_var 8654c8a3-61ae-41e4-adaa-92a98c99a653 /var <306GiB
/dev/vg_microarm/lv_var_log d75e552e-60fa-4251-9f72-b23e21cd4a92 /var/log 10GiB
/dev/vg_microarm/lv_home 8730219a-aa01-40fc-ba8c-09beb2f39dce /home 150GiB

Moviendo datos

Toca echar a todos los usuario y quedarnos solos, en modo monousuario.
Para ello se inventaron los niveles de ejecución. Son simples así que los repaso por si acaso

Existen varios modos de trabajo:

Run level 0 is matched by poweroff.target (and runlevel0.target is a symbolic link to poweroff.target).
Run level 1 is matched by rescue.target (and runlevel1.target is a symbolic link to rescue.target).
Run level 3 is emulated by multi-user.target (and runlevel3.target is a symbolic link to multi-user.target).
Run level 5 is emulated by graphical.target (and runlevel5.target is a symbolic link to graphical.target).
Run level 6 is emulated by reboot.target (and runlevel6.target is a symbolic link to reboot.target).
Emergency is matched by emergency.target.

Texto extraido de la documentación de systemd

los modos 2 y 4 no son habituales. Son como el 3 y 5 pero sin red, por lo tanto han dejado de tener la utilidad que tenían hace bastante tiempo, como cuando se usaban consolas de serie parar los terminales de usuario en lugar de conexiones de red. Recuerdo que Xenix corría en modo 2 cuando teníamos los terminales por RS232. Mi primer Unix.

Hay 2 formas de ver en que estado nos encontramos, porque habrá que volver a ese mismo estado.
A la antigua: who -r
Con systemd: systemctl get-default

vigésimotercera captura

Para el cambio, si usamos systemd, no deberíamos usar init, así que sabiendo que estamos en runlevel 3 porque me lo ha chivado who o en multi-user.target porque me lo ha dicho systemctl, vamos a cambiar al runlevel 1 o rescue.target

Para eso…
systemctl isolate rescue.target

vigésimocuarta captura

Nos pedirá la contraseña de administrador. ¿Quien recuerda a qué se parece esta pantalla?
A partir de este momento, dejo la sesión por red y me paso a una consola local, en este caso putty por rs232, es mas cómodo para mi que poner una pantalla y teclado, y andar sacando fotos.
Ale, ya podemos empezar a mover cosas.

Lo primero es que vamos a mover el /home
Para ello, montamos el dispositivo en /mnt y copiamos el contenido.

vigésimoquinta captura

Debería comprobar cada permiso, pero ya por experiencia se que el comando se lleva todo.
Los otros permisos son los de selinux, y si, trabajo con ello, así que voy a comprobarlos.

ls -alZ contra origen y destino me vuelca datos suficientes para tener información.

vigésimosexta captura

Coincide, excelente.

Hay varias formas sw copiar, y en este artículo uso cp con parámetros de dos formas distintas pero són absolutamente equivalentes para lo que estamos haciendo. Necesito que sea recursivo, que conserve los permisos, y que también conserver los otros permisos.
cp -apxrf /home/* /mnt Lo que queremos es que el directorio quede en la raiz, por lo que es importante el *.
Desmontando el FS en /mnt podedmos seguir.

El siguiente va a ser el de los logs. Montar y copiar. Y luego el /var.
Para demostar que hay más variantes que funcionan con un resultado satisfactorio, cp -rv --preserve=context /var/log/* /mnt con la misma consideración. El * es importante.

vigésimoséptima captura

Puntos de montaje

Con los 3 FS copiados, vamos a editar los puntos de montaje. Esto se hace en /etc/fstab.
Yo uso nano, el editor por defecto, pero podeis usar cualquier cosa, incluso echo.

Voy a añadir las líneas que corresponden a mi sistema:

UUID=8730219a-aa01-40fc-ba8c-09beb2f39dce   /home   ext4    defaults    0 2
UUID=8654c8a3-61ae-41e4-adaa-92a98c99a653   /var    ext4    defaults    0 2
UUID=d75e552e-60fa-4251-9f72-b23e21cd4a92   /var/log    ext4    defaults    0 2

El orden es importante, puesto que tenemos un FS anidado, lo que vamos a hacer es montar desde la ruta más corta a la más larga, por tema de dependencias.

Si fuera un disco ssd, además de defaults, debería llevar noatime, como lo lleva el disco eMMC y discard para hacer TRIM, pero como es un disco mecánico, la mejor opción es la opción por defecto.

Si en vez de usar el UUID queremos usar etiquetas, podemos usar e2label y el dispositivo para asignar un nombre. Personalmente no me gusta puesto que puede provocar algún problema menor con mi forma de trabajar.

Queda un tanto así:
vigésimooctava captura

Para establecer los nuevos puntos de montaje, y como he copiado el contenido en lugar de moverlo, vamos a renombrar tanto /home como /var y crearemos nuevos directorios para esos puntos de montaje.

Pero, aquí viene lo complicado, selinux determina que no todo directorio puede albergar un /home, o un /var, incluso llamándose así.

Tal como se ve, me lo ha dejado unconfined y default.

vigésimonovena captura

Si copio la raiz, solo la raiz, del /home, me dejará el directorio con los permisos correctos. Lo podemos comprobar y queda correcto de tipo system_u y home_root_t, con ls -alZ /

trigésima captura

Lo mismo aplicamos a /var. Lo vemos en su interior puesto que es la otra cara del directorio . y tiene los permisos correctos.

trigésimoprimera captura

Poniendo en producción

Para volver, podría muy vien regresar a funcionamiento convencional con systemd, esto es ideal si no podemos permitirnos un reinicio.
Para ello habría que probar los montajes con mount -a y si está todo correcto, podemos volver con systemctl isolate multi-user.target dado que el sistema me había chivado que vengo de ahí, del runlevel 3.
Pero en mi caso, por higiene, voy a reiniciar.

trigésimosegunda captura

Una vez reiniciado y comprobado, vemos que los discos aparecen correctamente montados, lo vemos con mount | egrep 'sd[a..z]|mmc|mapper' y vamos a pedirle más datos, como por ejemplo el espacio disponible.

trigésimotercera captura

Como podemos apreciar, ya tenemos un sistema repartido entre una eMMC y un disco mecánico, con capacidad para mucho, y en un tiempo record.
Como esto lo voy a replicar en vídeo, dejo abierto para preguntas, sugerencias y modificaciones.

YoVirtualizador blog
Tu podcast y blog de confianza
Actualizacion Arm Bananapi Bcu Blog Bricolaje Bulkcrap Uninstaller Certificados Clientes Comparativa Correo Crisis Directo Dns Escritorios Esxi Esxiarm Evento Fedora Fedora Kde Foss Fusion Gestion Hipervisor Historia Hugo Humor Hyper V Instalaciones Ios Kde Linux Lvm Maquina Virtual Markdown Micro Pc Migracion Mobaxterm Off Topic Open Source Openssh Particionado Phishing Pi Hole Pildoras Player Podcast Powercli Powershell Prolific Puerto Serie Punto De Montaje Raspberry Reciclado Retro Retrocompatibilidad Rfc Rs 232 Saga Seguridad Share Sintaxis Sistema Operativo Ssl Subsistemas Sysadmin Telegram Tiempos Usb Ttl Virtualbox Virtualizacion Vmware Vmware Player Website Whitebox Windows 10 Windows Ssh Witebox Workstation X X11forwarding Xdmcp Yovirtualizador

© 2019 - 2020 YoVirtualizador

Powered by Hugo with theme Dream.

Acerca de YoVirtualizador

YoVirtualizador es la marca de varios proyectos

Podcast de informática profesional. Canal de Youtube sobre el blog, el podcast y de temática profesional. Blog de contenido diverso, con temática BOFH y técnica.

Gracias por la lectura.

Política de comentarios

En YoVirtualizador todos los comentarios serán bienvenidos pero moderados.

Respetos guardan respetos.

El contenido irrelevante u ofensivo será eliminado.

Galletas

Política de cookies

En YoVirtualizador no usamos cookies para nada, pero los servios de discus y analytics recopilan datos en servidores ajenos a yovirtualizador sin que yo pueda hacer nada.

Este aviso es sólo porque algún político tenía que justificar su existencia.