これはLVMスナップショットの仕組みですか?


19

私はファイルサーバーにLVMスナップショットを実装できるようにLVMスナップショットがどのように機能するかを理解しようとしていますが、ベースバックアップシステムに使用する方法ではなく、それがどのように機能するかを説明するものをGoogleで見つけるのが困難です。

私が読んだことから、私はそれが次のように働くと思う:

  • プライマリパーティションと、パーティションにない多くの未割り当ての空き領域を持つLVMがある
  • 次に、スナップショットを作成して、新しい論理ボリュームにマウントします。スナップショットには変更があるはずなので、この最初のスナップショットは完全なコピーになりますよね?
  • 次に、翌日、別のスナップショットを作成し(このスナップショットのパーティションサイズはそれほど大きくする必要はありません)、それをマウントします。
  • どういうわけか、LVMはスナップショットを追跡し、変更されていないビットをプライマリボリュームに保存しません。
  • 次に、十分なスナップショットがあると判断し、最初のスナップショットを削除します。これがどのように機能するか、またはそれが次のスナップショットにどのように影響するかはわかりません。

誰かが私が間違っている場所を私に修正できますか?せいぜい、私はグーグルで何も見つけられないと推測しています。


vgdiplay

obu1:/ home / jail / home / qps / backup / D#vgdisplay
  ---ボリュームグループ---
  VG名fileserverLVM
  システムID
  フォーマットlvm2
  メタデータ領域1
  メタデータシーケンスNo 3
  VG Access読み取り/書き込み
  VGステータスのサイズ変更可能
  最大LV 0
  Cur LV 2
  LV 2を開く
  最大PV 0
  Cur PV 1
  Act PV 1
  VGサイズ931.51 GB
  PEサイズ4.00 MB
  合計PE 238467
  Alloc PE /サイズ238336 / 931.00 GB
  無料PE /サイズ131 / 524.00 MB
  VG UUID qSGaG1-SQYO-D2bm-ohDf-d4eG-oGCY-4jOegU

回答:


30

LVM-HOWTOのスナップショットセクションを見ないのはなぜですか?

LVMスナップショットは、基本的な「書き込み時コピー」スナップショットソリューションです。スナップショットは実際には、LVMにファイルシステムの現在の状態への「ポインター」を提供し、スナップショット後に行われた変更を指定された領域に書き込むように要求するだけです。

LVMスナップショットは、別のボリュームではなく、スナップショットの対象となるボリュームをホストするボリュームグループ内で「ライブ」です。「...パーティションではなく、多くの未割り当ての空き領域」という文は、スナップショットがスナップショットの対象となるボリュームグループの外側で「ライブ」であると考えているように聞こえますが、それは正確ではありません。ボリュームグループはハードディスクパーティションに存在し、ボリュームはスナップショットの対象となり、撮影したすべてのショットはそのボリュームグループに存在します。

LVMスナップショットが使用される通常の方法は、長期保存ではなく、ファイルシステムの一貫した「画像」を取得して、バックアップを取得できるようにすることです。バックアップが完了すると、スナップショットは破棄されます。

LVMスナップショットを作成するときは、スナップショットがアクティブな間に行われた変更を保持するための容量を指定します。スナップショット用に指定したスペースよりも多くの変更が行われた場合、使用できなくなり、破棄する必要があります。(a)スナップショットがいっぱいになって使用できなくなるため、(b)スナップショットがアクティブなときにシステムのパフォーマンスが影響を受けるため、スナップショットを置いたままにしたくない-物事が遅くなります。

編集:

MicrosoftボリュームシャドウコピーサービスとLVMスナップショットが行うことは、それほど大きな違いはありません。マイクロソフトのソリューションは、もう少し包括的です(通常、マイクロソフトの場合と同様に、ツールや製品は良くも悪くも、1つのことに集中するよりもかなり大きな問題を解決しようとすることがよくあります)。

VSSは、スナップショットとソフトウェアベースのスナップショットをサポートするハードウェアデバイスのサポートを単一のAPIに統合する、より包括的なソリューションです。さらに、VSSにはスナップショットAPIを介してアプリケーションを静止できるAPIがありますが、LVMスナップショットはスナップショットにのみ関係します。静止アプリケーションは問題です(データベースを「バックアップ」状態にするなど)。


1
ボリュームシャドウコピー(VSS)を真にモデル化していないのは、VSSが機能しないためです。
マルフィスト09

これは非常に理にかなっています。
マルフィスト09

1
LVMスナップショットを多少誤解していると思います。LVMスナップショットは、スタンドアロンボリュームのようにマウントされる「仮想」デバイスを作成しますが、実際には「パーティション」ではありません。LVMスナップショットは、VSSスナップショットと同様に、スナップショットの対象となるボリュームに「ライブ」します。
エヴァンアンダーソン

1
スナップショットがアクティブな間、更新されたデータがどこに行くかを明確にしてください。メインLVとスナップショットに古いブロックのコピーを保存しますか?または、メインLVがそのままの状態でスナップショットLVに?
ブノワ

1
@benoit答えの最初の行のリンクがこれをカバーしています。LVM1の読み取り専用スナップショットの動作に関するメモを読んでください。答えが見つかると思います。(これはあなたが説明する最初のアプローチであり、2番目ではありません。)
ピーターハンセン14年

28

エヴァンが言ったように、LVMスナップショットはコピーオンライトスナップショットソリューションの例です。それがどのように機能するかは、暗示されるエヴァンとは少し異なりますが、全体ではありません。

スナップショットのないLVMボリュームがある場合、予想どおりにボリュームへの書き込みが発生します。ブロックが変更され、それだけです。

スナップショットを作成するとすぐに、LVMはブロックのプールを作成します。このプールには、ボリュームのLVMメタデータの完全なコピーも含まれます。iノードの更新など、メインボリュームへの書き込みが発生すると、上書きされるブロックがこの新しいプールにコピーされ、新しいブロックがメインボリュームに書き込まれます。これが「コピーオンライト」です。このため、スナップショットが取得された時点からメインボリュームの現在の状態までの間に変更されるデータが多いほど、そのスナップショットプールによって消費されるスペースが増えます。

スナップショットをマウントすると、スナップショットの作成時に書き込まれたメタデータにより、スナップショットプールブロックをボリューム内の変更されたブロック(またはより高いレベルのスナップショット)にマッピングできます。このように、特定のブロックへのアクセスが発生すると、LVMはどのブロックアクセスを認識します。そのボリューム上のファイルシステムに関する限り、スナップショットはありません。

ジェームズは、このシステムの欠点の1つを指摘しました。同じボリュームのスナップショットが複数ある場合、メインボリュームのブロックに書き込むたびに、すべてのスナップショットで書き込みをトリガーする可能性があります。これは、各スナップショットが変更されたブロックの独自のプールを維持するためです。また、長いスナップショットツリーの場合、スナップショットにアクセスすると、サーバー上でかなりの計算が行われ、アクセスのためにどのブロックを処理する必要があるかがわかります。

スナップショットを破棄すると、LVMはスナップショットプールを削除し、必要に応じてスナップショットツリーを更新します。ドロップされたスナップショットがスナップショットツリーの一部である場合、一部のブロックは下位レベルのスナップショットにコピーされます。最小のスナップショット(または唯一のスナップショット)である場合、プールはドロップされるだけで、操作は非常に高速です。


一部のファイルシステムはファイルシステム内のスナップショットを提供しますが、ZFSとBTRFSはよく知られているものの2つです。ファイルシステム自体が変更/変更されていないマッピングを管理しますが、それらは同様に機能します。一貫性のためにスナップショットファミリ全体をfsckできるので、これは間違いなくそれを行うより良い方法です。これは、まっすぐなLVMでは実行できないことです。


この詳細な説明に感謝します。「そのボリュームのファイルシステムに関する限り、スナップショットはありません。」について混乱して申し訳ありませんそれが何を意味するのかもっと説明していただけますか?非常に任意の応答を感謝〜
カー

2
@Carrこれは、スナップショットが完全にファイルシステムの外部で処理されることを意味します。BTRFSやXFSなど、スナップショット機能が組み込まれている他のファイルシステムにはスナップショットの概念があり、これらのシステムでLVMスナップショットを使用しないでください。
sysadmin1138

@ sysadmin1138 FSの整合性チェック/修復を目的とした、あなたが言及したXFSの組み込みスナップショットに興味があります。汚れた方法でダウンしたマルチTB XFS FSがあり、それをオフラインにせずにチェック/修正したい(数百のユーザー、何時間もオフラインにできない)。XFSスナップショットを作成してからfsckを実行して、ライブファイルシステムをオンラインにしたままエラーを見つけて修正し、修正が行われたらライブファイルシステムと交換します。XFSスナップショットは、LVMスナップショットよりもこの目的に適していますか?
ジャンラリンスキー

2

Linuxを使用しているかHP-UXを使用しているかは指定しません。HP-UXでは、論理ボリュームを作成し、別の論理ボリュームのスナップショットとしてマウントします。Linuxでは、スナップショットボリュームとして論理ボリュームを作成します。

HP-UXでスナップショットを削除するには、ボリュームをアンマウントします。Linuxでは、lvremoveを使用して論理ボリュームを削除します。

いずれにしても、スナップショットに保存されるのは変更のみです。スナップショットの利用可能時間が長くなると、より多くの変更が蓄積されます。適切なサイズまたはリリースでない場合、スナップショットがいっぱいになる可能性があります。

スナップショットボリュームでのディスクアクセスの速度は、通常のボリュームよりも遅くなります。あなたはそれを考慮に入れなければなりません。


1

LVMスナップショットは非効率的であり、スナップショットが多いほどシステムの動作は遅くなります。

使用するものとしてxfsのみをサポートし、xfs_freezeを使用してファイルシステムへの新しいアクセスを停止し、ディスク上に安定したイメージを作成できます。

ディスク領域が効率的に使用されるように、コピーオンライトが使用されます。

スナップショット用のスペアスペースを含む論理ボリュームにファイルシステムを作成しました。

これはFAQの例です

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.