メニュー
Amazon Elastic Compute Cloud
Windows インスタンス用ユーザーガイド

EBS ボリュームサイズの変更における制約

Amazon EBS ボリュームのサイズ変更は、ブロックデータストレージの物理とアリスメティック、オペレーティングシステムとファイルシステムの設計者の実装に関する意思決定によって制限されます。AWS では、サービスの信頼性を保護するためにボリュームサイズの制約を追加しています。

EBS では、サービスとして、データセンターの大規模な分散ストレージを仮想ハードディスクドライブに抽象化しています。EC2 インスタンスにインストールされたオペレーティングシステムにとって、アタッチされた EBS ボリュームは、512 バイトのディスクセクタを含む物理ハードディスクドライブのように見えます。OS は、ストレージ管理ユーティリティを使用して、データブロック (またはクラスター) をその仮想セクタに割り当てます。この割り当ては、マスターブートレコード (MBR) または GUID パーティションテーブル (GPT) などのボリュームパーティションスキームに準拠しており、インストールされているファイルシステム (ext4、NTFS など) の機能の範囲内で行うことができます。

EBS では、仮想ディスクセクタ内のデータは認識されません。セクタの整合性の保護のみ行われます。そのため、AWS アクションと OS アクションは、お互いに完全に独立していることになります。ボリュームサイズを変更する場合は、機能と制限の両方に注意してください。たとえば、EBS ボリュームのサイズを 16 TiB に増やすことはできますが、OS でその容量が認識されるかどうかは、その独自設計の特性と、ボリュームのパーティションスキームによって異なります。

このセクションでは、EBS ボリュームの使用可能なサイズを制限する最も重要な要因について説明します。

AWS サービスの制限

Amazon EBS では現在、最大 16 TiB のボリュームサイズがサポートされています。

Amazon EC2 では、Windows ブートボリュームで MBR パーティションを使用する必要があります。「パーティションスキーム」で説明されているように、ブートボリュームは 2 TiB を超過して使用することはできません。Windows データボリュームはこの制限の対象外であり、GPT でパーティション分割される場合があります。

パーティションスキーム

他にも影響がある中で、このパーティションスキームは、単一ボリュームで一意にアドレス解決できる論理データブロックの数を決定します。詳細については、「データブロックサイズ」を参照してください。Linux システムと Windows システムでは、一般的にマスターブートレコード (MBR) と GUID パーティションテーブル (GPT) の 2 種類のパーティションスキームが使用されています。2 つのパーティションスキームの重要な相違点は次のように要約できます。

  • MBR

    MBR では、32 ビットのデータ構造を使用して、ブロックアドレスを格納します。これは、各データブロックが、正の整数 232 のいずれかにマッピングされることを意味します。アドレス可能なボリュームの最大サイズは、以下の式により得られます。

    (232 - 1) × ブロックサイズ = アドレス可能なブロックの数

    MBR ボリュームのブロックサイズは、通常 512 バイトに制限されています。したがって、

    (232 - 1) × 512 バイト = 2 TiB - 512 バイト

    この MBR ボリュームの 2 TiB の制限を増やすための回避策は、一般的に広く普及していません。したがって、AWS で大きな値が示されていたとしても、Linux や Windows で、2 TiB 以上の MBR が検知されることはありません。

  • GPT

    GPT では、64 ビットのデータ構造を使用して、ブロックアドレスを格納します。これは、各データブロックが、正の整数 264 のいずれかにマッピングされることを意味します。アドレス可能なボリュームの最大サイズは、以下の式により得られます。

    (264 - 1) × ブロックサイズ = アドレス可能なブロックの数

    GPT ボリュームのブロックサイズは、一般的に 4,096 バイトです。したがって、

    (264 - 1) × 4,096 バイト = 8 ZiB - 4,096 バイト = 80 億 TiB - 4,096 バイト

    実際のコンピュータシステムでは、この理論上の最大値のような大きな値はサポートされていません。実装されたファイルシステムのサイズは現在、ext4 では 50 TiB、NTFS では 256 TiB に制限されており、いずれも、AWS 指定の 16 TiB 制限を超過しています。

データブロックサイズ

現代のハードドライブ上のデータストレージは、論理ブロックアドレスや、オペレーティングシステムで基礎となるハードウェアをほとんど把握することなく論理ブロック内のデータを読み書きできる抽象化レイヤーによって管理されています。OS は、ストレージデバイスを使用して、このブロックを物理セクタにマッピングしています。EBS は 512 バイトのセクタをオペレーティングシステムに割り当てます。これにより、セクタサイズの倍数であるデータブロックを使用してディスクへのデータの読み書きを行うことができます。

論理データブロックの一般的なデフォルトサイズは、現在 4,096 バイト (4 KiB) です。ワークロードによっては、ブロックサイズが小さいまたは大きい方がメリットを得られるため、ファイルシステムはデフォルト以外のブロックサイズをサポートしています。このサイズはフォーマット時に指定できます。デフォルト以外のブロックサイズのシナリオは、このトピックの対象外ですが、指定したブロックサイズによっては、ボリュームのストレージキャパシティに影響を及ぼす場合があります。次の表に、ブロックサイズの機能としてストレージキャパシティを示します。

ブロックサイズとそのボリューム容量

ブロックサイズ 最大ボリュームサイズ
4 KiB (デフォルト) 16 TiB
8 KiB 32 TiB
16 KiB 64 TiB
32 KiB 128 TiB
64 KiB (最大) 256 TiB

EBS で指定されているボリュームサイズの制限は、現在 4 KiB のデータブロックで使用できる最大サイズと同等です。

概要

次の表は、Amazon EBS で最も一般的に使用されているファイルシステムに実装された理論的なストレージ容量の概要を示しています。

一般的なファイルシステムの MBR と GPT のボリュームサイズ (4,096 バイトのブロックサイズと仮定)

パーティションスキーム 最大 アドレス可能なブロック 理論的な最大値サイズ (ブロック × ブロックサイズ) Ext4 に実装される最大値。size* XFS に実装される最大値。size** NTFS に実装される最大値。size 最大 EBS によるサポート
MBR 232 2 TiB 2 TiB 2 TiB 2 TiB 2 TiB
GPT 264

8 ZiB = 8 ×

10243 TiB

1 EiB =

10242 TiB

(RHEL7 で認証されている 50 TiB)

500 TiB

(RHEL7 で認証)

256 TiB 16 TiB

* https://ext4.wiki.kernel.org/index.php/Ext4_Howto および https://access.redhat.com/solutions/1532

** https://access.redhat.com/solutions/1532

Windows ボリュームの推奨事項

デフォルトでは、Windows はマスターブートレコード (MBR) パーティションテーブルでボリュームを初期化します。MBR は 2 TiB (2048 GiB) 以下のボリュームのみをサポートするため、Windows はこのサイズ制限以上の MBR ボリュームのサイズ変更を阻止します。この場合、[Extend Volume] のオプションは Windows の [Disk Management] ユーティリティでグレー表示されます。AWS マネジメントコンソール または AWS CLI を使用して、サイズ制限を超える MBR でパーティション分割されたボリュームを作成しても、Windows では超過分のスペースを検出または使用することはできません。Linux ボリュームの推奨事項については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「Linux ボリュームの推奨事項」を参照してください。

この制限を回避するには、GUID パーティションテーブル (GPT) でより大きな新しいボリュームを作成し、元の MBR ボリュームからデータをコピーします。

GPT ボリュームを作成するには

  1. EC2 インスタンスのアベイラビリティーゾーンに必要な容量の新しい空のボリュームを作成し、インスタンスにアタッチします。

    注記

    新しいボリュームには、スナップショットから復元したボリュームは使用できません。

  2. Windows システムにログインし、[Disk Management] (diskmgmt.exe) を開きます。

  3. 新しいディスクのコンテキスト (右クリック) メニューを開き、[Online] を選択します。

  4. [Initialize Disk] ウィンドウで、新規のディスクを選択し、続いて [GPT (GUID Partition Table)]、[OK] の順に選択します。

  5. 初期化が完了したら、robocopy または teracopy などのツールを使用して元のボリュームから新しいボリュームにデータをコピーします。

  6. [Disk Management] で、ドライブ文字を適切な値に変更し、古いボリュームをオフラインにします。

  7. Amazon EC2 コンソールで、インスタンスから古いボリュームをデタッチ後、インスタンスを再起動して正常に稼働することを確認したら、古いボリュームを削除します。