
He estado pasando por el proceso de reducir el tamaño de una imagen de Centos 6.10 reduciendo un lvmgroup. Estoy en el punto en el que pude ejecutar este comando:
pvresize -tv --setphysicalvolumesize 1600G /dev/md125p2
Y me está dando el siguiente mensaje de error:
/dev/md125p2: cannot resize to 409599 extents as later ones are allocated.
Estoy tratando de entender cómo construir el comando pvmove para eliminar el error, pero no entiendo bien el concepto.
Aquí está el resultado de este comando. pvs -v --segments /dev/md125p
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 0 384000 lv_mysql 0 linear /dev/md125p2:0-383999
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 384000 81947 0 free
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 465947 12800 lv_root 0 linear /dev/md125p2:465947-478746
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 478747 1998 lv_swap 0 linear /dev/md125p2:478747-480744
/dev/md125p2 vg_centos6svr lvm2 a--u 1.86t 320.11g 480745 7500 lv_home 0 linear /dev/md125p2:480745-488244
Sé que el comando de movimiento debe verse así:
pvmove --alloc anywhere /dev/md125p2 vg_centos6svr:yyyy-end
Simplemente no tengo claro cómo calcular la parte final yyyy. Supongo que significa mover esos 81947 (¿bloques?) que comienzan en 384000, pero ¿qué son "yyyy" y "end"?
Respuesta1
Entonces, lo que puedo ver es que todo está encendido /dev/md125p2
y queremos reducir el tamaño de este PV.
Su salida pvs -v --segments /dev/md125p
muestra que tiene un espacio libre muy grande ( SSize==81947
) después de su lv_mysql
y antes de su lv_root
. Esto es lo suficientemente grande como para albergar lv_root
ytodode los LV que le siguen en el diseño físico.
Entonces, el primer conjunto de números que sugeriría es:
***# pvmove --alloc anywhere /dev/md125p2:480745-488244 /dev/md125p2:384000+7499
es decir, mueva todo lv_home
al espacio libre comenzando inmediatamente después lv_mysql
.
Luego, vuelva a ejecutar pvs -v --segments /dev/md125p
para ver los números revisados y mueva el siguiente bloque al espacio libre que quede.
Esto desfragmentará efectivamente su PV.
Ahora, pvmove
puede que tengaformamás opciones de las que estoy usando (¿quizás especificando el PV en lugar de las extensiones?), pero con lo que me siento cómodo es con ser explícito con los bloques, por lo que todas mis fuentes y objetivos están en forma de /dev/<dev>:<Start>-<End>
o /dev/<dev>:<Start>+<SSize-1>
.
Sospecho que a su problema le faltaban principalmente las extensiones de su especificación de "fuente".
He visto algunos ejemplos de su uso -end
; no sé si eso es algo quesupuestofuncionar, pero plantearía la pregunta "fin delqué?". Así que lo evito y uso números de bloque explícitos. Sólo debes tener en cuenta que la +
sintaxis es unamásy debe ser uno menos que SSize.
Extra
Bien, en el lado fuente parece que puedes hacerlo -name lv_home /dev/md125p2
como una abreviatura /dev/md125p2:480745-488244
, pero ten en cuenta también que esto se volverá más complejo si lh_home
se fragmenta en múltiples extensiones (¿significaría "todos los fragmentos?"). Creo que todavía prefiero Los números se acercan. Tenga en cuenta que su ejemplo en la preguntanoincluye el nombre de LV, así que no estoy seguro de qué pvmove
se habría entendido de lo que le diste...
Respuesta2
Reducir un PV requiere mover extensiones para liberar espacio antes del tamaño deseado. En su caso, la extensión es inferior a 409599.
Primero, pruebe una restauración de copia de seguridad para asegurarse de que los datos se puedan recuperar si es necesario.
lvremove
volúmenes que no necesita.
pvmove
permite especificar extensiones por nombre de LV y el destino por desplazamientos con la notación +. Al proporcionar el destino, debe ser un PV, no un VG.
Mueva un LV a la primera extensión en el espacio libre. El desplazamiento es el tamaño del segmento que se está moviendo.
pvmove --alloc anywhere -n lv_swap /dev/md125p2 /dev/md125p2:384000+1998
Obtenga el nuevo diseño del segmento pvs -v --segments
nuevamente. Repita esto pvmove
con un LV diferente y la nueva extensión de inicio del espacio libre.
Personalmente, prefiero los VG de datos separados de los VG del sistema operativo. Pero este es tu almacenamiento, distribúyelo como desees.