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はシャットオフされます。
これを行う方法はありますか? (つまり、一時停止、保存、一時停止解除)
まず、@ 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」が表示されます。
VMに大量のメモリがある場合、それを保存すると、いずれにせよ、memstateの保存に多くの時間が費やされることになります。
完全な状態をバックアップするハード要件がない場合VM状態(通常は冗長であるため、時差のために復元するとエラーが発生し、クラッシュにつながる可能性もあります) 。
通常、VMは次のようにバックアップされます。
virsh dumpxml VM
)さて、kvmでトリッキーかもしれない唯一の部分は最後の部分です。現在のディストリビューションではblockpull
を使用して一種のサポートを提供していますが、スナップショットをベースイメージにマージしません。逆の処理を行います。ベースからスナップショットにデータをプルするので、ベース。より良いコマンドはblockcommit
で、変更されたビットをスナップショットからベースイメージにプッシュしますが、非常に最新のEdgeディストリビューションでのみ使用できます。 RHEL 7.1になることを願っています。