かなり今更なのですが、
EC2にアタッチしたEBSのサイズを変更する場合、てっきり一度停止しないといけないと思っていたのですが、
以下のブログを見つけて停止せずとも変更ができると知ったので実際に試してみます。
対象のEC2は過去に構築したWindows Server 2016を使用します。
手順自体は以下のAWSブログを参考に実施していきます。
aws.amazon.com
実施作業
現在のサイズ確認
最初に現在のEC2にアタッチされているEBSとそのデータサイズについて確認します。
CドライブにアタッチしたEBSのストレージタイプはgp2でサイズは50GB、DドライブにアタッチしたEBSのストレージタイプはst1でサイズは500GBにしています。
このそれぞれのデータサイズを変更します。
ちなみにエクスプローラーで確認すると以下のようになっています。
※作業の実施前に変更のロールバックを想定し、対象のEBSのスナップショットを取得をお勧めします※
Dドライブ(st1、500GB)のサイズ変更(コンソール作業)
まず最初はDドライブにアタッチしているEBSのデータサイズから変更します。
やりかたは簡単で、マネジメントコンソール上で対象のEBSを選択して、アクションからボリュームの変更をクリックします。
すると以下のような画面が出てきます。
ボリュームタイプのリストを選択することで、タイプも変更することができますが、今回は割愛します。
サイズの項目を500→600に変更して、問題なければ変更ボタンを押下します。
変更してよいか確認する画面が出てくるので、確認してはいボタンを押下します。
ボリュームの変更リクエストが送信できました。
ボリュームのステータスは変更、最適化と遷移します。
※ここの最適化の部分で思ったよりも時間がかかりました。(100GBで大体10分程度)
in-useとなれば変更は完了です。
これだけではEBSのサイズを変更しただけなので、次は追加したサイズ分をWindows側で適用する作業を行っていきます。
Dドライブ(st1、500GB)のサイズ変更(Windows作業)
Windowsの検索でdiskmgmt.mscを入力してEnterキーを押下します。
ディスクの管理画面が開くので、操作項目からディスクの再スキャンをクリックします。
追加した100GB分が未割り当てになっていることがわかります。
サイズを拡張するボリュームで右クリックし、ボリュームの拡張を選択します。
ボリュームの拡張ウィザードが開始されます。
次の画面で拡張するサイズを指定します。
設定内容を確認して、完了ボタンを押下します。
Dドライブにマウントしているボリュームのサイズが増えたことがわかります。
エクスプローラー上で確認しても、想定通り100GB増えたことが確認できました。
Cドライブ(gp2、50GB)のサイズ変更(コンソール作業)
次はCドライブにマウントしているEBSのサイズを拡張します。
ただ拡張するだけだとDドライブの時と変わらないので、今度は拡張時にCドライブ内に書き込みがあった場合、正常に書き込みが実施されるのかを併せて確認してみます。
Cドライブはサイズを50GBから100GBに変更しました。
ステータスが変わり変更処理が開始されていることがわかります。
しばらくするとステータスがin-useに変わりました。
※こちらはたった50GBの追加なのに1時間と少しかかりました
Cドライブ(gp2、50GB)のサイズ変更(Windows作業)
Dドライブの時と同じようにRDPでログインして、ディスクの管理から未割り当て領域が50GB増えていることを確認します。
ボリュームの拡張ウィザードを開き、拡張するサイズを指定します。
最後に完了ボタンを...押下する前にCドライブへのデータの書き込み処理を走らせておきます。
今回はCドライブ上に構築されたSQL ServerのDBに10万近いデータを追加する処理を実行後、拡張を実施してみます。
結果、サイズ拡張もデータの追加も正常に完了したところを見ると、特に拡張の間に書き込みが止まったりエラーが発生したりはしないようです。
感想及び所感
以前実施したEC2のインスタンスタイプの変更では流石に一度停止する必要がありましたが、EBSのストレージタイプの変更やサイズ拡張であれば停止しなくても済むのは良いですね。
capybara-engineer.hatenablog.com
作業の途中でステータスが変更されるのに1時間以上かかった箇所がありましたが、調べてみると状態が最適化であれば拡張の作業自体はできるようですね。(変更→最適化と状態が遷移するので)
拡張後の最適化の処理が最大でも24時間かかるようなので、とりあえず拡張処理だけしておいて最適化の完了は翌日に確認するとかでも問題なさそうです。