Estoy a punto de realizar una actualización experimental en mi servidor CentOS 5. Si la actualización falla, quiero poder hacer una copia de seguridad de los cambios en el sistema de archivos. Este escenario parece similar al ejemplo de la Sección 3.8 del CÓMO LVM para las instantáneas de lectura y escritura de LVM2, pero el ejemplo carece bastante del tutorial real.
¿Cómo confirmaría los cambios, fusionándolos nuevamente en la partición original?
¿Cómo revertiría los cambios, restaurando el sistema de archivos a su estado original? ¿Debo suponer que tendré que reiniciar varios servicios, si no es que reinicio completo?
¿Es posible capturar solo ciertos directorios en una partición o es una operación de toda la partición?
dmsetup targets
debería mostrar snapshot-merge si ese es el caso, el comando merge, aplicado a snapshot-lv volverá al estado donde se tomó la instantánea.Acabo de probar una actualización basada en instantáneas con Ubuntu. Y sí, necesitaba reiniciar varias veces. Primero cambie el nombre del root-lv original a otro, para que pueda darle a la instantánea el nombre original (ya que una actualización crea muchos cambios y los cambios son más rápidos en la instantánea que en el original):
El tamaño debe elegirse adecuadamente. Luego reinicie, para que el 'nuevo' lvm / ubuntu se monte como root y pueda realizar la actualización. Ahora puede probar la nueva versión e incluso cambiar al sistema anterior al
Si desea descartar la actualización, simplemente ejecute (desde el sistema anterior)
Si desea confirmar los cambios, simplemente ejecute (desde el sistema anterior)
o, del nuevo sistema
seguido de un reinicio. El sistema se negará a fusionar de inmediato, ya que los volúmenes están abiertos. Por lo tanto, la fusión se iniciará durante el arranque y continuará mientras ya pueda trabajar con el sistema.
Ah, y por cierto: al cambiar entre los sistemas, recuerde usar el núcleo apropiado. Como / boot no es parte de lvm, los núcleos viejos y nuevos se colocarían allí uno al lado del otro.
fuente
Ok, creo que lo tengo resuelto al releer el CÓMO 3.8.
La forma en que funciona una instantánea es un conjunto de cambios a nivel de bloque del original. Entonces, cuando se escribe en el original, suceden las siguientes cosas:
Por lo tanto, tirar la instantánea no afectará en absoluto al original, porque el original ha sido cambiado y la instantánea solo contenía una lista de esos cambios.
Respondiendo a mi propia pregunta:
Cree una nueva instantánea con LVM. Si la actualización se puede configurar para escribir en el punto de montaje de la instantánea, use una instantánea R / W. De lo contrario, ya sea RO o R / W.
Luego:
Todavía no he encontrado una herramienta específica para realizar esta fusión y, dado que mi escenario no es exactamente el uso previsto de las instantáneas, puede que no haya una. Suena como un trabajo para rdiff.
fuente
lvconvert --merge <snapshot-name>
"restaurará" su disco original a esa instantánea y la eliminará. Por supuesto, puede restaurarlo rápidamente de inmediato.LVM funciona a nivel de bloque. Incluso 'no sabe' qué es un sistema de archivos. Por lo tanto, no puede capturar solo ciertos directorios, a menos que un sistema de archivos de un volumen LVM diferente esté montado allí.
Cuando realiza una instantánea LVM, en realidad solicita el duplicado 'copiar en escritura' de un volumen. Cualquier bloque que se cambie en el volumen de la instantánea se almacenará primero sin modificaciones en la instantánea. Entonces, para 'confirmar cambios' no tienes que hacer nada. Simplemente elimine el volumen de la instantánea.
No sé cuál es la forma recomendada de "revertir los cambios", ya que nunca usé LVM en tal escenario, pero supongo que se describe bien en la documentación de LVM en alguna parte. Sea lo que sea, probablemente necesite reiniciar cualquier cosa que haya cambiado, un reinicio podría ser una buena idea.
fuente
lvconvert --merge <snapshot name>
Instantánea 'congelar' estado original de LV. Eliminar instantánea significa olvidar ese estado. Combinar instantánea significa volver a ese estado
Pero dentro de LVM guarda los datos reescritos en la instantánea: asegúrese de que el tamaño de la instantánea cumpla con la cantidad esperada de cambios en LV e instantánea
fuente
La documentación es confusa. Me parece que lvcreate --merge significa revertir todos los cambios, y lvremove significa cometer los cambios. La distinción está en cómo lo usas.
En la mayoría de los casos, solo está utilizando la instantánea como un punto congelado de solo lectura en la copia de tiempo del volumen en vivo, y el volumen en vivo sigue cambiando. En este caso, si combina, lógicamente eso significaría que sobrescribirá el volumen en vivo con la copia congelada, o en otras palabras, fusionar significa cambios de reversión y eliminar significa confirmar cambios.
Si escribe en la instantánea (una nueva opción con LVM2), que no es el comportamiento predeterminado que parece, y probablemente requiere cambiar la configuración en otro lugar para que las aplicaciones escriban en la instantánea en lugar del volumen original, entonces lo contrario sería cierto.
¡Tenga cuidado al tratar con instantáneas, ya que algunas personas supondrán que quiere usarlas de una manera y le darán instrucciones que pueden destruir su sistema si opera bajo el supuesto opuesto!
fuente