スナップショット二つの方式
目標
qcow2の内部スナップショットと外部スナップショットをどちらも作ってみて、2つの方式の違いを、実際のファイル構造で確認します。
なぜ重要なのか
内部スナップショットは、ファイル1つで管理できて便利ですが、バックアップが難しいです。元がずっと変わり続けるからです。外部スナップショットは、現在のイメージをバッキングにする新しいオーバーレイを作って、元をその時点で凍結させます。そのため、バックアップツールが元を安全にコピーでき、これが実務のバックアップワークフローの標準です。元に戻すのも、オーバーレイを捨てるだけで終わるので単純です。その代わり、ファイルが増え、チェーンの管理が必要です。
注意: VMが実行中のときに、qemu-imgでイメージに触ってはいけません。このラボは、停止した状態でのみ進めます。
ステップ
/root/snapディレクトリを作成し、/root/snap/disk.qcow2を1Gのqcow2として作成してください。before-upgradeという名前の内部スナップショットを作成してください。- スナップショットの一覧を
/root/snap/list1.txtに保存してください。before-upgradeが見える必要があります。 after-patchとrollback-pointの2つをさらに作成し、一覧を/root/snap/list3.txtに保存してください。スナップショットがちょうど3つである必要があります。before-upgradeスナップショットを適用(元に戻す)し、そのコマンドの終了コードを/root/snap/applied.txtにrc=0の形式で書いてください。after-patchスナップショットを削除し、残った一覧を/root/snap/list2.txtに保存してください。スナップショットがちょうど2つである必要があります。- 外部スナップショットを作成してください。
disk.qcow2をバッキングにする/root/snap/disk.ext1.qcow2を作成し、バッキングチェーンの出力を/root/snap/chain.txtに保存してください。 /root/snap/compare.txtを次の4行で作成してください。INTERNAL_COUNT=<6번 이후 남은 내부 스냅샷 개수>/EXTERNAL_FILES=2/BACKUP_FRIENDLY=external/ROLLBACK_INTERNAL=-a(プレースホルダーは、ステップ6のあとに残った内部スナップショットの数です)
参考
qemu-img snapshot -c <이름> <파일>/-l/-a <이름>/-d <이름>の4つで、内部スナップショットは終わりです(プレースホルダーは名前とファイル名です)。- 外部スナップショットは
qemu-img create -f qcow2 -b <현재이미지> -F qcow2 <새오버레이>です(プレースホルダーは現在のイメージと新しいオーバーレイです)。 -lの出力にはヘッダー行が2行あるので、数えるときは除外してください。- よくある間違い1: ステップ6で
-dの代わりに-aを使う場合です。削除ではなく適用になります。 - よくある間違い2: ステップ7でオーバーレイではなくバッキング側を消すと、チェーンがまるごと壊れます。
ラボ用イメージの準備
/root/snapディレクトリを作成し、/root/snap/disk.qcow2を1Gのqcow2として作成してください。
前のラボとは別の新しいイメージを使ってください。サイズは小さくてもかまいません。
内部スナップショットの作成
before-upgradeという名前の内部スナップショットを作成してください。
qemu-img snapshotの-cが作成です。名前を引数として渡します。
スナップショットの一覧
スナップショットの一覧を/root/snap/list1.txtに保存してください。before-upgradeが見える必要があります。
-lは、ID、TAG、サイズ、時刻を表にして見せます。ヘッダー行があるので、数えるときは注意してください。
複数の時点を作る
after-patchとrollback-pointの2つをさらに作成し、一覧を/root/snap/list3.txtに保存してください。スナップショットがちょうど3つである必要があります。
同じコマンドを、名前だけを変えて繰り返せばよいです。一覧に3つ見える必要があります。
スナップショットを元に戻す
before-upgradeスナップショットを適用(元に戻す)し、そのコマンドの終了コードを/root/snap/applied.txtにrc=0の形式で書いてください。
-aは、指定したスナップショットの時点にイメージの内容を戻します。一覧自体は残ります。
スナップショットの削除
after-patchスナップショットを削除し、残った一覧を/root/snap/list2.txtに保存してください。スナップショットがちょうど2つである必要があります。
-dで1つを消すと、一覧から消えます。残りの数を確認してください。
外部スナップショットを作る
外部スナップショットを作成してください。disk.qcow2をバッキングにする/root/snap/disk.ext1.qcow2を作成し、バッキングチェーンの出力を/root/snap/chain.txtに保存してください。
現在のイメージをバッキングにする新しいオーバーレイを作ることが、そのまま外部スナップショットです。
2つの方式の比較表
/root/snap/compare.txtを次の4行で作成してください。
INTERNAL_COUNT=<6번 이후 남은 내부 스냅샷 개수> / EXTERNAL_FILES=2 / BACKUP_FRIENDLY=external / ROLLBACK_INTERNAL=-a(プレースホルダーは、ステップ6のあとに残った内部スナップショットの数です)
値は、前のステップで実際に確認したものである必要があります。バックアップとの相性は、元が固定されるかで判断してください。