EC2インスタンスで最小構成でサーバーを構築して運用していくと、ディスクサイズが足りなくなることがあります。
※ただし仮想環境はスペックの変更が簡単にできるというところが長所なので、構築時は最小構成で始めること(スモールスタート)は問題ないと思います。
今回はオンラインでEC2インスタンスのディスクサイズを拡張する手順【Windows編】を解説します。
EBSのエラスティックボリューム機能でオンラインでディスク拡張が可能に
2017年2月14日にAWSは「Amazon EBSのアップデート – 新機能エラスティックボリュームが全てを変える」という記事を公表しました。
https://aws.amazon.com/jp/blogs/news/amazon-ebs-update-new-elastic-volumes-change-everything/
この記事によると「EBS」に新機能である「エラスティックボリューム」が追加され、その結果、EC2インスタンスがオンラインでディスク拡張ができるようになったということです。
- EBS → EBS(Amazon Elastic Block Store)とは、EC2インスタンスと組み合わせて使用できる、永続的なブロックストレージボリュームです。(つまりOSを停止・起動してもデータは消えません)
- エラスティックボリューム → Elastic Volumesとは、EBSの機能の1つです。2017年2月14日に発表された新機能のエラスティックボリュームによりオンラインでディスク拡張ができるようになりました。
※elastic → 弾力のある、伸縮自在の、融通性のある、という意味です。
Amazon EBSの機能について
今回、エラスティックボリュームという機能が「Amazon EBS」の機能の1つとして追加されましたが、そもそも「Amazon EBS」の機能はどのようなものがあるのか調べました。
- EBSはEC2インスタンスにマウントできる(アタッチできる)
- 最大サイズが16TiB
- SSDタイプとHDDタイプがある
- EBSボリュームを暗号化できる
- EBSボリュームのスナップショットを取得できる
- EBSボリュームは特定のアベイラビリティゾーンで作成され、同じアベイラビリティゾーン内のインスタンスにアタッチできる
- EBSボリュームを他のアベイラビリティゾーンのインスタンスにアタッチする場合は、他のアベイラビリティゾーンにコピーをすればアタッチできる
Amazon EBSをオンラインでディスク拡張するための条件
Amazon EBSをオンラインでディスク拡張するための条件です。
- EBSであること
- EC2インスタンスタイプが現行バージョンのものであること
逆にEBS以外のストレージは何があるのかを調べました。
- EBS → Amazon Elastic Block Store。
- インスタンスストア → Amazon EC2 インスタンスストア。インスタンス起動中のみデータが保存されます。インスタンスが停止するとデータは消えます。
- EFS → Amazon Elastic File System (Amazon EFS)。ファイルシステム。
- S3 → Amazon Simple Storage Service (Amazon S3)
EC2インスタンスタイプが「現行バージョン」のものかどうかは以下URLより確認できます。
インスタンスタイプ
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/instance-types.html
ちなみにインスタンスタイプは
- 旧世代のインスタンスタイプ
- 現行世代のインスタンスタイプ
の2種類があります。
下図は「現行世代のインスタンスタイプ」です。
下図は「旧世代のインスタンスタイプ」です。(つまりオンラインでディスク拡張ができません)
EC2インスタンスのオンラインでのディスク拡張手順
ではここからEC2インスタンスのオンラインでのディスク拡張手順を説明します。
初めに作業概要です。
作業概要
- AWS管理画面へのログイン
- 【確実にデータを保全したい場合】インスタンスの停止
- 対象インスタンスのスナップショットの取得
- 【インスタンスを停止した場合】インスタンスの起動
- ボリュームサイズの拡張
- Windowsにログイン
- OS上からパーティションの拡張
AWS管理画面へのログイン
以下のURLよりAWSコンソール画面にログインします。
https://console.aws.amazon.com/console/home
「メールアドレス」「パスワード」を入力して「サインイン」ボタンをクリックします。
ログインしたら上のメニューから「サービス」–「コンピューティング」–「EC2」をクリックします。
「EC2ダッシュボード」より「インスタンス」をクリックします。
スナップショットの取得についての検討
ディスク拡張をする前に、万が一のことを考えてスナップショットを取得しましょう。
特に業務で使用している場合は100%確実に元の状態に戻せる必要があります。
インスタンスのスナップショットを取得する場合
- EC2インスタンスを【停止】してからスナップショットを取得
- EC2インスタンスを【稼働】したままスナップショットを取得
理想はインスタンスを「停止」した状態でスナップショットを取得することです。
理由はデータベースサーバーのような常にデータが更新され続けるシステムの場合は、スナップショットを取得するタイミングによりデータに不整合が起こる可能性があるからです。
逆にインスタンスを「稼働」した状態でスナップショットを取得すれば、サービス断はありません。
オンライン状態でディスク拡張が可能です。
ここはそれぞれ異なる環境があり、異なる事情があると思うのでその中からどうするか決めましょう。
【確実にデータを保持したい場合】インスタンスの停止
ここの作業は「確実にデータを保持したい場合」に実施してください。
DBサーバーのように常にデータが更新されているような環境でなければインスタンスを停止する必要はありません。
(ただし可能であればインスタンスを停止してからスナップショットを取得することを推奨します)
左側ペインより「インスタンス」をクリックし、対象のインスタンスを選択して右クリックして「インスタンスの状態」-「停止」をクリックします。
下図のように「インスタンスの状態」が「stopped」になり、インスタンスが停止したことを確認します。
対象インスタンスのスナップショットの取得
対象インスタンスのボリュームのスナップショットを取得します。
各ボリュームに「EBS ID」が付与されており、この「EBS ID」のスナップショットを取得します。
対象のインスタンスを選択して、下側ペインより「ルートデバイス」の「パス(通常は/dev/sda1)」のリンクをクリックします。
※通常ルートデバイスのパスは「/dev/sda1」です。
パスのリンクをクリックすると下図のように「EBS-ID」や「ルートデバイスタイプ」が表示されます。
先ほども説明しましたがオンラインでのディスク拡張は「EBS」のみなので確認します。
「EBS-ID」のパスをクリックしてボリューム一覧ページに移動します。
対象の「EBS ID」のボリュームを選択して右クリックして「スナップショットの作成」をクリックします。
スナップショットの作成画面が表示されるので「ボリュームID」を確認し、スナップショットの「名前」を入力して「作成」ボタンをクリックします。
スナップショットの作成画面が表示されたら「閉じる」ボタンをクリックします。
左側ペインより「スナップショット」ページに移動して、該当のスナップショットのステータスが「completed」になっていることを確認します。
【インスタンスを停止した場合】インスタンスの起動
先の手順でインスタンスを停止している場合は、このタイミングでインスタンスを起動します。
※インスタンスを停止していない場合は次の手順「EBS ID の確認」に進みます。
左側ペインより「インスタンス」をクリックして「インスタンス」ページに進みます。
対象のインスタンスを選択して右クリックし「インスタンスの状態」–「開始」をクリックします。
「インスタンスの開始」画面が表示されるので、インスタンスIDを確認して「開始する」ボタンをクリックします。
ボリュームサイズの拡張
ボリュームのサイズを拡張します。
初めにディスクサイズを拡張する対象の「ESB-ID」を確認します。
対象インスタンスを選択して下図のように「ルートデバイス」のパスのリンクをクリックします。
パスのリンクをクリックすると下図のように「EBS-ID」が表示されます。
「EBS-ID」のパスをクリックして「ボリューム」ページに移動します。
対象のボリュームを選択して右クリックして「ボリュームの変更」をクリックします。
ボリュームの変更画面が表示されるので変更したいサイズを入力して「変更」ボタンをクリックします。
※ボリュームタイプも変更することができます。
「ボリュームの変更」画面で確認されるので「はい」ボタンをクリックします。
ボリュームの変更画面で「ボリュームの変更リクエストが成功しました」メッセージが表示されたら「閉じる」ボタンをクリックします。
下図のようにボリュームサイズが拡張したことを確認します。
Windows よりパーティションの拡張をする
ディスクのサイズは拡張しましたが、OSレベルではまだ拡張されていません。
例えるなら物理ディスクが設置されただけの状態で、まだOS上からは使える状態になっていません。
この後使えるように設定します。
リモートデスクトップ接続で対象の Windows マシンにリモートログインをします。
まだOS上からパーティションの拡張処理をしていないため、サイズは元のままです。
スタートボタンを右クリックして「コントロールパネル」をクリックします。
更に「コントールパネル」より「管理ツール」をクリックします。
「コンピュータの管理」–「ディスクの管理」をクリックします。
対象のパーティション(今回の場合は、ディスク0 の C:ドライブ)を選択して右クリックして「ボリュームの拡張」をクリックします。
「ボリュームの拡張ウィザード」画面が表示されるので「次へ」ボタンをクリックします。
「ボリュームの拡張ウィザード」画面で拡張するディスクを選択して「次へ」ボタンをクリックします。
「ボリュームの拡張ウィザード」画面で、選択されたディスクを確認して「完了」ボタンをクリックします。
下図のようにOS上からもディスクサイズが拡張されていることを確認します。
まとめ
対象のEC2インスタンスがDBサーバーのように常にデータを更新しているシステムではなく、Webサーバーのようにローカルにデータを持たないサーバーの場合なら、オンラインでディスク拡張をすることが可能です。
ただし念のためオンラインでもいいので「スナップショット」を取得してから実施しましょう。
コメント