Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

ストレージ最適化インスタンス

ストレージ最適化インスタンスは、ローカルストレージの大規模データセットに対する高いシーケンシャル読み取りおよび書き込みアクセスを必要とするワークロード用に設計されています。ストレージ最適化インスタンスは、数万回の低レイテンシーとランダム I/O オペレーション/秒 (IOPS) をアプリケーションに提供するように最適化されています。

D2 インスタンス

D2 インスタンスは、次の用途に適しています。

  • 超並列処理 (MPP) データウェアハウス

  • MapReduce および Hadoop 分散コンピューティング

  • ログまたはデータ処理アプリケーション

H1 インスタンス

H1 インスタンスは、次の用途に適しています。

  • MapReduce および分散ファイルシステムなどのデータ集約型ワークロード

  • 直接アタッチされたインスタンスストレージにある大量データへのシーケンシャルアクセスを必要とするアプリケーション

  • 大量のデータへの高スループットアクセスを必要とするアプリケーション

I3 および I3en インスタンス

これらのインスタンスは、以下の用途に適しています。

  • 高頻度オンライントランザクション処理 (OLTP) システム

  • リレーショナルデータベース

  • NoSQL データベース

  • メモリ内データベース (Redis など) のキャッシュ

  • データウェアハウスアプリケーション

  • 分散されたファイルシステム

ベアメタルインスタンスを使用すると、アプリケーションから、プロセッサとメモリなどのホストサーバーの物理リソースに直接アクセスすることができます。これらのインスタンスは、次の用途に適しています。

  • 仮想環境で利用できない、または完全にサポートされていない低レベルのハードウェア機能 (例: Intel VT) へのアクセスを必要とするワークロード

  • ライセンスやサポートを目的として非仮想化環境で実行する必要があるアプリケーション

詳細については、「Amazon EC2 I3 インスタンス」を参照してください。

ハードウェア仕様

D2 インスタンスのプライマリデータストレージは、HDD インスタンスストアボリュームです。I3 インスタンスのプライマリデータストレージは、Non-Volatile Memory Express (NVMe) SSD インスタンスストアボリュームです。

インスタンスストアボリュームは、インスタンスの存続中のみ使用できます。インスタンスを停止または終了すると、アプリケーションとそのインスタンスストアボリュームのデータは消去されます。インスタンスストアボリュームの重要なデータは、定期的にバックアップまたはレプリケートすることをお勧めします。詳細については、「Amazon EC2 インスタンスストア」および「SSD インスタンスストアボリューム」を参照してください。

ストレージ最適化インスタンスのハードウェア仕様の要約を以下に示します。

インスタンスタイプ デフォルト vCPU メモリ (GiB)
d2.xlarge 4 30.5
d2.2xlarge 8 61
d2.4xlarge 16 122
d2.8xlarge 36 244
h1.2xlarge 8 32
h1.4xlarge 16 64
h1.8xlarge 32 128
h1.16xlarge 64 256
i3.large 2 15.25
i3.xlarge 4 30.5
i3.2xlarge 8 61
i3.4xlarge 16 122
i3.8xlarge 32 244
i3.16xlarge 64 488
i3.metal 72 512
i3en.large 2 16
i3en.xlarge 4 32
i3en.2xlarge 8 64
i3en.3xlarge 12 96
i3en.6xlarge 24 192
i3en.12xlarge 48 384
i3en.24xlarge 96 768
i3en.metal 96 768

各 Amazon EC2 インスタンスタイプのハードウェア仕様については、「Amazon EC2 インスタンスタイプ」を参照してください。

CPU オプションの指定についての詳細は、「CPU オプションの最適化」を参照してください。

インスタンスのパフォーマンス

Linux のインスタンスから最善のディスクスループットパフォーマンスを得るには、最新バージョンの Amazon Linux 2 または Amazon Linux AMI を使用することをお勧めします。

NVMe インスタンスストアボリュームを持つインスタンスの場合は、カーネルバージョン 4.4 以降の Linux AMI を使用する必要があります。それ以外の場合、インスタンスは利用可能な最大の IOPS パフォーマンスを達成できません。

D2 インスタンスは、永続許可 (ディスクスループットと拡張性を大幅に向上させる Xen ブロックリングプロトコルの拡張機能) をサポートする Linux カーネルを使用するときに、最大のディスクパフォーマンスを提供します。永続許可の詳細については、Xen プロジェクトのブログのこちらの記事を参照してください。

EBS 最適化インスタンスは、インスタンスからの Amazon EBS I/O とその他のネットワークトラフィックとの競合を排除することによって、EBS ボリュームの安定した高パフォーマンスを実現できます。一部のストレージ最適化インスタンスは、追加料金なしでデフォルトで EBS 最適化されます。詳細については、「Amazon EBS – 最適化インスタンス」を参照してください。

一部のストレージ最適化インスタンスでは、Linux でプロセッサの C ステートと P ステートを制御できます。C ステートは非アクティブ時のコアのスリープレベルを制御し、P ステートは希望するコアからのパフォーマンス (CPU 周波数) を制御します。詳細については、「EC2 インスタンスタイプのプロセッサのステート制御」を参照してください。

ネットワークパフォーマンス

サポート対象のインスタンスタイプで、拡張されたネットワーキング機能を有効にすることができます。拡張ネットワーキングでは、パケット毎秒 (PPS) が非常に大きく、ネットワークのストレスが少なく、レイテンシーが低くなります。詳細については、「Linux の拡張ネットワーキング」を参照してください。

拡張されたネットワーキングのための Elastic Network Adapter (ENA) を使用するインスタンスタイプは、高いパケット/秒パフォーマンスと一貫して低いレイテンシーを同時に実現します。ほとんどのアプリケーションでは、高いレベルのネットワークパフォーマンスが一貫して必要なわけではありませんが、データの送受信時にアクセスする帯域幅を増やすことでメリットを得られます。ENA を使用し、「最大 10 Gbps」または「最大 25 Gbps」のネットワークパフォーマンスをサポートするインスタンスサイズでは、ネットワーク I/O クレジットメカニズムを使用して、平均帯域幅使用率に基づいてインスタンスにネットワーク帯域幅を割り当てます。これらのインスタンスでは、ネットワーク帯域幅がベースライン制限を下回るとクレジットを獲得し、これらのクレジットをネットワークデータ転送を実行するときに使用できます。

拡張ネットワーキングをサポートするストレージ最適化インスタンスのネットワークパフォーマンスの要約を以下に示します。

インスタンスタイプ ネットワークパフォーマンス 拡張ネットワーキング

i3.4xlarge 以下

最大 10 Gbps、ネットワーク I/O クレジットメカニズムを使用

ENA

i3.8xlarge | h1.8xlarge

10 Gbps

ENA

i3en.3xlarge 以下

最大 25 Gbps、ネットワーク I/O クレジットメカニズムを使用

ENA

i3.16xlarge | i3.metal | i3en.6xlarge | h1.16xlarge

25 Gbps

ENA

i3en.12xlarge

50 Gbps

ENA

i3en.24xlarge

100 Gbps

ENA

d2.xlarge

Intel 82599 VF
d2.2xlarge | d2.4xlarge

Intel 82599 VF
d2.8xlarge

10 Gbps

Intel 82599 VF

SSD I/O パフォーマンス

カーネルバージョン 4.4 以降の Linux AMI を使用し、インスタンスで利用可能なすべての SSD ベースのインスタンスストアボリュームを使用する場合は、以下の表に示されている IOPS (4,096 バイトブロックサイズ) のパフォーマンスを得ることができます (キューの深さの飽和度において)。それ以外の場合、IOPS パフォーマンスは低下します。

インスタンスサイズ 100% のランダム読み取り時 IOPS 書き込み IOPS

i3.large *

100,125

35,000

i3.xlarge *

206,250

70,000

i3.2xlarge

412,500

180,000

i3.4xlarge

825,000

360,000

i3.8xlarge

1,650,000

720,000

i3.16xlarge

3,300,000

140 万

i3.metal

3,300,000

140 万

i3en.large *

42,500

32,500

i3en.xlarge *

85,000

65,000

i3en.2xlarge *

170,000

130,000

i3en.3xlarge

250,000

200,000 件の

i3en.6xlarge

500,000

400,000

i3en.12xlarge

100 万件

800,000

i3en.24xlarge

200 万件

160 万件

i3en.metal

200 万件

160 万件

* これらのインスタンスの場合、最大で指定されたパフォーマンスを得ることができます。

SSD ベースのインスタンスストアボリュームをいっぱいにすると、得られる I/O パフォーマンスは低下します。これは、SSD コントローラーが実行する必要がある追加の作業が原因です。SSD コントローラーは、利用可能な領域を見つけ、既存のデータを再書き込みし、未使用の領域を消去して、再書き込みができるようにします。このガベージコレクションというプロセスにより、SSD への内部的な書き込み増幅が発生し、ユーザーの書き込み操作に対する SSD 書き込み操作の割合として表示されます。書き込み操作が 4,096 バイトの倍数でないか、4,096 バイトの境界に整合していない場合、パフォーマンスの低下はさらに大きくなります。少量のバイト数または整合していないバイト数で書き込む場合、SSD コントローラーは周辺のデータを読み取り、その結果を新しい場所に保存する必要があります。このパターンにより、書き込み増幅が大幅に増え、レイテンシーが増加し、I/O パフォーマンスが大きく低下します。

SSD コントローラーは、複数の方法を利用すると、書き込み増幅の影響を減らすことができます。このような方法の 1 つには、SSD インスタンスストレージに領域を予約し、コントローラーが書き込み操作に利用できる領域をより効率的に管理できるようにすることです。これをオーバープロビジョニングと呼びます。インスタンスに提供された SSD ベースのインスタンスストアボリュームには、オーバープロビジョニングに対して予約された領域がありません。書き込み増幅を減らすには、ボリュームの 10% を未使用の状態のままにし、SSD コントローラーがこれをオーバープロビジョニングに使用できるようにすることをお勧めしますこれにより、使用できるストレージは減りますが、ディスクが総容量に近づいた場合でもパフォーマンスを向上させることができます。

TRIM をサポートするインスタンスストアボリュームの場合、TRIM コマンドを使用して、書き込んだデータが不要になったときはいつでも SSD コントローラーに通知することができます。これにより、より多くの空き領域がコントローラーに与えられ、その結果書き込み増幅が減り、パフォーマンスが向上します。詳細については、「インスタンスストアボリュームの TRIM のサポート」を参照してください。

インスタンスの機能

ストレージ最適化インスタンスの機能の概要を以下に示します。

EBS のみ インスタンスストア 配置グループ

D2

いいえ

HDD

はい

H1

いいえ

HDD *

はい

I3

いいえ

NVMe *

はい

I3en

いいえ

NVMe *

はい

* ルートデバイスボリュームは、Amazon EBS ボリュームにする必要があります。

詳細については、以下を参照してください。

個の vCPU のサポート

d2.8xlarge インスタンスでは 36 個の vCPU が提供されますが、これにより vCPU を 32 個に制限している一部の Linux オペレーティング システムで問題が生じる可能性があります。d2.8xlarge インスタンスを起動する場合は、最新の AMI を使用することをお勧めします。

次の Linux AMI は、36 個の vCPU を使用した d2.8xlarge インスタンスの起動をサポートしています。

  • Amazon Linux 2 (HVM)

  • Amazon Linux AMI 2018.03 (HVM)

  • Ubuntu Server 14.04 LTS (HVM) 以降

  • Red Hat Enterprise Linux 7.1 (HVM)

  • SUSE Linux Enterprise Server 12 (HVM)

アプリケーションに別の AMI を使用する必要がある場合に、d2.8xlarge インスタンスの起動が正常に完了しないとき (stopped 状態遷移に伴って起動中にインスタンスのステータスが Client.InstanceInitiatedShutdown に変更されるときなど) は、以下の手順に従って 32 個を超える vCPU をサポートするようにインスタンスを変更し、d2.8xlarge インスタンスタイプを使用できるようにします。

32 個の以上の vCPU をサポートするようにインスタンスを更新する

  1. AMI を使用して D2 インスタンスを起動し、d2.8xlarge 以外の D2 インスタンスタイプを選択します。

  2. 使用するオペレーティングシステム固有の手順に従って、カーネルを最新バージョンに更新します。たとえば、RHEL 6 の場合は、次のコマンドを使用します。

    sudo yum update -y kernel
  3. インスタンスを停止します。

  4. (オプション) 将来的に必要な追加の d2.8xlarge インスタンスを起動するために使用できるインスタンスから AMI を作成します。

  5. 停止したインスタンスのインスタンスタイプを d2.8xlarge に変更します ([Actions]、[Instance Settings]、[Change Instance Type] の順に選択し、指示に従います)。

  6. インスタンスを起動します。インスタンスが正常に起動すれば、完了です。これでもインスタンスが正しく実施されない場合、以下のステップに進みます。

  7. (オプショナル) インスタンスがまだ正しく実施されない場合、インスタンスのカーネルが 32 個の vCPU をサポートしていない可能性があります。ただし、vCPU を制限すると、インスタンスを起動できる場合があります。

    1. 停止したインスタンスのインスタンスタイプを d2.8xlarge 以外の D2 インスタンスタイプのいずれかに変更します ([Actions]、[Instance Settings]、[Change Instance Type] の順に選択し、指示に従います)。

    2. 使用するオペレーティングシステム固有の手順に従って、カーネル起動パラメータに maxcpus=32 オプションを追加します。たとえば、RHEL 6 の場合は、/boot/grub/menu.lst ファイルを編集し、最新のアクティブな kernel エントリに次のオプションを追加します。

      default=0 timeout=1 splashimage=(hd0,0)/boot/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server (2.6.32-504.3.3.el6.x86_64) root (hd0,0) kernel /boot/vmlinuz-2.6.32-504.3.3.el6.x86_64 maxcpus=32 console=ttyS0 ro root=UUID=9996863e-b964-47d3-a33b-3920974fdbd9 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 xen_blkfront.sda_is_xvda=1 console=ttyS0,115200n8 console=tty0 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM initrd /boot/initramfs-2.6.32-504.3.3.el6.x86_64.img
    3. インスタンスを停止します。

    4. (オプション) 将来的に必要な追加の d2.8xlarge インスタンスを起動するために使用できるインスタンスから AMI を作成します。

    5. 停止したインスタンスのインスタンスタイプを d2.8xlarge に変更します ([Actions]、[Instance Settings]、[Change Instance Type] の順に選択し、指示に従います)。

    6. インスタンスを起動します。

リリースノート

  • ストレージ最適化インスタンスは、HVM AMI を使用して起動する必要があります。詳細については、「Linux AMI 仮想化タイプ」を参照してください。

  • I3en および i3.metal インスタンスの要件を以下に示します。

    • NVMe ドライバーがインストールされている必要があります。EBS ボリュームは NVMe ブロックデバイスとして公開されます。

    • Elastic Network Adapter (ENA) ドライバーがインストールされている必要があります。

    以下の AMI はこれらの要件を満たしています。

    • Amazon Linux 2

    • Amazon Linux AMI 2018.03

    • Ubuntu 14.04 (linux-aws カーネル) 以降

    • Red Hat Enterprise Linux 7.4 以降

    • SUSE Linux Enterprise Server 12 SP2 以降

    • CentOS 7.4.1708 以降

    • FreeBSD 11.1 以降

  • i3.metal インスタンスを起動すると、基盤となるサーバーが起動します。これには、すべてのハードウェアやファームウェアコンポーネントの確認が含まれます。つまり、インスタンスが実行状態になってからネットワーク経由で使用できるようになるまでに 20 分かかることがあります。

  • ベアメタルインスタンスから EBS ボリュームまたはセカンダリネットワークインターフェイスをアタッチまたはデタッチするには、PCIe のネイティブホットプラグサポートが必要です。Amazon Linux 2 および最新バージョンの Amazon Linux AMI は PCIe ネイティブホットプラグをサポートしていますが、以前のバージョンではサポートされていません。次の Linux カーネル設定オプションを有効にする必要があります。

    CONFIG_HOTPLUG_PCI_PCIE=y CONFIG_PCIEASPM=y
  • ベアメタルインスタンスでは、I/O ポートベースのシリアルデバイスではなく、PCI ベースのシリアルデバイスを使用しています。アップストリームの Linux カーネルと最新の Amazon Linux AMI は、このデバイスをサポートしています。また、ベアメタルインスタンスでは、システムが PCI ベースのシリアルデバイスを自動的に使用できるようにする ACPI SPCR テーブルも使用できます。最新の Windows AMI では、自動的に PCI ベースのシリアルデバイスが使用されます。

  • FreeBSD AMI では、ベアメタルインスタンスは、起動に約 1 時間かかり、ローカルの NVMe ストレージへの I/O は完了しません。回避策として、次の行を /boot/loader.conf に追加し、再起動します。

    hw.nvme.per_cpu_io_queues="0"
  • d2.8xlarge インスタンスタイプには 36 個の vCPU がありますが、これにより vCPU を 32 個に制限している一部の Linux オペレーティング システムで問題が生じる可能性があります。詳細については、「個の vCPU のサポート」を参照してください。

  • リージョンで起動できるインスタンスの合計数には制限があります。また、一部のインスタンスタイプにはその他の制限もあります。詳細については、「Amazon EC2 で実行できるインスタンスの数はいくつですか?」を参照してください。制限の引き上げをリクエストするには、「Amazon EC2 インスタンス申請フォーム」を使用します。