Asumámoslo, shit happens.
A veces pasa que tu magnífico disco de 2TB lleno de porno interesantísimos proyectos, máquinas virtuales y archivos sensibles (porno) empieza a fallar. Si tienes backup de todo ésto, pues tampoco es ningún drama, excepto la parte de configurar de cero un nuevo sistema en otro disco y restaurar los datos. Cuando tienes el sistema más tuneado que los gorgoritos de Justin Bieber, pues es un peñazo insufrible.
Así que si eres mínimamente listo (o te ha pasado con anterioridad la mierda ésta), te lo montas para que el sistema vaya avisando (con smartctl, por ejemplo) conforme al disco duro de tus entretelas se le van acabando las horas de vuelo. Si además configuras todo el sistema con LVM (Fedora, Debian y otras ya te lo hacen por defecto al instalar), lo tienes hecho.
Asumimos un sistema con todos sus archivos y particiones dentro de un LVM basado en /dev/sdb1(excepto /boot, que sigue dando problemas). Asumiremos también que ya hemos pinchado el disco de recambio y que es correctamente reconocido por el sistema.
Creamos un nuevo volumen físico en /dev/sdc1 y echamos un vistazo a cómo está el patio a nivel de volúmenes físicos, grupos de volúmenes y volúmenes lógicos:
root@bestiaparda:/mnt# pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created root@bestiaparda:/mnt# pvscan PV /dev/sdb1 VG vg_deb lvm2 [1,82 TiB / 1,55 TiB free] PV /dev/sdc1 lvm2 [1,82 TiB] Total: 2 [3,64 TiB] / in use: 1 [1,82 TiB] / in no VG: 1 [1,82 TiB] root@bestiaparda:~# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 vg_deb lvm2 a-- 1,82t 1,55t /dev/sdc1 lvm2 a-- 1,82t 1,82t root@bestiaparda:~# vgs VG #PV #LV #SN Attr VSize VFree vg_deb 2 5 0 wz--n- 3,64t 3,10t root@bestiaparda:~# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log [...] lv_ERP vg_deb -wI-a----- 20,00g lv_home vg_deb -wI-ao---- 200,00g lv_root vg_deb -wI-ao---- 46,56g lv_swap vg_deb -wI-ao---- 1,86g vfmbofh.net vg_deb -wI-a----- 8,00g root@bestiaparda:~#
Cuidadín con el pvcreate, que como nos equivoquemos de partición, la liaremos parda. Por otra parte, si el disco es grande (en este caso de 2TB, conviene crear una partición y luego crear el pv en ella. Cosas del GPT.
Bueno, vemos que nuestro LVM reside en /dev/sdb1, que contiene un grupo de volúmenes (VG) llamado vg_deb y éste diversos volúmenes lógicos (LV), llamados lv_WHATEVER. También vemos que el sistema reconoce correctamente el nuevo volumen físico (PV) en /dev/sdc1.
Toca extender el VG con nuestro flamante PV nuevo:
root@bestiaparda:/mnt# vgextend vg_deb /deb/sdc1 Volume group "vg_deb" successfully extended root@bestiaparda:~# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 vg_deb lvm2 a-- 1,82t 1,55t /dev/sdc1 vg_deb lvm2 a-- 1,82t 1,82t root@bestiaparda:~#
Vemos que ya tenemos el nuevo PV asignado al VG, así que podemos proceder a mover todos los LV de un disco a otro del tirón. Sin desmontar ni nada. Fácil para todos.
root@bestiaparda:/mnt# pvmove /dev/sdb1 /dev/sdc1 /dev/sdb1: Moved: 0,0% [...] /dev/sdb1: Moved: 99,9%
Fácil. No rápido. Si tenéis tabaco, es un buen momento para un piti. O diez.
Es un movimiento bastante seguro. Internamente, LVM no elimina nada que no se haya copiado correctamente antes. Así que la cosa es a prueba de fallos. MUY a prueba de fallos. He visto sistemas recuperarse de un apagado a las bravas con un proceso como éste a medio hacer y no sólo arrancar tan ricamente, sino continuar el proceso allí donde se quedó.
Por cierto, no avisa con ningún mensaje en caso de éxito. Simplemente llega al 100% y para.
Veamos qué tenemos al acabar:
root@bestiaparda:/mnt# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 vg_deb lvm2 a-- 1,82t 1,82t /dev/sdc1 vg_deb lvm2 a-- 1,82t 1,55t
Como podemos ver, los datos se han movido sin más. Aunque la partición raíz del sistema que estemos moviendo esté en uso. Ole y ole.
Ya podemos eliminar el disco moribundo del LVM activo y respirar tranquilos:
root@bestiaparda:/mnt# vgreduce vg_deb /dev/sdb1 Removed "/dev/sdb1" from volume group "vg_deb" root@bestiaparda:/mnt# pvremove /dev/sdb1 Labels on physical volume "/dev/sdb1" successfully wiped root@bestiaparda:/mnt#
Ahora, en la próxima parada del sistema, podremos eliminar físicamente el disco sin más problemas y darle un final PePero, a martillazos.
<ESC>:wq!
4 comentarios en - LVM: Mover volúmenes lógicos entre discos físicos.
Los discos tienen que ser del mismo tamaño, o pueden ser de tamaños diferentes?
Por ejemplo /dev/sdb1 500GB y /dev/sdc1 160GB….
Excelente tuto, gracias.
Para este método, el disco de destino tiene que ser igual o mayor.
Si tienes que mover a un disco más pequeño, te va a tocar parada de servicio. Arrancas con un live, reduces el FS, el LV y el PV y, posteriormente, haces el pvmove.
hola apenas estoy aprendiendo esto del pv
tengo un disco duro mecanico de 500 gb con fedora en lvm pero quiero clonarlo a uno de estado solido de 240 gb podrias decirme los pasos que debo de hacer para poder lograrlo.
otra la particion swap que se creo automaticamente cuando instale fedora fue de 8 gb porque mi memoria ram es de ese tamaño y no se como reducirlo para no desperdiciar tanto espacio.
y ya si se pudiera podrias decirme si la cago, hacer una instalacion con la particion manual en este tipo de formatp lvm
[root@localhost ~]# fdisk -l
Disco /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectores
Modelo de disco: WDC WD5000AAKS-6
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: gpt
Identificador del disco: DE75B625-B0EF-4D10-9E63-9B3BF49646E8
Disposit. Comienzo Final Sectores Tamaño Tipo
/dev/sda1 2048 411647 409600 200M Sistema EFI
/dev/sda2 411648 2508799 2097152 1G Sistema de ficheros de Linux
/dev/sda3 2508800 976773119 974264320 464.6G Linux LVM
y al hacer
[root@localhost ~]# lvs
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home fedora_localhost-live -wi-ao—- <387.70g
root fedora_localhost-live -wi-ao—- 70.00g
swap fedora_localhost-live -wi-ao—- 6.86g
[root@localhost ~]# pvs
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
PV VG Fmt Attr PSize PFree
/dev/sda3 fedora_localhost-live lvm2 a– 464.56g 0