web-dev-qa-db-ja.com

VMの状態

virsh save vm_name memdump、次にvirsh restore memdumpは、(実行中)VM大丈夫です)を復元します。

ただし、a VMはvirsh saveの後にシャットオフされます。KVM VMの「ライブ」バックアップおよび復元スクリプトを作成しているので、 VMバックアップ後に実行する必要があるバックアップ部分です。バックアップの直後にvirsh restore memdumpを実行することは問題ありませんが、本質的に不要であることがわかります-できるはずですVMを一時停止し、メモリをファイルに保存してから、VMを再開/一時停止解除するだけです。

これは、メモリがほとんどないVMの問題ではありませんが、VMにかなりの作業メモリがある場合、バックアップが不必要に長くなります。

残念ながら、最初にvirsh suspendを実行しても、virsh saveの前に、VMはシャットオフされます。

これを行う方法はありますか? (つまり、一時停止、保存、一時停止解除)

3
LetMeSOThat4U

まず、@ dyasnyに完全に同意します。「full VM state(aka。withmemory)」の妥当なユースケースを見つけるのは困難です。

ただし、VMを破棄せずに「virsh save vm_name memdump」が本当に必要な場合は、

virsh snapshot-create-as  ${domain} ${fake_snap} 'save vm while keep running' \
 --no-metadata --atomic --live \
 --memspec  ${path_to_mem_dump_file},snapshot=external

幸運を :)

========更新中:(返信として投稿するには長すぎます)===============

ああ、多分これは私の冗長性です、「フルVM状態」== mem_state + disk_state、「mem_state」== 'vm物理メモリ' + 'vm cpuレジスタ' + 'vmデバイス状態ハイパーバイザーで」。

したがって、「virsh save」と「virsh store」は安全です。「ラップトップスリープ」と同じように「保存/復元」します。通常、vmを「復元」した後もアプリは引き続き実行されます。 。

「mem_state」と「disk_state」が同期していない場合は災害です。そのため、「virshsave」は「savemem」の後に「destroy」を強制します。

私の「virsh save without destroy」は実際には「フルVMバックアップ」であり、disk_snapshotは元のqcow2内に隠されています。したがって、「mem_state」が表示されます。

3
grizzlybears

VMに大量のメモリがある場合、それを保存すると、いずれにせよ、memstateの保存に多くの時間が費やされることになります。

完全な状態をバックアップするハード要件がない場合VM状態(通常は冗長であるため、時差のために復元するとエラーが発生し、クラッシュにつながる可能性もあります) 。

通常、VMは次のようにバックアップされます。

  1. VMのファイルシステムの静止
  2. VMのディスクのライブスナップショットを作成します
  3. ディスクとVMの構成をバックアップします(virsh dumpxml VM
  4. ディスクをライブマージしてスナップショットを消去

さて、kvmでトリッキーかもしれない唯一の部分は最後の部分です。現在のディストリビューションではblockpullを使用して一種のサポートを提供していますが、スナップショットをベースイメージにマージしません。逆の処理を行います。ベースからスナップショットにデータをプルするので、ベース。より良いコマンドはblockcommitで、変更されたビットをスナップショットからベースイメージにプッシュしますが、非常に最新のEdgeディストリビューションでのみ使用できます。 RHEL 7.1になることを願っています。

2
dyasny