GCEインスタンスにおいてCloud Shell操作のみでスナップショットからリストアさせるには


概要

運用しているサーバが急にクラッシュなどを引き起こし、復旧させたい。
前提条件として、定期スナップショットを取得していること。

目標

  • インスタンス自体は変更せず、スナップショットから永続ディスクを作成し、インスタンスへディスクを差し替え、復旧させる
  • Cloud Shellからの操作で行う

環境

  • google compute engine(GCE)
  • CentOS 7
  • Cloud Shell

手順

1. Cloud Shellの実行

GCPのCloud ConsoleからCloud Shellを起動するには、Console画面右上の [Cloud Shell をアクティブにする] ボタンを使用します。*画像の赤丸の箇所

2. インスタンスの停止

ディスクの差し替えを行うので、インスタンスは停止する必要があります。

$ gcloud compute instances stop [INSTANCE_NAMES]

3. スナップショットから新しいディスクに復元

復元したいスナップショットを確認します。

$ gcloud compute snapshots list

#発行例
NAME        DISK_SIZE_GB  SRC_DISK                      STATUS
snapshot-1  30            us-west1-a/disks/server01     READY

復元したいスナップショットが確認できたら、スナップショットから永続ディスクを作成します。

$ gcloud compute disks create [DISK_NAME] \
    --size [DISK_SIZE] \
    --source-snapshot [SNAPSHOT_NAME] \
    --type [DISK_TYPE]

#発行例
$ gcloud compute disks create server02 \
    --size 30 \
    --source-snapshot snapshot-1 \
    --type pd-standard

4. インスタンスから既存のディスクをデタッチする

以下のコマンドよりインスタンスから既存ディスクをデタッチします。

*公式リファレンスでは、ディスクをアンマウントせずにディスクを取り外すと、I / O操作が不完全になりデータが破損する可能性がありますと記述されていますので、注意が必要。
今回はクラッシュを引き起こしサーバにSSH接続すらできない状態を想定しているため、無視します(笑)

$ gcloud compute instances detach-disk [INSTANCE_NAME] \
    --disk [DISK_NAME]

5. 新しいディスクを既存のインスタンスへアタッチする

以下のコマンドより作成したディスクをインスタンスにアタッチします。

$ gcloud compute instances attach-disk [INSTANCE_NAME] \
    --disk [DISK_NAME]

6. インスタンスの起動

以下のコマンドよりインスタンスを起動し、完了です。

$ gcloud compute instances start [INSTANCE_NAMES]