EBS ボリュームのサイズと設定の制限
Amazon EBS ボリュームのサイズ変更は、ブロックデータストレージの物理とアリスメティック、オペレーティングシステム (OS) とファイルシステムの設計者の実装に関する意思決定によって制限されます。AWS では、サービスの信頼性を保護するためにボリュームサイズの制約を追加しています。
次のセクションでは、EBS ボリュームの使用可能サイズを制限する最も重要な要素と、EBS ボリュームを設定するための推奨事項について説明します。
ストレージキャパシティ
次の表は、Amazon EBS で最も一般的に使用されているファイルシステムに実装された理論的なストレージ容量の概要を示しています (4,096 バイトのブロックサイズと仮定)。
パーティションスキーム | アドレス可能な最大ブロック | 理論的な最大サイズ (ブロック x ブロックサイズ) | Ext4 に実装される最大サイズ* | XFS に実装される最大サイズ** | NTFS に実装される最大サイズ | EBS による最大サポート数 |
---|---|---|---|---|---|---|
MBR | 232 | 2 TiB | 2 TiB | 2 TiB | 2 TiB | 2 TiB |
GPT | 264 |
64 ZiB |
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
サービスの制約事項
Amazon EBS では、データセンターの大規模な分散ストレージを仮想ハードディスクドライブに抽象化しています。EC2 インスタンスにインストールされたオペレーティングシステムにとって、アタッチされた EBS ボリュームは、512 バイトのディスクセクタを含む物理ハードディスクドライブのように見えます。OS は、ストレージ管理ユーティリティを使用して、データブロック (またはクラスター) をその仮想セクタに割り当てます。この割り当ては、マスターブートレコード (MBR) または GUID パーティションテーブル (GPT) などのボリュームパーティションスキームに準拠しており、インストールされているファイルシステム (ext4、NTFS など) の機能の範囲内で行うことができます。
EBS では、仮想ディスクセクタ内のデータは認識されません。セクタの整合性の保護のみ行われます。そのため、AWS アクションと OS アクションは、お互いに独立していることになります。ボリュームサイズを選択する場合は、次のように機能と制限の両方に注意してください。
-
EBS では現在、最大 16 TiB のボリュームサイズがサポートされています。つまり、最大 16 TiB の EBS ボリュームを作成することはできますが、OS でそのキャパシティーが認識されるかどうかは、その独自設計の特性と、ボリュームのパーティションスキームによって異なります。
-
Linux ブートボリュームは、MBR または GPT パーティションスキームを使用する場合があります。MBR は最大 2047 GiB (2 TiB ~ 1 GiB) までのブートボリュームをサポートします。GRUB 2 を備えた GPT は、2 TiB 以上のブートボリュームをサポートします。Linux AMI が MBR を使用する場合、ブートボリュームは 2047 GiBに制限されますが、非ブートボリュームにはこの制限がありません。詳細については、「Linux で Amazon EBS ボリュームを使用できるようにする」を参照してください。
パーティションスキーム
他にも影響がある中で、このパーティションスキームは、単一ボリュームで一意にアドレス解決できる論理データブロックの数を決定します。詳細については、「データブロックサイズ」を参照してください。使用中の一般的なパーティションスキームは、マスターブートレコード (MBR) と GUID パーティションテーブル (GPT) です。これらのパーティションスキームの重要な違いは次のようにまとめることができます。
MBR
MBR では、32 ビットのデータ構造を使用して、ブロックアドレスを格納します。これは、各データブロックが、正の整数 232 のいずれかにマッピングされることを意味します。アドレス可能なボリュームの最大サイズは、以下の式により得られます。
(232 - 1) × Block size = Number of addressable blocks
MBR ボリュームのブロックサイズは、通常 512 バイトに制限されています。したがって、
(232 - 1) × 512 bytes = 2 TiB - 512 bytes
この MBR ボリュームの 2 TiB の制限を増やすための回避策は、一般的に広く普及していません。したがって、AWS で大きな値が示されていたとしても、Linux や Windows で、2 TiB 以上の MBR が検知されることはありません。
GPT
GPT では、64 ビットのデータ構造を使用して、ブロックアドレスを格納します。これは、各データブロックが、正の整数 264 のいずれかにマッピングされることを意味します。アドレス可能なボリュームの最大サイズは、以下の式により得られます。
(264 - 1) × Block size = Number of addressable blocks
GPT ボリュームのブロックサイズは、一般的に 4,096 バイトです。したがって、
(264 - 1) × 4,096 bytes = 264 x 4,096 bytes - 1 x 4,096 bytes = 264 x 212 bytes - 4,096 bytes = 270 x 26 bytes - 4,096 bytes = 64 ZiB - 4,096 bytes
実際のコンピュータシステムでは、この理論上の最大値のような大きな値はサポートされていません。実装されたファイルシステムのサイズは現在、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 で指定されているボリュームサイズ (16 TiB) の制限は、現在 4 KiB のデータブロックで使用できる最大サイズと同等です。