web-dev-qa-db-ja.com

KVM仮想マシンのクローンにLVMスナップショットを使用する

だから、私はかなり素晴らしいKVMセットアップを実行しています、ホストドメインとゲストドメインでCentOS5.5、すべての構成を管理するlibvirtなどを持っています。ゲストドメインファイルシステムはLVMに保存されていますハードウェアRAID5ボリュームの上部にあるため、バックアップと低レベルのデータ冗長性に柔軟性があります。

今日、virt-cloneをテストしましたが、中断されたドメインのLVMディスクから新しい仮想マシンの新しいLVMボリュームに24Gのデータを複製するのに約30分かかりましたが、驚くほどうまくいきました。

私の質問は、LVMスナップショットを使用して新しいVMのルートディスクを作成することはできませんか?例えば: lvcreate -s guest1_root -n guest2_root -L 8G raid_vg

LVMスナップショットについての私の理解では、スナップショットは元のブロックに加えられた変更の逆デルタを格納するため、スナップショットは実際のスペースをほとんど占有せず、元のボリュームが書き込まれた後でも元のブロックを読み取ることができます。 LVM2は、読み取り/書き込みスナップショットを追加します。これにより、この興味深い可能性が開かれます。

実際、 LVM HOWTO は、この機能をXenと組み合わせて使用​​することを提案しています。

これにより、LVM1の読み取り専用スナップショットでは不可能だった多くの新しい可能性が開かれます。 (...)Xenで使用するボリュームを作成する場合にも役立ちます。ディスクイメージを作成してからスナップショットを作成し、特定のdomUインスタンスのスナップショットを変更できます。次に、元のボリュームの別のスナップショットを作成し、別のdomUインスタンス用にそのスナップショットを変更できます。スナップショットで使用されるストレージは、オリジンまたはスナップショットで変更されたブロックのみであるため、ボリュームの大部分はdomUによって共有されます。

これは本当に強力なツールのように思えます。本番仮想化環境で試してみた人、このアプローチを採用しているベンダー(Citrix、VMWare)を思いつく人、またはこのアイデアに関する深刻な問題を思いつく人はいないでしょうか。私は次の潜在的な問題を考えることができます:

  • 「元の」ゲストがスナップショット時に実行されている場合、潜在的なファイルシステムの問題。
  • 「逆デルタ」および「書き込まれたブロック」のログが追加されたときのホストドメインLVMのパフォーマンス。非常に高速かもしれませんが、私にはわかりません。これは奇妙なアイデアのように思われるため、テストとベンチマークが必要です。
  • 1つのバスケットでより多くの卵:「元の」LVMボリュームが破損した場合、スナップショットされたボリュームもホースされます。もちろん、RAID5はディスクの破損を軽減しますが、注目に値します。
  • スナップショットをスナップショットできますか?そう思います。

私よりも仮想化の経験が豊富な人として、そのような設定から悲鳴を上げて走りたくなるものはありますか?

5
phred

これを行うのはまったく問題ありません。あなたがすることnot必要なのは、スナップショットの親(元の、またはソース、またはそれを呼び出したいもの)を同時に使用することです。 IO乗算(Hubertはこれについては正しかった。常にソースボリュームを使用しないことで簡単に防ぐことができる)。

LVMに1つのマスターOSインストールがあり、そのスナップショットを4回行う場合、個々のスナップショットボリュームにのみ書き込みを行っているため、IOペナルティはほとんどありません。もちろん、 、それは無料ではありませんが、他のファイルシステムや仮想ディスクでのスナップショットの他の形式でもありません。常にどこかにコストがかかります。

Hubertが正しいもう1つのことは、スナップショットのサイズについて考える必要があるということです。スナップショットボリュームが書き込みを継続できることを確認する必要があります。フルスナップショットボリュームは物事をひどく壊します。これを防ぐためのフェイルセーフな方法は、スナップショットボリュームをソースボリュームと同じサイズ(またはそれ以上)にすることです。ただし、この方法では、使用するディスク容量を減らすメリットが失われます。

Qemuイメージもスナップショット対応であることをご存知ですか?

4
wzzrd

KVMストレージ用にLVMを試していませんでしたが、Sambaのシャドウボリューム機能に使用しました。1つだけ言えることがあります。パフォーマンスがひどいものでした。

スナップショットごとに、追加の書き込みが必要です。ベーススナップショットボリュームが1つとスナップショットが4つある場合、ベースボリュームに書き込むときに、ドライブに送られる書き込みの量は5倍になります。

特定の質問については:

  • LVMは、スナップショットが行われている間、ファイルシステムをフリーズします(書き込みの停止、キャッシュのフラッシュ、スナップショットの実行、書き込みの再開)。
  • 私が言ったように、それは非常に遅いです
  • はい、ベースボリュームが破損すると、すべてのスナップショットが使用できなくなります。さらに、スナップショットデルタに割り当てられたスペースが不足すると、スナップショットもホースされます。
  • はい、スナップショットを撮ることができます

残念ながら、スナップショットでうまく機能することがわかっているシステムはNetApp WAFL、ZFS、btrfsの3つだけです。システムが重要でない場合は、btrfsを試してみる価値があります。

4
Hubert Kario

シンプロビジョニングされたLVMは、この2019年のこのシナリオの主要なオプションと見なされます。

シンLVのパフォーマンスは良好であり、個別のボリュームのように機能するため、スナップショットが作成されると、オリジナルの注意と整合性について心配する必要はありません(スナップショットに影響を与えることなく、破損、削除などが可能です)。

OPの懸念である"スナップショットは実際のスペースをほとんど消費しません"は、各スナップショットに対してスペースがモノリシックな方法で事前に割り当てられる必要があるため、従来のLVMでは実際には満足されません。ただし、シンLVはスパースファイルのように割り当てられ、実際にはほとんどスペースを取りません。

シンプロビジョニングのトレードオフは、シンプールの使用可能なスペースを、ファイルシステムのように監視して、いっぱいにならないようにする必要があることです。 Linuxディストリビューションには通常、これを監視し、警告を送信したり、シンプールがほぼフル状態に達したときにアクションを実行したりするためのデーモンがあります。

2
tasket

私は、ZFSは一撃の価値があると言えるでしょう。ファイバー、iscsiなどの何らかのディスクによってサポートされたNexentaベースのシステムをかなり簡単にセットアップでき、パフォーマンスはかなり良好です。仮想化サーバーがダウンした場合に簡単なリカバリシナリオが得られるため、パフォーマンスが絶対的に重要ではない場合は、ローカルストレージよりもこのアプローチをお勧めします。

0
MattyB