È così che funzionano le istantanee LVM?


19

Sto cercando di capire come funzionano gli snapshot LVM in modo da poterlo implementare sul mio fileserver ma ho difficoltà a trovare qualcosa su Google che spieghi come funziona, invece di come usarlo per un sistema di backup di base.

Da quello che ho letto penso che funzioni in questo modo:

  • Hai un LVM con una partizione primaria e un sacco di spazio libero non allocato non nella partizione
  • Quindi scattare un'istantanea e montarla su un nuovo volume logico. Si suppone che le istantanee abbiano delle modifiche, quindi questa prima istantanea sarebbe un'intera copia, giusto?
  • Quindi, il giorno successivo fai un'altra istantanea (la dimensione di questa partizione non deve essere così grande) e montala.
  • In qualche modo LVM tiene traccia delle istantanee e non memorizza bit invariati sul volume primario.
  • Quindi decidi di avere abbastanza istantanee e di sbarazzarti del primo. Non ho idea di come funzioni o di come ciò influirebbe sulla prossima istantanea.

Qualcuno può correggermi dove sbaglio. Nel migliore dei casi, immagino, non riesco a trovare nulla su Google.


vgdiplay

obu1: / home / jail / home / qps / backup / D # vgdisplay
  --- Gruppo di volumi ---
  VG Name fileserverLVM
  ID di sistema
  Formato lvm2
  Aree di metadati 1
  Sequenza di metadati n. 3
  VG Access in lettura / scrittura
  Stato VG ridimensionabile
  MAX LV 0
  Curva LV 2
  Apri LV 2
  PV max 0
  Cur PV 1
  Legge PV 1
  Dimensione VG 931.51 GB
  Dimensione PE 4,00 MB
  Totale PE 238467
  Alloc PE / Dimensione 238336/931,00 GB
  PE libero / Dimensione 131 / 524,00 MB
  VG UUID qSGaG1-SQYO-D2bm-ohDf-d4eG-oGCY-4jOegU

Risposte:


30

Non dare un'occhiata alla sezione delle istantanee di LVM-HOWTO ?

Gli snapshot LVM sono la soluzione di base per lo snapshot "copia su scrittura". Lo snapshot non è altro che chiedere a LVM di darvi un "puntatore" allo stato corrente del filesystem e di scrivere le modifiche apportate dopo lo snapshot in un'area designata.

Le istantanee LVM "live" all'interno del gruppo di volumi che ospita il volume soggetto all'istantanea, non un altro volume. La tua affermazione "... un sacco di spazio libero non allocato, non è la partizione" fa sembrare che il tuo pensiero sia che le istantanee "vivono" al di fuori del gruppo di volumi soggette ad istantanea, e questo non è accurato. Il gruppo di volumi risiede in una partizione del disco rigido e il volume è soggetto a un'istantanea e qualsiasi immagine acquisita in quel gruppo di volumi.

Il modo normale in cui vengono utilizzate le snapshot LVM non è per l'archiviazione a lungo termine, ma piuttosto per ottenere un'immagine "coerente" del filesystem in modo tale da poter eseguire un backup. Al termine del backup, l'istantanea viene eliminata.

Quando si crea un'istantanea LVM, si designa una quantità di spazio per contenere le modifiche apportate mentre l'istantanea è attiva. Se vengono apportate più modifiche di quelle designate, lo spazio per l'istantanea diventa inutilizzabile e deve essere eliminato. Non vuoi lasciare le istantanee in posa perché (a) si riempiranno e diventeranno inutilizzabili, e (b) le prestazioni del sistema sono influenzate mentre un'istantanea è attiva - le cose diventano più lente.

Modificare:

Ciò che fanno i Servizi di copia shadow del volume di Microsoft e le istantanee LVM non sono eccessivamente differenti. La soluzione di Microsoft è un po 'più completa (come in genere accade con Microsoft, nel bene e nel male i loro strumenti e prodotti spesso cercano di risolvere problemi piuttosto grandi piuttosto che concentrarsi su una cosa).

VSS è una soluzione più completa che unisce il supporto per dispositivi hardware che supportano snapshot e snapshot basati su software in un'unica API. Inoltre, VSS ha API per consentire alle applicazioni di essere messe in pausa attraverso le API delle istantanee, mentre le istantanee LVM riguardano solo le istantanee: qualsiasi applicazione sospesa è il tuo problema (mettere i database in stati di "backup", ecc.).


1
Quindi non è veramente modellato sul Volume Shadow Copy (VSS), perché non è così che funziona VSS?
Malfist,

Questo ha molto più senso.
Malfist,

1
Penso che tu abbia frainteso in qualche modo le istantanee di LVM. Le istantanee LVM creano dispositivi "virtuali" montati come volumi autonomi, ma in realtà non sono "partizioni". Gli snapshot LVM "vivono" nel volume soggetto allo snapshot, proprio come gli snapshot VSS.
Evan Anderson,

1
Potresti chiarire dove vanno i dati aggiornati mentre è attiva un'istantanea? al LV principale e l'istantanea memorizza una copia del vecchio blocco? o all'istantanea LV mentre l'LV principale rimane intatta?
Benoît,

1
@benoit il link nella prima riga della risposta copre questo. Leggi la nota lì sul comportamento dell'istantanea di sola lettura LVM1 e penso che avrai la tua risposta. (È il primo approccio che descrivi, non il secondo.)
Peter Hansen,

28

Le snapshot LVM sono un esempio di soluzione snapshot copia su scrittura, come ha detto Evan. Come funziona è un po 'diverso da quello di Evan, ma non di molto.

Quando si dispone di un volume LVM senza snapshot, le scritture sul volume avvengono come previsto. Un blocco è cambiato, e basta.

Non appena si crea un'istantanea, LVM crea un pool di blocchi. Questo pool contiene anche una copia completa dei metadati LVM del volume. Quando si verificano scritture sul volume principale, come l'aggiornamento di un inode, il blocco da sovrascrivere viene copiato in questo nuovo pool e il nuovo blocco viene scritto nel volume principale. Questa è la 'copia su scrittura'. Per questo motivo, più dati vengono modificati tra quando è stata acquisita un'istantanea e lo stato corrente del volume principale, maggiore sarà lo spazio consumato da quel pool di istantanee.

Quando si monta l'istantanea, i metadati scritti quando è stata acquisita l'istantanea consentono la mappatura dei blocchi del pool di istantanee su blocchi modificati nel volume (o istantanea di livello superiore). In questo modo quando un accesso arriva per un blocco specifico, LVM sa quale accesso al blocco. Per quanto riguarda il filesystem su quel volume, non ci sono istantanee.

James ha sottolineato uno dei difetti di questo sistema. Quando si hanno più istantanee dello stesso volume, ogni volta che si scrive su un blocco nel volume principale, è possibile che si verifichino scritture in ogni singola istantanea. Questo perché ogni istantanea mantiene il proprio pool di blocchi modificati. Inoltre, per alberi ad alta istantanea, l'accesso a un'istantanea può causare parecchi calcoli sul server per capire quale blocco esatto debba essere servito per un accesso.

Quando si elimina un'istantanea, LVM rilascia semplicemente il pool di istantanee e aggiorna l'albero delle istantanee secondo necessità. Se l'istantanea rilasciata fa parte di un albero di istantanee, alcuni blocchi verranno copiati nell'istantanea di livello inferiore. Se è l'istantanea più bassa (o l'unica), il pool viene semplicemente eliminato e l'operazione è molto veloce.


Alcuni file system offrono istantanee nel file system, ZFS e BTRFS sono solo due dei più noti. Funzionano in modo simile, sebbene il filesystem stesso gestisca la mappatura modificata / invariata. Questo è probabilmente un modo migliore per farlo poiché puoi conservare un'intera famiglia di istantanee per coerenza, cosa che non puoi fare con LVM.


Grato per questa spiegazione dettagliata. Mi dispiace di essere confuso su "Per quanto riguarda il filesystem su quel volume, non ci sono istantanee". Potresti spiegare di più su cosa significhi? Molto apprezzato per qualsiasi risposta ~
Carr

2
@Carr Significa che le istantanee sono gestite completamente al di fuori del filesystem. Altri filesystem con funzionalità di snapshot integrata, come BTRFS e XFS, hanno un concetto di snapshot e non dovresti usare snapshot LVM con questi sistemi.
sysadmin1138

@ sysadmin1138 Sono curioso delle istantanee integrate con XFS che hai citato, ai fini del controllo / riparazione della coerenza di FS. Ho un XFS FS multi-TB che è andato in modo sporco e voglio controllarlo / ripararlo, senza metterlo offline (centinaia di utenti, non possono andare offline per ore). Sto pensando di creare uno snapshot XFS e quindi eseguire fsck su di esso per trovare / correggere errori mentre il filesystem live è tenuto online, e quindi se viene effettuata la correzione, scambiare con il filesystem live. Un'istantanea XFS sarebbe migliore a questo scopo di un'istantanea LVM?
Ján Lalinský,

2

Non si specifica se si utilizza Linux o HP-UX. In HP-UX, si crea un volume logico e lo si monta come un'istantanea di un altro volume logico. In Linux, si crea un volume logico come volume di istantanea.

La rimozione di un'istantanea in HP-UX viene eseguita smontando il volume; in Linux si fa usando lvremove per rimuovere il volume logico.

In ogni caso, le modifiche sono l'unica cosa memorizzata nell'istantanea. Più a lungo rimane disponibile l'istantanea, maggiore è il numero di modifiche che immagazzina - e c'è la possibilità che possa riempirsi se non correttamente dimensionato o rilasciato.

La velocità di accesso al disco su un volume di snapshot è inferiore rispetto a un volume normale; devi tenerne conto.


1

Gli snapshot LVM sono inefficienti, più snapshot ci sono più lento andrà il sistema.

Supporto solo xfs perché è quello che usiamo e xfs_freeze può essere utilizzato per interrompere il nuovo accesso al file system e creare un'immagine stabile su disco.

Copia su scrittura viene utilizzato in modo che lo spazio su disco venga utilizzato in modo efficiente.

È stato creato un file system in un volume logico che contiene spazio libero per le istantanee.

Questo è un esempio dalle FAQ

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.