Amazon WorkSpaces - Windows マシンの D:ドライブ と C:ドライブを CloudShell から拡張してみる

Amazon WorkSpaces - Windows マシンの D:ドライブ と C:ドライブを CloudShell から拡張してみる

Amazon WorkSpaces のディスク拡張作業を CloudShell から実施した際の手順と注意点を紹介します。C:ドライブと D:ドライブの拡張方法、制約事項、進捗監視のコマンドまでまとめました。
2026.10.02

こんにちは。
夢の中でもカイル君
運用イノベーション部のかわいです。

小ネタ記事です。
先日、Amazon WorkSpaces (Windowsマシン)環境におけるディスク拡張作業を行ったので、
CloudShell から D:ドライブと C:ドライブ を拡張した際の方法を紹介します。

検証環境

項目 内容
OS Windows Server 2022
コンピューティングタイプ Power / PowerPro
拡張前のボリューム(C: / D:) 80GB / 10GB、80GB / 50GB
拡張後のボリューム(C: / D:) 175GB / 100GB
台数 3 台(並列で実施)
実行環境 AWS CloudShell(ap-northeast-1)

ボリュームサイズについて

前知識として、C: と D: のサイズには、好きな値を自由に組み合わせられません。

C:(ルート) D:(ユーザ)
80GB 10GB / 50GB / 100GB
175〜2000GB 100〜2000GB

上記からも C: を 80GB から増やしたい場合、事前に D: を 100GB 以上にしておく必要があります。

https://docs.aws.amazon.com/workspaces/latest/adminguide/modify-workspaces.html

その他の留意事項

  • 拡張可能なのは SSD ボリュームのみ
  • C: と D: を同時に変更することはできない(D: の完了後、5-10分空けてから C: を変更する)
  • 同じボリュームの拡張は 6 時間に 1 回まで
  • 拡張中も利用者は WorkSpace をほぼ通常どおり使える(※別途手動再起動が必要)
  • 拡張は 1 回あたり最大 2 時間程度かかる
  • 拡張の完了後、反映には再起動が必要
  • 一度拡張したら、元のサイズには戻せない

※サイズにより料金が変動するので、実施前に料金ページを参照されたし
https://aws.amazon.com/jp/workspaces/desktop-as-a-service/pricing/

変更方法

1. 現在の状態を確認

まずは対象の WorkSpace の状態とボリュームサイズを確認します。
「--worksoace-ids」に対象 WorkSpace の ID を並べて指定します。

export AWS_PAGER=""; aws workspaces describe-workspaces --region ap-northeast-1 \
  --workspace-ids ws-xxxxxxxx1 ws-xxxxxxxx2 ws-xxxxxxxx3 \
  --query "Workspaces[].[WorkspaceId,UserName,State,WorkspaceProperties.RootVolumeSizeGib,WorkspaceProperties.UserVolumeSizeGib]" \
  --output table
# 出力例
-----------------------------------------------------
|                DescribeWorkspaces                 |
+---------------+---------+-------------+-----+-----+
|  ws-xxxxxxxx1 |  user01 |  AVAILABLE  |  80 |  10 |
|  ws-xxxxxxxx2 |  user02 |  AVAILABLE  |  80 |  50 |
|  ws-xxxxxxxx3 |  user03 |  AVAILABLE  |  80 |  10 |
+---------------+---------+-------------+-----+-----+

状態が AVAILABLE または STOPPED であれば変更が可能です。
STOPPED のまま拡張すると、拡張が終わるまで起動できない点に注意。

2. D:ドライブの拡張

前述の通り、 D: を 100GB に拡張します。

export AWS_PAGER=""
for WS in ws-xxxxxxxx1 ws-xxxxxxxx2 ws-xxxxxxxx3; do
  aws workspaces modify-workspace-properties --region ap-northeast-1 \
    --workspace-id "$WS" \
    --workspace-properties UserVolumeSizeGib=100 \
    && echo "$WS D:拡張開始 $(TZ=Asia/Tokyo date '+%H:%M:%S')"
  sleep 2
done
# 出力例
ws-xxxxxxxx1 D:拡張開始 11:02:12
ws-xxxxxxxx2 D:拡張開始 11:02:15
ws-xxxxxxxx3 D:拡張開始 11:02:18

受け付けられました。

3. 拡張の進捗を監視

ボリュームの拡張中も状態は AVAILABLE のままになります。進捗は ModificationStates で確認可能です。
以下例では 5 分おきに状態確認し、全対象が完了すると自動で止まるように監視できます。

export AWS_PAGER=""
K=UserVolumeSizeGib; V=100   # ※C: を監視するときは K=RootVolumeSizeGib; V=175
L="ws-xxxxxxxx1 ws-xxxxxxxx2 ws-xxxxxxxx3"
while true; do
  echo "== $(TZ=Asia/Tokyo date '+%H:%M:%S')"
  aws workspaces describe-workspaces --region ap-northeast-1 --workspace-ids $L \
    --query "Workspaces[].[WorkspaceId,UserName,State,WorkspaceProperties.RootVolumeSizeGib,WorkspaceProperties.UserVolumeSizeGib,join(',',ModificationStates[].[Resource,State][] || \`[]\`)]" \
    --output table
  # 変更処理が残っていないか確認
  n=$(aws workspaces describe-workspaces --region ap-northeast-1 --workspace-ids $L \
    --query "length(Workspaces[?WorkspaceProperties.$K==\`$V\` && length(ModificationStates || \`[]\`)==\`0\`])" \
    --output text)
  if [ "$n" = "3" ]; then echo "対象は $K=$V で完了"; break; fi
  sleep 300
done

実行中は以下のように表示されます。

# 出力例
+--------------+---------+------------+-----+-----+-----------------------------------+
|  ws-xxxxxxxx2|  user02 |  AVAILABLE |  80 |  50 |  USER_VOLUME,UPDATE_IN_PROGRESS   |
|  ws-xxxxxxxx1|  user01 |  AVAILABLE |  80 |  10 |  USER_VOLUME,UPDATE_IN_PROGRESS   |
|  ws-xxxxxxxx3|  user03 |  AVAILABLE |  80 |  10 |  USER_VOLUME,UPDATE_IN_PROGRESS   |
+--------------+---------+------------+-----+-----+-----------------------------------+

完了すると、最後の列が空になりサイズが変わります。

+---------------+---------+------------+-----+------+----+
|  ws-xxxxxxxx3 |  user03 |  AVAILABLE |  80 |  100 |    |
|  ws-xxxxxxxx2 |  user02 |  AVAILABLE |  80 |  100 |    |
|  ws-xxxxxxxx1 |  user01 |  AVAILABLE |  80 |  100 |    |
+---------------+---------+------------+-----+------+----+

4. C:ドライブの拡張

D:ドライブの完了が確認できたら、C:ドライブ側を 175GB に拡張します。

export AWS_PAGER=""
for WS in ws-xxxxxxxx1 ws-xxxxxxxx2 ws-xxxxxxxx3; do
  aws workspaces modify-workspace-properties --region ap-northeast-1 \
    --workspace-id "$WS" \
    --workspace-properties RootVolumeSizeGib=175 \
    && echo "$WS C:受付 $(TZ=Asia/Tokyo date '+%H:%M:%S')"
  sleep 2
done

状態の確認は、先ほどのループの先頭を K=RootVolumeSizeGib; V=175 に変えるだけです。
以下のように出力されればokです。

export AWS_PAGER=""
K=RootVolumeSizeGib; V=175
L="ws-xxxxxxxx1 ws-xxxxxxxx2 ws-xxxxxxxx3"
while true; do
  echo "== $(TZ=Asia/Tokyo date '+%H:%M:%S')"
  aws workspaces describe-workspaces --region ap-northeast-1 --workspace-ids $L \
    --query "Workspaces[].[WorkspaceId,UserName,State,WorkspaceProperties.RootVolumeSizeGib,WorkspaceProperties.UserVolumeSizeGib,join(',',ModificationStates[].[Resource,State][] || \`[]\`)]" \
    --output table
  # 変更処理が残っていないか確認
  n=$(aws workspaces describe-workspaces --region ap-northeast-1 --workspace-ids $L \
    --query "length(Workspaces[?WorkspaceProperties.$K==\`$V\` && length(ModificationStates || \`[]\`)==\`0\`])" \
    --output text)
  if [ "$n" = "3" ]; then echo "対象は $K=$V で完了"; break; fi
  sleep 300
done

+---------------+---------+------------+------+------+----+
|  ws-xxxxxxxx3 |  user03 |  AVAILABLE |  175 |  100 |    |
|  ws-xxxxxxxx2 |  user02 |  AVAILABLE |  175 |  100 |    |
|  ws-xxxxxxxx1 |  user01 |  AVAILABLE |  175 |  100 |    |
+---------------+---------+------------+------+------+----+
3台とも RootVolumeSizeGib=175 で完了

5. 再起動 → 反映

ドキュメントにあるとおり、拡張完了後は再起動が必要です。
事前に作業中のファイル等は保存して閉じておきましょう。

aws workspaces reboot-workspaces --region ap-northeast-1 \
  --reboot-workspace-requests '[{"WorkspaceId":"ws-xxxxxxxx1"},{"WorkspaceId":"ws-xxxxxxxx2"},{"WorkspaceId":"ws-xxxxxxxx3"}]'
{
    "FailedRequests": []
}

FailedRequests が空で返れば、再起動が実行できています。

また、状態を確認したい場合は以下コマンドで進捗を追えます。

export AWS_PAGER=""; aws workspaces describe-workspaces --region ap-northeast-1 --workspace-ids ws-xxxx01 ws-xxxx02 ws-xxxx03 --query "Workspaces[].[WorkspaceId,UserName,State]" --output table
-----------------------------------------
|          DescribeWorkspaces           |
+--------------+----------+-------------+
|  ws-xxxx03   |  user03  |  REBOOTING |
|  ws-xxxx01   |  user01  |  AVAILABLE  |
|  ws-xxxx02   |  user02  |  AVAILABLE  |
+--------------+----------+-------------+

すべてAVAILABLE状態になれば再起動完了です。

6. 容量の確認

再起動後、再度手順1のコマンドを流し、容量が変わったことを確認します。
(または、実際にログインして容量を確認します)

export AWS_PAGER=""; aws workspaces describe-workspaces --region ap-northeast-1 \
  --workspace-ids ws-xxxxxxxx1 ws-xxxxxxxx2 ws-xxxxxxxx3 \
  --query "Workspaces[].[WorkspaceId,UserName,State,WorkspaceProperties.RootVolumeSizeGib,WorkspaceProperties.UserVolumeSizeGib]" \
  --output table
# 出力例
-----------------------------------------------------
|                DescribeWorkspaces                 |
+---------------+---------+-------------+-----+-----+
|  ws-xxxxxxxx1 |  user01 |  AVAILABLE  |  175 |  100 |
|  ws-xxxxxxxx2 |  user02 |  AVAILABLE  |  175 |  100 |
|  ws-xxxxxxxx3 |  user03 |  AVAILABLE  |  175 |  100 |
+---------------+---------+-------------+-----+-----+

まとめ的な

  • C:ドライブ を 80GB から増やすには、まず D:ドライブ側 を 100GB にする必要がある
  • C:ドライブ と D:ドライブ は 1回のリクエストで同時に変更できないので、D:ドライブ → C:ドライブの順で 2回に分ける
  • 拡張中も状態は AVAILABLE のままで表示される。進捗は ModificationStates で確認可能(※完了後再起動が必要
  • 一度拡張すると元に戻せず料金も上がる

以上、何かの参考になれば幸いです!

完

参考情報

https://docs.aws.amazon.com/workspaces/latest/adminguide/modify-workspaces.html
https://docs.aws.amazon.com/cli/latest/reference/workspaces/modify-workspace-properties.htm

この記事をシェアする

関連記事