スナップショット/リストアパターン#

本構成は従来リージョン向けとなります。
東日本/西日本リージョン3向けは、スナップショット/リストアパターン[東日本/西日本リージョン3向け] を参照ください。

要求事項#

  • FJcloud-O上の仮想サーバにメンテナンス作業(OSのパッチ投入等)を行う前にデータを高速にバックアップし、万一の場合に復旧できるようにしたい
  • 増設ディスクのデータを変更する前に、データを高速にバックアップし、万一の場合に復旧できるようにしたい

本パターンでは、取得した仮想サーバのスナップショットを、取得元の仮想サーバにリストアする例を説明します。

対応するデザインパターン概要#

FJcloud-Oでは、仮想サーバで利用中のシステムディスクや増設ディスクのスナップショットを取得する スナップショット機能 を提供しています。
仮想サーバが起動中/停止中のどちらの状態でも取得可能です。

Note

仮想サーバ起動中のスナップショット取得にはリスクがあります。後述の 注意事項 を参照してください。

スナップショットのデータは、以下のようにリストアできます。

スナップショット リストア先 リストア手段
(API)
リストア手段
(IaaSポータル)
リストア概要
システムディスクのスナップショット 元の仮想サーバ 提供済 スナップショットの取得元の仮想サーバのシステムストレージにリストア
新規仮想サーバ 提供済 提供済 仮想サーバ作成時に、設定項目の "仮想サーバのブートソース" に "ストレージスナップショット" を指定して、新しいストレージにリストア
増設ディスクのスナップショット 元のストレージ 提供済 スナップショットの取得元のストレージにリストア
新規ストレージ 提供済 提供済 ストレージ作成時に、設定項目の "ストレージソース" 項目に "スナップショット" を指定して、新しいストレージにリストア

Note

スナップショットから新たな仮想サーバを配備される場合や、確実な動作保証が必要な場合は、仮想サーバを停止してからスナップショットを取得してください。

構造(イメージ図)#

スナップショットの取得#

配備された仮想サーバのスナップショットを取得する例を説明します。

image

スナップショットのリストア#

取得した仮想サーバのスナップショットを取得元の仮想サーバにリストアする例を説明します。

image

実装サンプル#

1. スナップショットの取得#

  • スナップショットを作成する仮想サーバを停止します。
  • 「ストレージ」⇒「ブロックストレージ」と選択した画面で、スナップショットを作成するストレージの「アクション」メニューから、 「スナップショット作成」をクリックします。
    どのストレージがどの仮想サーバで使用されているかは、「ブロックストレージ一覧」画面の「接続先」列をご確認ください。
  • 「ストレージスナップショット作成」画面で、「スナップショット名」と「説明」を入力し、「作成」ボタンをクリックします。 「スナップショット名」は、例として "demo_snapshot" とします。
  • 「スナップショット」画面で、新規作成したスナップショットの状態が「available」になっていれば、作成完了です。

2. スナップショットのリストア(元の仮想サーバへリストア)#

(1) 仮想サーバの停止#

スナップショットをリストアする仮想サーバを停止してください。

(2) スナップショットの状態確認#

リストアするスナップショットの状態が "avalible" であることを確認してください。

  • 設定項目(REST API)
項目 設定値例 内容
$SNAP_ID (スナップショットID) 仮想サーバにアタッチされているストレージから取得したスナップショットのID
  • 実行API
    curl -X GET -s $BLOCKSTORAGE/v2/$PROJECT_ID/snapshots/$SNAP_ID -H "X-Auth-Token: $OS_AUTH_TOKEN" | jq .
    

(3) 停止した仮想サーバへリストア#

停止した仮想サーバへリストアしてください。

  • 設定項目(REST API)
項目 設定値例 内容
$SNAP_ID (スナップショットID) 仮想サーバにアタッチされているストレージから取得したスナップショットのID
  • 実行API
    curl -X POST -i $BLOCKSTORAGE/v2/$PROJECT_ID/snapshots/$SNAP_ID/action -H "X-Auth-Token: $OS_AUTH_TOKEN" -H "Content-Type:application/json" -d '{"fcx-restore":""}'
    

(4) リストア状況確認#

スナップショットをリストアした仮想サーバを起動して、リストアされたことを確認してください。

リストアを開始すると、仮想サーバにアタッチされたストレージの状態は "restoring" になります。 スナップショットの状態は、"restoring-snapshot" になります。

リストアが完了すると、仮想サーバにアタッチされたストレージの状態は "in-use" になります。 スナップショットの状態は、"available" になります。

メリット・効果#

スナップショット機能を利用した場合のメリット・効果は以下の通りです。

  • ストレージ単位で高速に丸ごとバックアップ可能
  • 取得したスナップショットからストレージのデータ復元が可能

注意事項#

  • 本パターンは2017年5月時点のFJcloud-O 従来リージョンで動作検証しています。

  • オンライン状態で取得したスナップショットを再利用した場合の動作は保証できません。
    確実な動作を期待するバックアップデータとしたい場合は、仮想サーバが停止状態のときに取得するようにしてください。

  • 起動中の仮想サーバの増設ディスクのスナップショットを取得する際は、仮想サーバのOS上でいったんマウントを外すと、そのディスクへの書き込みを停止した状態でスナップショットを取得できるようになります。
    Linux の場合、sync コマンドを実行後、umount コマンドでディスクをアンマウントします。

  • 実装サンプルのようにスナップショットを元の仮想サーバにリストアした場合は、元の仮想サーバのIDは変わりません。

  • スナップショットから直接仮想サーバイメージは作成できません。

  • スナップショットは、同一AZ内で利用可能です。

  • スナップショットは、スナップショット取得元の仮想サーバ/ストレージ、または、新規の仮想サーバ/ストレージに対してリストアすることができます。
    スナップショットを、スナップショット取得元とは別の既存の仮想サーバ/ストレージにリストアすることはできません。

その他#

  • スナップショットを取得した元のストレージは、スナップショットを削除しないと削除できません。