Compute Engineのスナップショット、マシンイメージ、カスタムイメージの違い

記事タイトルとURLをコピーする

G-gen の杉村です。Google Cloud の仮想サーバーサービスである Compute Engine には、スナップショット、マシンイメージ、カスタムイメージというよく似た3つの機能があります。それらの違いと、ユースケースをご説明します。

はじめに

Compute Engine は、Google Cloud(旧称 GCP)で仮想サーバーを起動するためのサービスです。仮想ネットワークである Virtual Private Cloud(VPC)内に、各種 Liniux ディストリビューションや Windows Server の仮想サーバーを起動することができます。

詳細な解説は、以下の記事をご参照ください。

マシンの状態を保存する3つの仕組み

Compute Engine には、スナップショットマシンイメージイメージ(カスタムイメージ)というよく似た3つの機能があります。

これらはいずれも、仮想マシン(VM)のある時点の状態を取得して保存するための機能ですが、役割とユースケースが異なります。

名称 用途 保存される情報
スナップショット 永続ディスクのバックアップ ・1つの永続ディスクのデータ
マシンイメージ VM のバックアップ ・VM に接続されているすべての永続ディスクのデータ
・マシンタイプ
・インスタンスメタデータ
・ラベル
・ネットワークタグ
・メンテナンスポリシー
イメージ (ユーザーが
独自に作る場合カスタムイメージ)
VM 起動用イメージ ・1つの永続ディスクのデータ
・イメージファミリー(バージョン)
・ファームウェア関連の設定情報

スナップショット

基本的な機能

スナップショットは、ある単一の永続ディスクの、ある時点のデータを保存したイメージファイルです。

スナップショットの用途は、単一の永続ディスクのバックアップです。

スナップショットの取得を実行すると、前回にスナップショットを取得してからの増分データのみをバックアップ(増分バックアップ)します。またデータは自動的に圧縮されるため、ディスクの完全なコピーをバックアップとして作成するよりも高速、かつ低コストでバックアップを実現できます。

増分バックアップ

Compute Engine のスナップショットでは、増分バックアップが行われます。

初回にフルバックアップが取得され、2回目以降は、前回のバックアップ取得時から変更されたデータのみが取得されます。

フルバックアップのスナップショットや、他のスナップショットに依存されているデータを持ったスナップショットを削除したとしても、必要なデータは自動的に次のスナップショットに移行されます。そのため、スナップショットを削除するときは「どのスナップショットがフルでどのスナップショットが増分なのか」「どのスナップショットにいつのデータが保存されているのか」といったことを気にする必要はありません。

この仕組みは、後述のマシンイメージでも同様です。

Web コンソール上の表記

Google Cloud コンソール上は、Compute Engine の左部メニューで「スナップショット」と表記されています。この画面からスナップショットやスナップショットスケジュールを管理できます。

スナップショット

保存先のロケーション

スナップショットは、Google Cloud の堅牢なストレージである Cloud Storage に保存されます。この Cloud Storage は、Google がバックエンドで管理しているものであり、私たちユーザーからは見えません。

スナップショットを作成する際、ストレージロケーションとして特定のリージョン(東京、アイオワなど)を選択するか、またはマルチリージョン(US、ASIA、EU など)を選択することができます。なおリージョンやマルチリージョンを総称してロケーションと呼びます。

マルチリージョンをロケーションとして選択すると、より高い堅牢性と可用性が得られます。ただしストレージ料金単価が単一リージョンよりも高くなるのと、リージョン間のデータのネットワーク転送コストが発生します。金銭コストと、堅牢性および可用性のトレードオフを考慮して、ロケーションを選択してください。

また、ディスクと異なるロケーションにスナップショットを保存することができます。このときも、リージョン間のデータ転送料金が発生します。

3種類のスナップショット

スナップショットにはスタンダード(標準)、アーカイブインスタント(即時)の3種類があり、以下のような性質を持っています。

比較観点 - - - - - - -
リストア速度 [速い] インスタント > スタンダード > アーカイブ [遅い]
コスト [高い] インスタント > スタンダード > アーカイブ [安い]
冗長性 [高い] アーカイブ = スタンダード > インスタント [低い]

スタンダード(標準)スナップショット

スタンダード(標準)スナップショットは最も基本的なスナップショットです。

通常のディスクバックアップは、スタンダードで取得することが推奨されます。

アーカイブスナップショット

アーカイブスナップショットは、スタンダードスナップショットよりもリストアにかかる時間が長く、また90日間の最低保管期間が発生します。

スナップショットの保存料金は日割りですが、アーカイブスナップショットを最低保管期間より短い期間で削除すると、最低保管期間分の料金が発生します。

インスタント(即時)スナップショット

インスタント(即時)スナップショットは、最も短いリストア時間でリストアすることができるスナップショットです。インスタントナップショットでは、スナップショットが作成された後に元ディスクで変更されたデータ量に対して保管料金が発生します。保管料金の単価は、元ディスクの料金単価と同じです。また、インスタントスナップショットの作成時にワンショットのオペレーション費用が発生します。

またインスタントスナップショットの保管ロケーションは対象ディスクと同じロケーションしか選べないことや、対象ディスクを削除するとスナップショットも削除されること、といった特徴があります。このことから、インスタントスナップショットは論理障害(データの誤削除や誤変更等)に対応するための、クイックさを重視したバックアップといえます。

定期的な取得

スナップショットスケジュール機能を使用することで、スナップショットを定期的に取得することができます。スナップショットスケジュールは、Web コンソール画面や gcloud コマンドラインで簡単に作成することができます。

ただし、スナップショットスケジュールが対応しているのはスタンダードスナップショットのみであり、インスタントスナップショットやアーカイブスナップショットは取得できません。

データの整合性

スナップショットは、クラッシュ整合性でデータを保存します。クラッシュ整合性では、ソフトウェアがディスクに読み書きをしている途中でスナップショットを取得したり、メモリの内容が完全にディスクに書き込まれていない瞬間にスナップショットを取得してしまうと、データの整合性に不都合が起きる可能性があります。

安全なバックアップのためにはソフトウェアを停止するか、VM を停止してからバックアップを取得することが望ましいといえます。

また明示的に、アプリケーション整合性のあるスナップショットの取得も行うことができます。アプリケーション整合性では、メモリの内容をすべてディスクに書き出し、ディスク I/O が完了してからスナップショットを取得するため、前述のような問題は起きません。

アプリケーション整合性のあるスナップショット取得を行うためには、Windows Server では VSS 機能、Linux サーバーでは独自のシェルスクリプトを追加で設定する必要があります。

料金

スタンダードスナップショットやアーカイブスナップショットの料金は、圧縮後のデータサイズに対して発生します。

リージョン標準スナップショットの料金は、2024年9月現在、以下のとおりです。最新の料金は必ず、公式ドキュメントを参照してください。

リージョン 単価
アイオワ(us-central1) $0.05 / GB
東京(asia-northeast1) $0.064 / GB

インスタントスナップショットでは、前述の通り、スナップショットが作成された後に元ディスクで変更されたデータ量に対して保管料金が発生します。保管料金の単価は、元ディスクの料金単価と同じです。また、インスタントスナップショットの作成時にワンショットのオペレーション費用が発生します。

保管先としてマルチリージョンを選択した際や、ディスクと異なるロケーションを選択した場合は、スナップショット作成時やリストア時にネットワーク転送料金が発生します。

マシンイメージ

基本的な機能

マシンイメージは、ある VM のある時点のデータやメタデータ、各種設定情報を保存したイメージファイルです。

マシンイメージの用途は、VM 全体のバックアップです。また、VM をまるごと複製してクローンを作成したい場合にも利用できます。

マシンイメージの取得を実行すると、スナップショットと同様に、前回の取得からの増分データのみがバックアップされる増分バックアップが行われ、データは自動的に圧縮されます。対象の VM にアタッチされているすべての永続ディスクのデータが、同時に取得されます。

前述のスナップショットが単一の永続ディスク内のデータのみをバックアップする点とは異なり、マシンイメージには以下の情報が含まれます。

  • VM にアタッチされているすべての永続ディスクのデータ
  • VM の以下の情報
    • 説明(description)
    • マシンタイプ
    • インスタンスメタデータ
    • ラベル
    • ネットワークタグ
    • メンテナンスポリシー
    • Unified Extensible Firmware Interface(UEFI)の変数
  • ボリュームマッピング(ローカル SSD / 永続ディスク)

マシンイメージを利用すると、スナップショットでは保存されない上記のような情報を保持できるため、VM 全体のバックアップとしてはマシンイメージを使うことが推奨されます。

Web コンソール上の表記

Google Cloud コンソール上は、Compute Engine の左部メニューで「マシンイメージ」と表記されています。後述のカスタムイメージ(イメージ)を管理する画面である「イメージ」と紛らわしいですが、VM のバックアップであるマシンイメージの表記は「マシンイメージ」です。

マシンイメージ

保存先のロケーション

スナップショットと同様に、マシンイメージも、保存先のロケーションを特定リージョンまたはマルチリージョンから選択できます。

VM と異なるロケーションを選択したり、マルチリージョンを選択すると、ネットワーク転送料金が発生する点はスナップショットと同様です。

定期的な取得

マシンイメージを自動的に取得する仕組みは、基本機能としては用意されていません。

Cloud Run functions や Cloud Workflows を用いて、ユーザーが実装することができます。

以下の記事も参考にしてください。

データの整合性

マシンイメージで確保される整合性はクラッシュ整合性です。VM を起動したままマシンイメージを取得する場合は、アプリケーションの稼働が低いタイミングで実施することが推奨されます。

マシンイメージを取得すると、すべてのディスクのデータが同じタイムスタンプで取得されるため、複数ディスク間でのデータ整合性は保たれます。

料金

マシンイメージの料金は、圧縮後のデータサイズに対して発生します。

マシンイメージの保管料金は、2024年9月現在、以下のとおりです。最新の料金は必ず、公式ドキュメントを参照してください。

リージョン 単価
アイオワ(us-central1) $0.05 / GB
東京(asia-northeast1) $0.065 / GB

スナップショットと比較すると、ほぼ同額がわずかにマシンイメージのほうが単価が高いです(アイオワリージョンでは同額、東京リージョンで は $0.001 / GB の差)。

スナップショットと同様に、マルチリージョンを選択した際や、ディスクと異なるロケーションをマシンイメージの保存先として選択した場合は、マシンイメージの作成時やリストア時にネットワーク転送料金が発生します。

イメージ(カスタムイメージ)

基本的な機能

カスタムイメージは、VM のブートディスクとするためのイメージファイルです。

カスタムイメージの上位概念としてイメージ(または OS イメージ)があり、イメージには公開イメージカスタムイメージの2種類があります。

VM を新規作成する際に、Debian やUbuntu、Windows Server 等の各メーカーが公開しているオフィシャルなイメージを選択することがありますが、これらは公開イメージと呼ばれます。

一方で、ユーザーがカスタマイズした VM のブートディスクからスナップショットを取得し、そこから作成したイメージがカスタムイメージです。

VM 起動時に、ブートディスクとして公開イメージやカスタムイメージを選択できます。前述のスナップショットもブートディスクとして選択することはできますが、イメージは特にブートディスクの管理に特化したリソースです。

VM 起動時にブートディスクとして選択できる

また、VM の起動設定を定義するインスタンステンプレートでもブートディスクを選択しますが、選択できるのはイメージのみであり、スナップショットは選択できません。インスタンステンプレートはオートスケーリングを実装するときに用いるマネージドインスタンスグループ(MIG)の設定に必要です。

このように、イメージは VM のゴールデンイメージ(雛形イメージ)とするための専用リソースです。

Web コンソール上の表記

Google Cloud コンソール上は、Compute Engine の左部メニューで「イメージ」と表記されています。前述の「マシンイメージ」と表記が似ている点に注意が必要です。この画面から、公開イメージとカスタムイメージの両方を確認できます。

イメージ(公開イメージとカスタムイメージ)

保存先のロケーション

カスタムイメージでは、保存先のロケーションを特定リージョンまたはマルチリージョンから選択できます。

スナップショットやマシンイメージと異なり、カスタムイメージの作成時やカスタムイメージから VM の作成をする際に、ロケーションが異なっても、ネットワーク転送料金は発生しません。

イメージファミリー

イメージファミリーは、関連するイメージをグルーピングするためにイメージに付与するタグです。例えば、Debian 11 の公開イメージは debian-11 というイメージファミリーになっています。

新規インスタンス作成時に明示的なイメージ名を指定せず、イメージファミリーを指定することで、そのイメージファミリーの最新のイメージからインスタンスを起動することができます。同様に、インスタンステンプレートでも、明示的なイメージ名でなくイメージファミリーを指定できます。

Windows Server のイメージ作成

Windows Server のカスタムイメージを作成する場合、Sysprep を実行することが推奨されます。

Sysprep は Windows OS のイメージ作成のために、マシン固有の情報を削除するための仕組みです。Windows OS のイメージ作成の前に、所定の手順に従って Sysprep を実行します。これを行わないと、特に Active Directory に Windows マシンを所属させたときなどに、複数のマシン間で情報が重複することによる想定外の挙動が発生する可能性があります。

Windows Server が稼働する Compute Engine VM からカスタムイメージを作成する手順については、以下をご参照ください。

料金

カスタムイメージは、保管容量に応じて料金が発生します。なおカスタムイメージは、マシンイメージやスナップショットとは異なり、増分バックアップではなく常にフルバックアップです。

2024年9月現在、カスタムイメージの保管料金は以下のとおりです。最新の料金は公式ページをご参照ください。

リージョン 単価
アイオワ(us-central1) $0.05 / GB
東京(asia-northeast1) $0.065 / GB

杉村 勇馬 (記事一覧)

執行役員 CTO / クラウドソリューション部 部長

元警察官という経歴を持つ現 IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 12資格、Google Cloud認定資格11資格。X (旧 Twitter) では Google Cloud や AWS のアップデート情報をつぶやいています。