¿La forma más rápida de convertir un disco formateado ext4 a LVM con ext4?

12

Actualmente estoy haciendo cp -aRpara copiar datos de mi (99% lleno) disco formateado ext4 de 1TB a un nuevo disco LVM-with-ext4-on-it. Se está demorando demasiado.

¿Hay alguna forma de intentar "convertir" el disco en su lugar? Estoy en EC2, así que la copia de seguridad lleva minutos.

O, alternativamente, ¿hay alguna forma que sea más rápida que cpcopiar directamente el sistema de archivos ext4 en el disco LVM?

Max
fuente

Respuestas:

22

Escribí bloques (née lvmify) que hace esta conversión en el lugar. Funciona reduciendo un poco el sistema de archivos, moviendo el inicio del sistema de archivos al final de la partición y copiando un superbloque LVM (preconfigurado con el PV / LV / VG correcto) en su lugar.

Gabriel
fuente
¡Esto suena realmente interesante! Estoy pensando en hacer una copia de seguridad de mis 500 GB en la otra partición (que ya es lvm) solo para intentarlo.
Aquarius Power
1
@ Gabriel, ¿funcionará esto en vivo fs? Quiero decir, ¿necesito desmontar el FS, y luego lo hace en su lugar, o incluso funcionará en un FS raíz montado en ar / w?
Gavriel
1
@AmrMostafa: ¿"Bastante" sólido? Tengo esta cosa sobre mis sistemas de archivos, necesito que sean sólidos como una roca ... :-)
TJ Crowder
3
A los usuarios de Ubuntu Trusty + les resultará difícil instalar el python 3.3 requerido. Solo 3.4 está disponible y los bloques no se han actualizado desde diciembre de 2014: /
bksunday
1
A pesar de que se actualizó hace 5 oídos, funciona de acero. Confirmado en SSD NVMe, esquema de partición GPT. Nota: mejor usar Python 3.6.
tosh
2

No estoy seguro de cómo convertir el disco en vivo, pero creo que rsync será una forma mejor y más segura de copiar sus datos. Le permitirá reanudar y mantener los datos intactos en caso de que se detenga la transferencia.

Encontré un proceso similar completado por alguien que agrega un disco externo a su sistema local como un LVM. No hay mucha información, pero creo que será suficiente para comenzar:

"Así que hoy descubrí lo increíble que es LVM. Instalando Debian, seleccioné" LVM - Usar todo el disco ". Pero la unidad principal era una unidad portátil lenta y pequeña de 5200 rpm. Hoy inserté mi unidad de repuesto de 1.5TB y arranqué. Quería el sistema en este disco más grande y más rápido en su lugar.

Enfoque LVM: agregue / dev / sdc al grupo de volúmenes, luego ejecute "pvmove / dev / sda". Esto mueve todos los datos de sda ​​a otras unidades (solo sdc disponible). No es necesario reiniciar, no es necesario desmontar. Mientras escribo esto, los datos se están moviendo.

Más tarde, haga "vgreduce megatron / dev / sda" para eliminar el disco lento del grupo de volúmenes y listo. Datos movidos. (megatron es el nombre del grupo de volúmenes y de mi computadora). Esto podría ser una noticia vieja para muchos, pero pensé que era realmente genial :) "

Es cierto que esto se hizo localmente, pero creo que con una investigación adicional, tal vez puedas lograrlo.

fuente

bmurtagh
fuente
2

No existe ningún método para hacer tal conversión LVM "sobre la marcha".

LVM en realidad reside debajo de su sistema de archivos para expandirlo a través de múltiples dispositivos físicos, o dividirlo o duplicarlo, etc. El paso final para crear un volumen lógico es colocar un sistema de archivos encima. Aquí hay ejemplos de RHEL6.

Lo que tendrá que hacer es hacer una copia de seguridad o archivar los datos en ese dispositivo, luego destruir el sistema de archivos existente, crear un volumen lógico y volver a colocar un sistema de archivos en la parte superior. Si se trata de un sistema de archivos raíz en un sistema operativo Linux, considere realizar una reinstalación. Puede ser más rápido

Para copias más rápidas, me gusta dd, pero no lo uso a menudo. Cometer un error con ddes peligroso. Una cosa que puedes probar es tar czv <source fs> | (cd <destination fs>; tar x)transferir un archivo tar comprimido sobre la marcha.

¡Buena suerte!

dafydd
fuente
1
Usar compresión en la operación de alquitrán no tiene ningún sentido. El único lugar donde se comprimirán los datos es en la memoria a medida que se canalizan; luego se descomprime inmediatamente antes de que se escriba en el disco. Solo ahora, la operación genera varias veces más carga de CPU porque se comprime y descomprime, inútilmente, sobre la marcha. Además, para cualquier operación como esta que involucre sistemas de archivos completos, querrá al menos tar cSf - | tar xvpf - manejar archivos y permisos dispersos. Posiblemente --selinuxtambién (si el volumen de destino sustituirá posteriormente a la fuente).
FeRD
Ese es un buen punto si sus dispositivos de origen y destino están en el mismo host o si no tiene ciclos de CPU de sobra. Esos son puntos a considerar caso por caso. Me gustan los interruptores "S" y "p" y el argumento "--selinux".
dafydd
Mmm, bueno, si alguien está clonando un sistema de archivos canalizando una operación de tar sobre la marcha a través de un enlace de red, entonces (a) son un alma más valiente que yo, pero (b) es posible que NO desee a -pmenos que los hosts compartan nombres de usuario / UID (aunque la página de manual me recuerda que -pes el valor predeterminado para GNU tar cuando se ejecuta como root), y --selinuxestá plagado de aún más peligro, probablemente sea mejor hacer un restorecon -Rv(o -Rp) sobre todo una vez que esté montado en el correcto (final ) ubicación.
FeRD
dd es la herramienta adecuada para esta operación ya que está copiando una partición. dd hará una copia exacta en la nueva partición, luego cambiará la fstab para cargarla desde la nueva partición en lugar de la anterior. Una vez que haya terminado de mover todas las particiones de la unidad anterior, puede destruir el sistema de archivos y agregar la unidad al grupo de discos físicos LVM, y luego usar el espacio para expandir las particiones como lo desee.
Xalorous