EC2(Windows Server)の非システムドライブのディスク容量を縮小してみた

2018.08.13

はじめに

以下の手順でEC2(Windows Server)のディスク容量を縮小します。

  1. 新ボリューム(EBS)を作成
  2. EC2に新ボリュームをアタッチ
  3. OSに新ディスクをマウント
  4. OSで旧ディスク→新ディスクにデータをコピー
  5. EC2から旧ボリュームをアンマウント
  6. ドライブレターを修正

ボリュームの追加と削除を行うことで結果的にディスク容量の縮小を実現します。

また、対象はシステムドライブ以外(一般的にCドライブ以外)であることが条件です。

やってみた

AWSマネジメントコンソール(以降、AMC)で作業を行います。対象のAWSアカウントに一度ログインしておきます。

リンクは全て東京リージョン(ap-northeast-1)の場合のものです。他のリージョンで作業する場合には、リージョンの切り替えが必要になります。

EC2の情報確認

対象のEC2インスタンスの情報を集めます。

下記のリンクからEC2インスタンスの管理画面を開きます。

https://ap-northeast-1.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1#Instances

以下の情報をメモしておきます。

  • インスタンスID
  • アベイラビリティゾーン
  • ブロックデバイス

EC2のバックアップ(AMI作成)

安全のためにバックアップを取っておきましょう。

対象のEC2インスタンスのチェックボックスにチェックを入れます。

「アクション」から「イメージの作成」を選択します。

イメージ名・イメージの説明を設定して「イメージの作成」をクリックします。

イメージ名・説明はわかりやすい内容にしておくことをおすすめ致します。

新ディスク(EBS)を作成

下記のリンクからボリュームの管理画面を開きます。

https://ap-northeast-1.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1#Volumes:sort=size

「ボリュームの作成」をクリックして新規ボリュームを作成します。

各パラメータを入力して、「ボリュームの作成」をクリックします。

  • サイズ: 縮小後のディスクサイズ
  • アベイラビリティゾーン: 対象のEC2が存在するアベイラビリティゾーン
  • タグ(キー、値): 必要に応じて入力する、後から簡単に変更が可能

EC2に新ボリュームをアタッチ

作成したボリュームのチェックボックスにチェックを入れます。

「アクション」から「ボリュームのアタッチ」を選択します。

インスタンスにメモしておいたインスタンスIDを入力します。

デバイスには既存のブロックデバイスと重複しないように入力します。xvdf〜xvdpの範囲で指定します。特段の理由がなければ自動でセットされた値でOKです。

(例)

  • /dev/sda1のみ
    • xvdf
  • /dev/sda1, /dev/xvdf, /dev/xvdg
    • xvdh
    • (F,Gと使用されているのでHを選択)

OSに新ディスクをマウント

Windows Serverにログインして作業を行います。

「ディスクの管理」を開きます。(ファイル名を指定して実行から「diskmgmt.msc」で開けます)

追加したディスクが初期化されていないディスクとして認識されています。

ディスクを初期化します。

対象のディスクを右クリック(灰色の部分)して「ディスクの初期化」をクリックします。

パーティションスタイルを決定します。今回はGPTを選択しました。

要件に応じて選択してください。古いOSとの互換性(ディスクを古いマシンに付け替える)などの予定が無ければGPTでOKです。

初期化したディスクをフォーマットします。

対象のディスクを右クリック(網掛けの部分)して「新しいシンプルボリューム」をクリックします。

「次へ」をクリックする。

「次へ」をクリックする。

既存のドライブと重複しないように、一時的に使用するドライブレターを割り当てる。

今回はXとしました。

ファイルシステムとボリュームラベルを設定します。

ファイルシステムはNTFSでボリュームラベルはにしました。

「完了」をクリックします。

旧ディスク→新ディスクにデータをコピー

現在こういった状況です。

画像のでは検証の為、DとXの容量が同じですが実際に縮小する場合はD>Xとなっています。

D:\ → X:\にコピーします。

コマンドプロンプトを管理者権限で実行して以下のコマンドを実行します。

xcopy D:\ X:\ /C/E/R/O/I/Y/H

隠しフォルダなども全て含めて権限を維持しながらコピーするコマンドです。

D:\System Volume Information\WPSettings.dat
アクセスは拒否されました

上記のようなエラーが発生することがありますが、これはディスク管理のための領域をコピーできなかったという内容なので無視してOKです。

EC2から旧ボリュームをデタッチ

この作業を行う前に、OS上で稼働している該当ディスクへアクセスしてるプロセスを停止させてください。エラーが発生したりプロセスの特定が難しい場合はOSを停止した上で行ってください。

対象のボリュームのチェックボックスにチェックを入れます。

「アクション」から「ボリュームのデタッチ」を選択します。

「デタッチする」をクリックします。

OS側でデタッチの完了を確認します。

ドライブレターの修正

ドライブレターを変更します。

対象のディスクを右クリック(網掛けの部分)して「ドライブ文字とパスの変更」をクリックします。

「変更」をクリックします。

変更後のドライブレターを選択して「OK」をクリックします。

今回は元々と同じにしたいのでDを指定しました。

「はい」をクリックします。

完了です!

旧ディスクの削除

ディスクを削除する前にスナップショットを作成しておきます。これによって後からボリュームを復元することができます。

削除予定のボリュームのチェックボックスにチェックを入れます。

「アクション」から「スナップショットの作成」を選択します。

説明とNameタグを設定します。

「スナップショットの作成」をクリックします。

ボリュームを削除します。

削除するのボリュームのチェックボックスにチェックを入れます。

「アクション」から「ボリュームの削除」を選択します。

「はい、削除する」をクリックします。

以上で完了です!

作成したスナップショットはディスクサイズ縮小後しばらくは残しておいて、問題がないことを確認してから削除すると良いでしょう。

あとがき

拡張と比べると縮小は少し手順が多いですね。一度行ってみると感覚がつかめるので、縮小の機会がなくても検証用のインスタンスなどでぜひお試しいただければと思います。

以上でした!