Solución 1:
Acabo de probar una actualización basada en instantáneas con Ubuntu. Y sí, tuve que reiniciar varias veces. Primero cambie el nombre de 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 ):
# lvrename lvm root root-old
# lvcreate -n root -s lvm/root-old -L 10G
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 puedes probar la nueva versión e incluso cambiar al antiguo sistema
# lvrename lvm root root-new
# lvrename lvm root-old root
# reboot
Si desea abandonar la actualización, simplemente ejecútela (desde el sistema anterior)
# lvremove lvm/root-new
Si desea confirmar los cambios, simplemente ejecute (desde el sistema anterior)
# lvconvert --merge lvm/root-new
o, desde el nuevo sistema
# lvrename lvm root root-new
# lvconvert --merge lvm/root-new
# lvrename lvm root-old root
seguido de un reinicio. El sistema se negará a realizar la combinación de inmediato, ya que los volúmenes están abiertos. Por lo tanto, la combinación se iniciará durante el arranque y continuará mientras ya pueda trabajar con el sistema.
Ah, y por cierto:cuando cambie entre los sistemas, recuerde usar el kernel apropiado. Dado que /boot no forma parte de lvm, los núcleos antiguo y nuevo se colocarían uno al lado del otro.
Solución 2:
Ok, creo que lo descubrí al volver a leer el CÓMO 3.8.
- Las instantáneas de solo lectura (como LVM1) contienen las diferencias de nivel de bloque después de la creación de la instantánea:el original aún cambia, pero la instantánea conserva una representación del original. Leyendo de la instantánea presenta los datos tal como aparecían en ese momento.
- Se pueden escribir instantáneas de lectura y escritura (predeterminadas en LVM2):son una bifurcación de la partición original. Escribir a la instantánea no cambia el original.
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, sucede lo siguiente:
- Algo intenta escribir en el original.
- Se lee el original y los bloques del original se copian en la instantánea.
- El original se cambia.
- La instantánea contiene las "diferencias inversas", los cambios que hacen que el original luzca como cuando se creó la instantánea.
Por lo tanto, desechar la instantánea no afectará en absoluto al original, porque el original se modificó 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 L/E. De lo contrario, RO o R/W funcionarán.
Entonces:
- Si se escribe en la instantánea R/W punto de montaje, confirmar escribiendo la instantánea en el original y revertir tirando la instantánea.
- Si escribe al original punto de montaje, confirmar tirando la instantánea y revertir escribiendo desde la instantánea al original.
Todavía no he encontrado una herramienta específica para realizar esta combinación y, dado que mi escenario no es exactamente el uso previsto de las instantáneas, es posible que no haya una. Suena como un trabajo para rdiff.
Solución 3:
La funcionalidad de combinación de instantáneas LVM2 / mapeador de dispositivos está disponible si está ejecutando Linux 2.6.33+ y usando LVM 2.0.58+:
lvconvert --merge
Vea esta publicación:http://www.jonnor.com/2010/02/lvm-snapshot-merging-avaliable/
Hace referencia a http://kernelnewbies.org/Linux_2_6_33 (consulte la sección 5, MD/DM) y el registro de cambios de LVM en 2.0.58:ftp://sources.redhat.com/pub/lvm2/WHATS_NEW
Pero todavía no puedo decirte cómo usarlo correctamente;-)
Solución 4:
LVM funciona a nivel de bloque. Incluso 'no sabe' qué es un sistema de archivos. Por lo tanto, no puede tomar una instantánea solo de ciertos directorios, a menos que se monte allí un sistema de archivos de un volumen LVM diferente.
Cuando realiza una instantánea de LVM, en realidad solicita un duplicado de 'copia al escribir' de un volumen. Cualquier bloque que se cambiaría en el volumen de la instantánea se almacenará sin modificar en la instantánea primero. Entonces, para 'confirmar cambios' no tiene que hacer nada. Simplemente elimine el volumen de la instantánea.
No sé cuál es la forma recomendada de 'revertir 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 necesitará reiniciar cualquier cosa que haya cambiado, un reinicio podría ser una buena idea.
Solución 5:
- No hay razón para fusionar alguno. Simplemente elimine la instantánea, la fuente LV permanece cambiada
- Fusión necesaria para revertir los cambios
lvconvert --merge <snapshot name>
- LVM funciona con dispositivos de bloque. Cualquier cambio relacionado con FS debe realizarse mediante utilidades especiales (xfs_growfs, e2fsck, ...) según el tipo de FS
Instantánea 'congelar' el estado original del LV. Eliminar instantánea significa olvidar ese estado. Fusionar instantánea significa volver a ese estado
Pero dentro de LVM guarda 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 y la instantánea