Tengo un Debian Wheezy
sistema con un par de 500 GB discos duros en RAID-1 ( mdadm
espejo), en la parte superior de los cuales se sienta LVM
volúmenes lógicos con 5 particiones ( boot
, root
, usr
, var
y tmp
), el tamaño total de 47,15 GiB. 418.38 GiB en el volumen físico son gratis. GRUB
instalado en ambas unidades.
Uno de los discos duros falló y ahora la matriz está degradada, pero los datos están intactos.
Lo que quiero es cambiar todos estos 2 HDD a SSD de 80 GB sin la necesidad de reinstalar el sistema desde cero. El punto sutil aquí es que necesito reducir el volumen físico de LVM para que coincida con el tamaño de la SSD, pero los volúmenes lógicos no son contiguos (hay mucho espacio libre al principio), por lo que tengo que mover los volúmenes lógicos dentro de uno físico. . Y no hay ningún lvmove
comando en Debian.
¿Cómo logro esto?
Alguna salida de consola:
Versiones
root@wheezy:~# uname -a && mdadm --version && lvm version
Linux wheezy 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u1 x86_64 GNU/Linux
mdadm - v3.2.5 - 18th May 2012
LVM version: 2.02.95(2) (2012-03-06)
Library version: 1.02.74 (2012-03-06)
Driver version: 4.22.0
Detalles de la matriz:
root@wheezy:~# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Dec 4 12:20:22 2014
Raid Level : raid1
Array Size : 488148544 (465.53 GiB 499.86 GB)
Used Dev Size : 488148544 (465.53 GiB 499.86 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Thu Dec 4 13:08:59 2014
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Name : wheezy:0 (local to host wheezy)
UUID : 44ea4079:b3b837d3:b9bb2ca1:1b95272a
Events : 26
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 0 0 1 removed
Breves detalles de LVM:
root@wheezy:~# pvs && vgs && lvs
PV VG Fmt Attr PSize PFree
/dev/md0 system lvm2 a-- 465.53g 418.38g
VG #PV #LV #SN Attr VSize VFree
system 1 5 0 wz--n- 465.53g 418.38g
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
boot system -wi----- 152.00m
root system -wi----- 2.00g
tmp system -wi----- 10.00g
usr system -wi----- 20.00g
var system -wi----- 15.00g
Segmentación de la PV:
root@wheezy:~# pvs -v --segments /dev/md0
Using physical volume(s) on command line
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/md0 system lvm2 a-- 465.53g 418.38g 0 89600 0 free
/dev/md0 system lvm2 a-- 465.53g 418.38g 89600 38 boot 0 linear /dev/md0:89600-89637
/dev/md0 system lvm2 a-- 465.53g 418.38g 89638 512 root 0 linear /dev/md0:89638-90149
/dev/md0 system lvm2 a-- 465.53g 418.38g 90150 5120 usr 0 linear /dev/md0:90150-95269
/dev/md0 system lvm2 a-- 465.53g 418.38g 95270 3840 var 0 linear /dev/md0:95270-99109
/dev/md0 system lvm2 a-- 465.53g 418.38g 99110 1280 0 free
/dev/md0 system lvm2 a-- 465.53g 418.38g 100390 2560 tmp 0 linear /dev/md0:100390-102949
/dev/md0 system lvm2 a-- 465.53g 418.38g 102950 16226 0 free
rsync
sus archivos de nuevo. No está en línea, pero es probable que sea más rápido que cualquier otra cosa.Respuestas:
No necesita reducir el pv o reconstruir la matriz. Solo necesita crear una nueva matriz a partir de las nuevas unidades y agregarla como un nuevo pv (
pvcreate
+vgextend
), luegopvmove
todos los lvs existentes del antiguo pv, luego elimine el viejo pv (vgreduce
) y saque esa unidad del servicio.fuente
GRUB
desde el sistema Live. Es más fácil iniciar en el sistema de producción e instalar GRUB desde él con un simple comando.dpkg-reconfigure grub-pc
y seleccione las nuevas unidades.No es
lvmove
peropvmove
.Eso debería mover cualquier extensión dentro del rango 89600-102950 al rango 0-12070. De acuerdo con los datos que publicó, esto debería resultar en la reubicación de sus LV al comienzo de su PV.
fuente
LV
alinear parte de la tarea.ATENCIÓN: ESTA GUÍA ESTÁ LEJOS DE LO ÓPTIMO. COMPRUEBE LA RESPUESTA ACEPTADA
Bien, descubrí cómo hacer lo que intenté. Este será un tipo de tutorial.
Durante este tiempo aún no me había dado cuenta de que las manipulaciones con LV son realmente posibles cuando los sistemas de archivos se montan y arrancan en alguna
live
distribución de Linux (SystemRescueCD). La gente aquí me explicó que no hay necesidad de esto si no estás manipulando con sistemas de archivos reales y solo estás alineando LV y reduciendo PV.Entonces, con esta guía, definitivamente logrará lo que desea, pero no de manera eficiente, ya que se enfrenta a la naturaleza misma de LVM: la posibilidad de hacer las cosas en vivo .
Debido a la naturaleza no contigua de los volúmenes lógicos en mi volumen físico, de alguna manera debería moverlos al comienzo del volumen físico. El
pvmove
comando, como lo sugiere @frostschutz, puede moverseLVs
dentro de unPV
:Ahora
PV
está listo para reducirse al tamaño del SSD (80 GB). 80 gigabytes son en realidad 80000000000 bytes:Después de esto, puedo cambiar el tamaño de la matriz en sí. No hay sistemas de archivos en este nivel, así que termino con un solo
mdadm --grow
comando, que en realidad también se puede usar para reducir matrices. El tamaño debe ingresarsekibibytes
, por lo que es 80000000000/1024 = 78125000:Ahora es el momento de agregar un SSD existente a la matriz y dejar que se reconstruya:
Después de reconstruir tengo una matriz saludable. Sus miembros se pueden intercambiar y la instalación de GRUB se puede realizar de forma rutinaria (después de arrancar en el sistema de producción) con
grub-install /dev/sdc
.fuente