¿Es así como funcionan las instantáneas de LVM?

19

Estoy tratando de descubrir cómo funcionan las instantáneas LVM para poder implementarlas en mi servidor de archivos, pero tengo dificultades para encontrar algo en Google que explique cómo funciona, en lugar de cómo usarlo para un sistema de copia de seguridad base.

Por lo que he leído, creo que funciona más o menos así:

  • Tiene un LVM con una partición primaria y mucho espacio libre sin asignar que no está en la partición
  • Luego toma una instantánea y la monta en un nuevo volumen lógico. Se supone que las instantáneas tienen cambios, por lo que esta primera instantánea sería una copia completa, ¿correcto?
  • Luego, al día siguiente, toma otra instantánea (el tamaño de la partición de este no tiene que ser tan grande) y la monta.
  • De alguna manera, el LVM realiza un seguimiento de las instantáneas y no almacena bits sin cambios en el volumen primario.
  • Luego decides que tienes suficientes instantáneas y te deshaces de la primera. No tengo idea de cómo funciona esto o cómo afectaría a la siguiente instantánea.

¿Alguien puede corregirme donde estoy equivocado? En el mejor de los casos, supongo, no puedo encontrar nada en Google.


vgdiplay

obu1: / home / jail / home / qps / backup / D # vgdisplay
  --- Grupo de volumen ---
  VG Name fileserverLVM
  ID del sistema
  Formato lvm2
  Áreas de metadatos 1
  Secuencia de metadatos no 3
  Acceso VG lectura / escritura
  VG Status redimensionable
  MAX LV 0
  Cur LV 2
  Abrir LV 2
  PV máximo 0
  Cur PV 1
  Ley PV 1
  Tamaño VG 931.51 GB
  Tamaño PE 4.00 MB
  PE total 238467
  Alloc PE / Tamaño 238336 / 931.00 GB
  PE gratis / Tamaño 131 / 524.00 MB
  VG UUID qSGaG1-SQYO-D2bm-ohDf-d4eG-oGCY-4jOegU
Malfist
fuente

Respuestas:

30

¿Wny no echa un vistazo a la sección de instantáneas del LVM-HOWTO ?

Las instantáneas LVM son su solución básica de instantánea "copiar en escritura". La instantánea no es más que pedirle al LVM que le dé un "puntero" al estado actual del sistema de archivos y que escriba los cambios realizados después de la instantánea en un área designada.

Las instantáneas de LVM "en vivo" dentro del grupo de volúmenes que aloja el volumen sujeto a la instantánea, no otro volumen. Su afirmación "... mucho, mucho espacio libre sin asignar, no la partición" hace que parezca que piensa que las instantáneas "viven" fuera del grupo de volúmenes sujeto a la instantánea, y eso no es exacto. Su grupo de volúmenes vive en una partición del disco duro, y el volumen está sujeto a instantáneas y cualquier instantánea que haya tomado en vivo en ese grupo de volúmenes.

La forma normal en que se utilizan las instantáneas LVM no es para el almacenamiento a largo plazo, sino para obtener una "imagen" coherente del sistema de archivos de modo que se pueda tomar una copia de seguridad. Una vez que se realiza la copia de seguridad, se descarta la instantánea.

Cuando crea una instantánea LVM, designa una cantidad de espacio para guardar los cambios realizados mientras la instantánea está activa. Si se realizan más cambios de los que ha designado, el espacio para la instantánea queda inutilizable y debe descartarse. No desea dejar instantáneas por ahí porque (a) se llenarán y quedarán inutilizables, y (b) el rendimiento del sistema se ve afectado mientras una instantánea está activa; las cosas se vuelven más lentas.

Editar:

Lo que hacen los Servicios de instantáneas de volumen de Microsoft y las instantáneas de LVM no son muy diferentes. La solución de Microsoft es un poco más completa (como suele ser el caso con Microsoft, para bien o para mal sus herramientas y productos a menudo buscan resolver problemas bastante grandes en lugar de centrarse en una cosa).

VSS es una solución más completa que unifica la compatibilidad con dispositivos de hardware que admiten instantáneas y instantáneas basadas en software en una sola API. Además, VSS tiene API para permitir que las aplicaciones se pongan inactivas a través de las API de instantáneas, mientras que las instantáneas LVM solo se preocupan por las instantáneas: cualquier aplicación de inactividad es su problema (poner las bases de datos en estados de "respaldo", etc.).

Evan Anderson
fuente
1
Entonces, ¿no está realmente modelado después de Volume Shadow Copy (VSS), porque no es así como funciona VSS?
Malfist
Esto tiene mucho más sentido.
Malfist el
1
Creo que estás malentendiendo un poco las instantáneas de LVM. Las instantáneas LVM crean dispositivos "virtuales" que se montan como volúmenes independientes, pero en realidad no son "particiones". Las instantáneas LVM "viven" en el volumen que está sujeto a la instantánea, al igual que las instantáneas VSS.
Evan Anderson el
1
¿Podría aclarar a dónde van los datos actualizados mientras una instantánea está activa? al LV principal y la instantánea almacena una copia del bloque antiguo? o a la instantánea LV mientras el LV principal permanece intacto?
Benoît
1
@benoit el enlace en la primera línea de la respuesta cubre esto. Lea la nota allí sobre el comportamiento de la instantánea de solo lectura LVM1 y creo que tendrá su respuesta. (Es el primer enfoque que describe, no el segundo.)
Peter Hansen
28

Las instantáneas LVM son un ejemplo de una solución de instantánea de copia en escritura, como dijo Evan. Cómo funciona es un poco diferente de lo que implica Evan, pero no en gran medida.

Cuando tiene un volumen LVM sin instantáneas, las escrituras en el volumen suceden como era de esperar. Se cambia un bloque, y eso es todo.

Tan pronto como cree una instantánea, LVM crea un grupo de bloques. Este grupo también contiene una copia completa de los metadatos LVM del volumen. Cuando ocurren escrituras en el volumen principal, como la actualización de un inodo, el bloque que se sobrescribe se copia en este nuevo grupo y el nuevo bloque se escribe en el volumen principal. Esta es la 'copia en escritura'. Debido a esto, cuantos más datos se cambien entre cuando se tomó una instantánea y el estado actual del volumen principal, más espacio será consumido por ese grupo de instantáneas.

Cuando monta la instantánea, los metadatos escritos cuando se tomó la instantánea permiten la asignación de bloques de agrupación de instantáneas sobre bloques modificados en el volumen (o instantánea de nivel superior). De esta manera, cuando llega un acceso para un bloque específico, LVM sabe qué acceso de bloque. En lo que respecta al sistema de archivos en ese volumen, no hay instantáneas.

James señaló una de las fallas de este sistema. Cuando tiene varias instantáneas del mismo volumen, cada vez que escribe en un bloque en el volumen principal puede activar las escrituras en cada instantánea. Esto se debe a que cada instantánea mantiene su propio grupo de bloques modificados. Además, para árboles de instantáneas largos, el acceso a una instantánea puede ocasionar que se calcule un poco en el servidor para determinar qué bloque exacto debe servirse para un acceso.

Cuando desecha una instantánea, LVM simplemente elimina el grupo de instantáneas y actualiza el árbol de instantáneas según sea necesario. Si la instantánea eliminada es parte de un árbol de instantáneas, algunos bloques se copiarán en la instantánea de nivel inferior. Si es la instantánea más baja (o la única), el grupo simplemente se cae y la operación es muy rápida.


Algunos sistemas de archivos ofrecen instantáneas en el sistema de archivos, ZFS y BTRFS son solo dos de los más conocidos. Funcionan de manera similar, aunque el propio sistema de archivos gestiona la asignación modificada / sin cambios. Podría decirse que esta es una mejor manera de hacerlo, ya que puede obtener una coherencia de toda una familia de instantáneas, que es algo que no puede hacer con LVM directo.

sysadmin1138
fuente
Agradecido por esta explicación detallada. Lo siento, estoy confundido acerca de "En lo que respecta al sistema de archivos en ese volumen, no hay instantáneas". ¿Podría explicar más sobre lo que eso significa? Agradezco mucho cualquier respuesta ~
Carr
2
@Carr Significa que las instantáneas se manejan completamente fuera del sistema de archivos. Otros sistemas de archivos que tienen capacidad de instantánea incorporada, como BTRFS y XFS, tienen un concepto de instantáneas y no debe usar instantáneas LVM con esos sistemas.
sysadmin1138
@ sysadmin1138 Tengo curiosidad por las instantáneas integradas con XFS que mencionó, con el propósito de verificar / reparar la consistencia de FS. Tengo un FS XFS de TB múltiple que se estropeó de manera sucia y quiero verificarlo / arreglarlo, sin ponerlo fuera de línea (cientos de usuarios, no pueden estar fuera de línea por horas). Estoy pensando en crear una instantánea XFS y luego ejecutar fsck para encontrar / corregir errores mientras el sistema de archivos en vivo se mantiene en línea, y luego, si se soluciona, intercambie con el sistema de archivos en vivo. ¿Sería mejor una instantánea XFS para este propósito que una instantánea LVM?
Ján Lalinský
2

No especifica si está utilizando Linux o HP-UX. En HP-UX, crea un volumen lógico y lo monta como una instantánea de otro volumen lógico. En Linux, crea un volumen lógico como un volumen de instantánea.

La eliminación de una instantánea en HP-UX se realiza desmontando el volumen; en Linux se hace usando lvremove para eliminar el volumen lógico.

En cualquier caso, los cambios son lo único que se almacena en su instantánea. Cuanto más tiempo permanezca disponible la instantánea, más cambios almacenará, y existe la posibilidad de que se llene si no se dimensiona o libera adecuadamente.

La velocidad de acceso al disco en un volumen de instantánea es más lenta de lo que sería en un volumen normal; debes tener eso en cuenta.

Mei
fuente
1

Las instantáneas de LVM son ineficientes, mientras más instantáneas haya, más lento será el sistema.

Solo soporto xfs ya que es lo que usamos y xfs_freeze se puede usar para detener el nuevo acceso al sistema de archivos y crear una imagen estable en el disco.

Copiar al escribir se usa para que el espacio del disco se use de manera eficiente.

Ha creado un sistema de archivos en un volumen lógico que tiene espacio libre para las instantáneas.

Este es un ejemplo de las preguntas frecuentes

James
fuente