カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

Windows ServerにアタッチしたEBSを停止せずにサイズ変更してみる

かなり今更なのですが、
EC2にアタッチしたEBSのサイズを変更する場合、てっきり一度停止しないといけないと思っていたのですが、
以下のブログを見つけて停止せずとも変更ができると知ったので実際に試してみます。

dev.classmethod.jp

対象のEC2は過去に構築したWindows Server 2016を使用します。

手順自体は以下のAWSブログを参考に実施していきます。
aws.amazon.com


実施作業

現在のサイズ確認

最初に現在のEC2にアタッチされているEBSとそのデータサイズについて確認します。
f:id:live-your-life-dd18:20200421120019p:plain


CドライブにアタッチしたEBSのストレージタイプはgp2でサイズは50GB、DドライブにアタッチしたEBSのストレージタイプはst1でサイズは500GBにしています。
このそれぞれのデータサイズを変更します。
f:id:live-your-life-dd18:20200421120205p:plain


ちなみにエクスプローラーで確認すると以下のようになっています。
f:id:live-your-life-dd18:20200421120440p:plain

※作業の実施前に変更のロールバックを想定し、対象のEBSのスナップショットを取得をお勧めします※

Dドライブ(st1、500GB)のサイズ変更(コンソール作業)

まず最初はDドライブにアタッチしているEBSのデータサイズから変更します。
f:id:live-your-life-dd18:20200421120547p:plain


やりかたは簡単で、マネジメントコンソール上で対象のEBSを選択して、アクションからボリュームの変更をクリックします。
f:id:live-your-life-dd18:20200421120715p:plain


すると以下のような画面が出てきます。
f:id:live-your-life-dd18:20200421120905p:plain


ボリュームタイプのリストを選択することで、タイプも変更することができますが、今回は割愛します。
f:id:live-your-life-dd18:20200421120946p:plain


サイズの項目を500→600に変更して、問題なければ変更ボタンを押下します。
f:id:live-your-life-dd18:20200421121102p:plain


変更してよいか確認する画面が出てくるので、確認してはいボタンを押下します。
f:id:live-your-life-dd18:20200421121254p:plain


ボリュームの変更リクエストが送信できました。
f:id:live-your-life-dd18:20200421121406p:plain


ボリュームのステータスは変更、最適化と遷移します。
※ここの最適化の部分で思ったよりも時間がかかりました。(100GBで大体10分程度)
f:id:live-your-life-dd18:20200421121541p:plain


in-useとなれば変更は完了です。
f:id:live-your-life-dd18:20200421122101p:plain


これだけではEBSのサイズを変更しただけなので、次は追加したサイズ分をWindows側で適用する作業を行っていきます。
f:id:live-your-life-dd18:20200421122229p:plain

Dドライブ(st1、500GB)のサイズ変更(Windows作業)

Windowsの検索でdiskmgmt.mscを入力してEnterキーを押下します。
f:id:live-your-life-dd18:20200421131835p:plain


ディスクの管理画面が開くので、操作項目からディスクの再スキャンをクリックします。
f:id:live-your-life-dd18:20200421221130p:plain


追加した100GB分が未割り当てになっていることがわかります。
f:id:live-your-life-dd18:20200421221304p:plain


サイズを拡張するボリュームで右クリックし、ボリュームの拡張を選択します。
f:id:live-your-life-dd18:20200421221559p:plain


ボリュームの拡張ウィザードが開始されます。
f:id:live-your-life-dd18:20200421221715p:plain


次の画面で拡張するサイズを指定します。
f:id:live-your-life-dd18:20200421222202p:plain


設定内容を確認して、完了ボタンを押下します。
f:id:live-your-life-dd18:20200421222238p:plain


Dドライブにマウントしているボリュームのサイズが増えたことがわかります。
f:id:live-your-life-dd18:20200421222316p:plain


エクスプローラー上で確認しても、想定通り100GB増えたことが確認できました。
f:id:live-your-life-dd18:20200421222407p:plain

Cドライブ(gp2、50GB)のサイズ変更(コンソール作業)

次はCドライブにマウントしているEBSのサイズを拡張します。
ただ拡張するだけだとDドライブの時と変わらないので、今度は拡張時にCドライブ内に書き込みがあった場合、正常に書き込みが実施されるのかを併せて確認してみます。
f:id:live-your-life-dd18:20200421222624p:plain


Cドライブはサイズを50GBから100GBに変更しました。
f:id:live-your-life-dd18:20200421222807p:plain


ステータスが変わり変更処理が開始されていることがわかります。
f:id:live-your-life-dd18:20200421222903p:plain


しばらくするとステータスがin-useに変わりました。
※こちらはたった50GBの追加なのに1時間と少しかかりました
f:id:live-your-life-dd18:20200421233712p:plain

Cドライブ(gp2、50GB)のサイズ変更(Windows作業)

Dドライブの時と同じようにRDPでログインして、ディスクの管理から未割り当て領域が50GB増えていることを確認します。
f:id:live-your-life-dd18:20200421234037p:plain


ボリュームの拡張ウィザードを開き、拡張するサイズを指定します。
f:id:live-your-life-dd18:20200421234150p:plain


最後に完了ボタンを...押下する前にCドライブへのデータの書き込み処理を走らせておきます。
f:id:live-your-life-dd18:20200421234243p:plain


今回はCドライブ上に構築されたSQL ServerのDBに10万近いデータを追加する処理を実行後、拡張を実施してみます。
f:id:live-your-life-dd18:20200421234537p:plain


結果、サイズ拡張もデータの追加も正常に完了したところを見ると、特に拡張の間に書き込みが止まったりエラーが発生したりはしないようです。
f:id:live-your-life-dd18:20200421234734p:plain
f:id:live-your-life-dd18:20200421234805p:plain

感想及び所感

以前実施したEC2のインスタンスタイプの変更では流石に一度停止する必要がありましたが、EBSのストレージタイプの変更やサイズ拡張であれば停止しなくても済むのは良いですね。

capybara-engineer.hatenablog.com

作業の途中でステータスが変更されるのに1時間以上かかった箇所がありましたが、調べてみると状態が最適化であれば拡張の作業自体はできるようですね。(変更→最適化と状態が遷移するので)
拡張後の最適化の処理が最大でも24時間かかるようなので、とりあえず拡張処理だけしておいて最適化の完了は翌日に確認するとかでも問題なさそうです。