LoginSignup
3
0

More than 3 years have passed since last update.

EC2のルートボリューム交換を試す。

Posted at

はじめに

先日、EC2のルートボリュームをインスタンス停止無しで復元できる機能が公開されました。

通常は以下の様にインスタンスを停止してデタッチ・アタッチで交換しますが、ルートボリュームをインスタンス停止無しで復元できるってどうやっているんだ?っていうことでどういう動作をしているのか確認してみました。

検証準備

今回はインスタンス2台で検証してみようと思います。

1台はルートボリューム交換を試すためのインスタンス、もう1台はボリューム交換するインスタンスからsyslogを受け取ってログ確認するためのインスタンスを準備してみます。

syslog転送設定

syslog転送を行うための設定を行います。

送信側syslogは全てのシステムログを転送するため、「### RULES ###」直下に記載しておきます。

受信側syslog設定
$ModLoad imudp
$UDPServerRun 514
送信側syslog設定
#### RULES ####
*.* @[受信側インスタンスのIPアドレス]:514

セキュリティグループ設定

今回は検証なので適当に。

タイプ プロトコル ポート範囲 ソース
カスタムUDP UDP 514 0.0.0.0/0

ルートボリューム交換検証

ルートボリュームの交換はAWSマネジメントコンソールのEC2から「インスタンス」→「アクション」→「モニタリングとトラブルシューティング」→「ルートボリュームを置き換える」から行います。

capture_01052021_104510.jpg

次の画面でルートボリューム置き換え先のスナップショットを指定して「置き換えタスクを作成」を選択します。

スナップショットを指定しない場合は使用AMIのデフォルトに戻るようです。

capture_01052021_105015.jpg

ちなみにコマンドで実行する場合は以下コマンドとなります。

コマンドからのルートボリューム交換
aws ec2 create-replace-root-volume-task --instance-id [インスタンスID] [--snapshot-id [スナップショットID]]

検証結果

ログを見たところ、やはり無停止でルートボリューム交換を行っているわけでは無く、一度停止を行ってから交換後のボリュームで起動させるような動作を行っているようです。

ルートボリューム交換実施時にpingも送信してみましたが、大体40秒程度応答がありませんでした。

交換後のボリュームは、ルートボリューム交換の実行を行ったタイミングで新たに作成されるようなので、以下の様な作業を実施していると考えられます。

  1. ルートボリューム置き換えタスク作成
  2. 交換後ボリューム作成
  3. インスタンスの停止
  4. 交換前ルートボリュームのデタッチ
  5. 交換後ルートボリュームのアタッチ
  6. インスタンスの起動

上記の動作だけ見れば、通常のボリューム交換作業とあまり変わりがありませんが、利点としてEC2インスタンスの状態としてはルートボリューム交換実施時も「実行中」状態となっており、停止状態に切り替わることはありませんでした。

そのため、EIPの設定を行わないとインスタンス停止時に変わってしまうグローバルアドレスも、今回のルートボリュームの交換ではアドレスが変更されることもありませんでした。

以下ルートボリューム交換時に出力されたログです。

ルートボリューム交換実施時の出力ログ
May  1 02:14:13 ip-172-21-0-34 systemd: Received SIGINT.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopped target Timers.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopping Timers.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopping Session 8 of user root.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopped target Cloud-init target.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopping Cloud-init target.
May  1 02:14:13 ip-172-21-0-34 systemd: Removed slice system-selinux\x2dpolicy\x2dmigrate\x2dlocal\x2dchanges.slice.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopping system-selinux\x2dpolicy\x2dmigrate\x2dlocal\x2dchanges.slice.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopping Session 2 of user ec2-user.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopped Execute cloud user/final scripts.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopping Execute cloud user/final scripts...
May  1 02:14:13 ip-172-21-0-34 systemd: Removed slice system-ec2net\x2difup.slice.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopping system-ec2net\x2difup.slice.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopped Dump dmesg to /var/log/dmesg.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopping Dump dmesg to /var/log/dmesg...
May  1 02:14:13 ip-172-21-0-34 systemd: Stopped target rpc_pipefs.target.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopping rpc_pipefs.target.
May  1 02:14:13 ip-172-21-0-34 systemd: Unmounting RPC Pipe File System...
May  1 02:14:13 ip-172-21-0-34 systemd: Stopped target Graphical Interface.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopping Graphical Interface.
May  1 02:14:13 ip-172-21-0-34 systemd: Stopped target Multi-User System.

後片付け

ルートボリューム交換前のボリュームが残ってしまうので、不要となるボリュームは削除しましょう。

おわりに

ボリュームのデタッチ・アタッチなどの操作を行わずに、ボタン一発で指定のスナップショットや初期AMIの状態に戻せるのは良いですね。

アドレス変更等されることもないため、調査目的だけではなく、他の用途にも使えるかなと感じました。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0