

# EC2 インスタンス用のインスタンスストアの一時ブロックストレージ
<a name="InstanceStorage"></a>

*インスタンスストア*はEC2 インスタンス用に一時的なブロックレベルストレージを提供します。このストレージはホストコンピュータに物理的にアタッチされたディスクによって提供されます。インスタンスストアはバッファ、キャッシュ、スクラッチデータ、その他の一時的データのように頻繁に変化する情報の一時的なストレージに最適です。また、負荷分散されたウェブサーバーのプールなど、インスタンスのフリート全体で複製する一時データを保存するためにも使用できます。

インスタンスストアはブロックデバイスとして表示される 1 つ以上のインスタンスストアボリュームで構成されます。インスタンスストアのサイズと、利用可能なデバイスの数はインスタンスタイプおよびインスタンスサイズによって異なります。例えば、すべてのインスタンスタイプでインスタンスストアボリュームが提供されるわけではありません。詳細については「[EC2 インスタンスのインスタンスストアボリュームの制限](instance-store-volumes.md)」を参照してください。

インスタンスストアボリュームの仮想デバイスには`ephemeral0` から `ephemeral23` の順序で仮想デバイス名が付けられます。例えば、1 つのインスタンスストアボリュームをサポートするインスタンスタイプではその 1 つのボリュームの仮想デバイス名は `ephemeral0` になります。4 つのインスタンスストアボリュームをサポートするインスタンスタイプではその 4 つのボリュームの仮想デバイス名は `ephemeral0`、`ephemeral1`、`ephemeral2`、および `ephemeral3` になります。

![\[Amazon EC2 インスタンスストレージ\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/instance_storage.png)


**インスタンスストアの価格**  
インスタンス用に提供されたインスタンスストアボリュームの使用には追加料金はかかりません。インスタンスストアボリュームはインスタンスの使用料の一部として含まれます。

**Topics**
+ [

# Amazon EC2 インスタンスストアボリュームのデータの永続性
](instance-store-lifetime.md)
+ [

# EC2 インスタンスのインスタンスストアボリュームの制限
](instance-store-volumes.md)
+ [

# EC2 インスタンスの SSD インスタンスストアボリューム
](ssd-instance-store.md)
+ [

# EC2 インスタンスへのインスタンスストアボリュームの追加
](add-instance-store-volumes.md)
+ [

# M1 および C1 EC2 インスタンスのインスタンスストアスワップボリュームの有効化
](instance-store-swap-volumes.md)
+ [

# EC2 インスタンスでのインスタンスストアボリュームの初期化
](disk-performance.md)
+ [

# Amazon EC2 インスタンスストアボリュームの詳細なパフォーマンス統計
](nvme-detailed-performance-stats.md)

# Amazon EC2 インスタンスストアボリュームのデータの永続性
<a name="instance-store-lifetime"></a>

インスタンスストアボリュームはインスタンスの起動時にのみアタッチされます。起動後にインスタンスストアボリュームをアタッチすることはできません。1 つのインスタンスからインスタンスストアをデタッチして別のインスタンスにアタッチすることはできません。

インスタンスストアボリュームはアタッチされているインスタンスのライフタイム中にのみ存在します。インスタンスストアボリュームが、関連付けられたインスタンスのライフタイムを超えて維持されるように設定することはできません。

インスタンスストアボリューム上のデータはインスタンスが再起動しても保持されます。ただし、インスタンスが停止、休止、終了するとデータは消滅します。インスタンスが停止、休止、終了した場合、インスタンスストアボリュームのすべてのブロックが暗号で消去されます。

このため、長期的に使用する重要なデータがある場合はインスタンスストアに頼りすぎないようにしてください。インスタンスストアボリュームに保存されているデータを、インスタンスのライフタイムを超えて保持する必要がある場合はそのデータを Amazon EBS ボリューム、Amazon S3 バケット、Amazon EFS ファイルシステムなどのより永続的なストレージに手動でコピーする必要があります。

イベントによってはインスタンスのライフタイムを通じてデータが保持されなくなる場合があります。次の表は仮想インスタンスとベアメタルインスタンスの両方について、特定のイベント中にインスタンスストアボリュームのデータが保持されるかどうかを示しています。


| イベント | データはどうなりますか？ | 
| --- |--- |
| **ユーザー主導のインスタンスライフサイクルイベント** | 
| --- |
| [インスタンスが再起動されます。](ec2-instance-reboot.md) | The data persists | 
| [インスタンスが停止しました。](Stop_Start.md) | The data does not persist | 
| [インスタンスが休止しました。](Hibernate.md) | The data does not persist | 
| [インスタンスが終了しました。](terminating-instances.md) | The data does not persist | 
| [インスタンスタイプが変更されます。](ec2-instance-resize.md) | The data does not persist \$1 | 
| [EBS-backed AMI はインスタンスから作成されます。](creating-an-ami-ebs.md) | The data does not persist in the created AMI \$1\$1 | 
| [Amazon S3-backed AMI はインスタンスから作成されます。](creating-an-ami-instance-store.md) (Linux instances) | The data persists in the AMI bundle uploaded to Amazon S3 \$1\$1\$1 | 
| **ユーザー主導の OS イベント** | 
| --- |
| A shutdown is initiated | The data does not persist † | 
| A restart is initiated | The data persists | 
| **AWS で予定されているイベント** | 
| --- |
| [インスタンスの停止](schedevents_actions_retire.md) | The data does not persist | 
| [インスタンスの再起動](schedevents_actions_reboot.md) | The data persists | 
| [システムの再起動](schedevents_actions_reboot.md) | The data persists | 
| [インスタンスのリタイア](schedevents_actions_retire.md) | The data does not persist | 
| **想定外のイベント** | 
| --- |
| [簡易自動復旧](instance-configuration-recovery.md) | The data does not persist | 
| [CloudWatch アクションに基づく復旧](cloudwatch-recovery.md) | The data does not persist | 
| The underlying disk fails | The data on the failed disk does not persist | 
| Power failure | The data persists upon reboot | 

\$1 新しいインスタンスタイプがインスタンスストアをサポートしている場合、インスタンスは新しいインスタンスタイプがサポートしているインスタンスストアボリュームの数を取得しますが、データは新しいインスタンスに転送されません。新しいインスタンスタイプがインスタンスストアをサポートしていない場合、インスタンスはインスタンスストアボリュームを取得しません。

\$1\$1 データは EBS-backed AMI には含まれず、その AMI から起動されたインスタンスにアタッチされたインスタンスストアボリュームにも含まれません。

\$1\$1\$1 データは Amazon S3 にアップロードされる AMI バンドルに含まれます。その AMI からインスタンスを起動すると、インスタンスはAMI の作成時に含まれていたデータとともに AMI にバンドルされたインスタンスストアボリュームを取得します。

† 終了保護と停止保護はインスタンスのオペレーティングシステムを通じて開始したシャットダウンの結果、インスタンスが停止または終了することに対してインスタンスを保護しません。インスタンスストアボリュームに保存されたデータはインスタンスの停止イベントと終了イベントの両方で保持されません。

# EC2 インスタンスのインスタンスストアボリュームの制限
<a name="instance-store-volumes"></a>

インスタンスストアボリュームの数、サイズ、タイプはインスタンスタイプによって決まります。C8i、M8i、R8i などの一部のインスタンスタイプはインスタンスストアボリュームをサポートしていませんが、C8id、M8id、R8id などのその他のインスタンスタイプはインスタンスストアボリュームをサポートしています。1 つのインスタンスに、そのインスタンスタイプでサポートされる量を超えるインスタンスストアボリュームをアタッチすることはできません。インスタンスストアボリュームをサポートするインスタンスタイプの場合、インスタンスストアボリュームの数とサイズはインスタンスサイズによって異なります。例えば、`r8id.large` は 1 x 118 GB のインスタンスストアボリュームをサポートし、`r8id.32xlarge` は 2 x 3800 GB のインスタンスストアボリュームをサポートします。

**NVMe インスタンスストアボリューム**を使用するインスタンスタイプではサポートされているすべてのインスタンスストアボリュームが、起動時に自動的にインスタンスにアタッチされます。C1、C3、M1、M2、M3、R3、D2、H1、I2、X1、X1e など、**NVMe 以外のインスタンスストアボリューム**のインスタンスタイプでは起動時にアタッチするインスタンスストアボリュームのブロックデバイスマッピングを手動で指定する必要があります。次に、インスタンスが起動したら、アタッチされたインスタンスストアボリュームを使用する前に、[フォーマットしてマウントする](making-instance-stores-available-on-your-instances.md)必要があります。インスタンスの起動後にインスタンスストアボリュームをアタッチすることはできません。

インスタンスタイプにはNVMe または SATA ベースのソリッドステートドライブ (SSD) を使用するものと、SATA ベースのハードディスクドライブ (HDD) を使用するものがあります。SSD は極めて低いレイテンシーで高いランダム I/O パフォーマンスを提供しますが、インスタンスの終了時にデータを保持する必要はなく、フォールトトレラントアーキテクチャを活用できます。詳細については「[EC2 インスタンスの SSD インスタンスストアボリューム](ssd-instance-store.md)」を参照してください。

NVMe インスタンスストアボリューム、および一部の HDD インスタンスストアボリュームにあるデータはその保存時に暗号化されます。詳細については「[Amazon EC2 でのデータ保護](data-protection.md)」を参照してください。

## 使用可能なインスタンスストアボリューム
<a name="available-instance-store-volumes"></a>

「*Amazon EC2 Instance Types ガイド*」にはサポートされている各インスタンスタイプで使用できる、インスタンスストアボリュームの数量、サイズ、タイプ、パフォーマンス最適化を記載しています。詳細については次を参照してください:
+ [インスタンスストア仕様 — 汎用](https://docs.aws.amazon.com/ec2/latest/instancetypes/gp.html#gp_instance-store)
+ [インスタンスストア仕様 — コンピューティング最適化](https://docs.aws.amazon.com/ec2/latest/instancetypes/co.html#co_instance-store)
+ [インスタンスストア仕様 — メモリ最適化](https://docs.aws.amazon.com/ec2/latest/instancetypes/mo.html#mo_instance-store)
+ [インスタンスストア仕様 — ストレージ最適化](https://docs.aws.amazon.com/ec2/latest/instancetypes/so.html#so_instance-store)
+ [インスタンスストア仕様 — 高速コンピューティング](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html#ac_instance-store)
+ [インスタンスストア仕様 — ハイパフォーマンスコンピューティング](https://docs.aws.amazon.com/ec2/latest/instancetypes/hpc.html#hpc_instance-store)
+ [インスタンスストア仕様 — 旧世代](https://docs.aws.amazon.com/ec2/latest/instancetypes/pg.html#pg_instance-store)

------
#### [ Console ]

**インスタンスストアボリュームの情報を取得するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンスタイプ**] を選択します。

1. **Local instance storage = true** フィルターを追加します。**[ストレージ]** 列には、インスタンスタイプの、インスタンスストレージの合計容量が記載されています。

1. (オプション) **[設定]** アイコンをクリックして、**[ストレージディスク数]** をオンにします。この列には、インスタンスストアボリュームの数が記載されています。

1. (オプション) フィルターを追加して、対象の、特定のインスタンスタイプをさらに絞り込みます。

------
#### [ AWS CLI ]

**インスタンスストアボリュームの情報を取得するには**  
[describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html) コマンドを使用します。次の例では、インスタンスストアボリュームを持つの R8i インスタンスファミリーの、各インスタンスタイプのインスタンスストレージの合計サイズが表示されています。

```
aws ec2 describe-instance-types \
    --filters "Name=instance-type,Values=r8i*" "Name=instance-storage-supported,Values=true" \
    --query 'sort_by(InstanceTypes, &InstanceStorageInfo.TotalSizeInGB)[].{InstanceType:InstanceType,TotalSizeInGB:InstanceStorageInfo.TotalSizeInGB}' \
    --output table
```

出力例を次に示します。

```
--------------------------------------
|        DescribeInstanceTypes       |
+------------------+-----------------+
|   InstanceType   |  TotalSizeInGB  |
+------------------+-----------------+
|  r8id.large      |  118            |
|  r8id.xlarge     |  237            |
|  r8id.2xlarge    |  474            |
|  r8id.4xlarge    |  950            |
|  r8id.8xlarge    |  1900           |
|  r8id.12xlarge   |  2850           |
|  r8id.16xlarge   |  3800           |
|  r8id.24xlarge   |  5700           |
|  r8id.32xlarge   |  7600           |
|  r8id.48xlarge   |  11400          |
|  r8id.metal-48xl |  11400          |
|  r8id.96xlarge   |  22800          |
|  r8id.metal-96xl |  22800          |
+------------------+-----------------+
```

**インスタンスタイプのインスタンスストレージの詳細を入手するには**  
[describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html) コマンドを使用します。

```
aws ec2 describe-instance-types \
    --filters "Name=instance-type,Values=r8id.32xlarge" \
    --query 'InstanceTypes[0].InstanceStorageInfo' \
    --output json
```

こちらの出力例には、このインスタンスタイプに 3800 GB の NVMe SSD ボリュームが 2 つあり、合計 7600 GB のインスタンスストレージがあることが示されています。

```
{
    "TotalSizeInGB": 7600,
    "Disks": [
        {
            "SizeInGB": 3800,
            "Count": 2,
            "Type": "ssd"
        }
    ],
    "NvmeSupport": "required",
    "EncryptionSupport": "required"
}
```

------
#### [ PowerShell ]

**インスタンスストアボリュームの情報を取得するには**  
[Get-EC2InstanceType](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html) コマンドレットを使用します。次の例では、インスタンスストアボリュームを持つの R8i インスタンスファミリーの、各インスタンスタイプのインスタンスストレージの合計サイズが表示されています。

```
(Get-EC2InstanceType -Filter `
    @{Name="instance-type"; Values="r8i*"},
    @{Name="instance-storage-supported"; Values="true"}) |
    Sort-Object {$_.InstanceStorageInfo.TotalSizeInGB} |
    Format-Table InstanceType,
        @{Name="Disks.SizeInGB";Expression={$_.InstanceStorageInfo.Disks[0].SizeInGB}},
        @{Name="Disks.Count";Expression={$_.InstanceStorageInfo.Disks[0].Count}},
        @{Name="TotalSizeInGB";Expression={$_.InstanceStorageInfo.TotalSizeInGB}}
```

出力例を次に示します。

```
InstanceType    Disks.SizeInGB Disks.Count TotalSizeInGB
------------    -------------- ----------- -------------
r8id.large                 118           1           118
r8id.xlarge                237           1           237
r8id.2xlarge               474           1           474
r8id.4xlarge               950           1           950
r8id.8xlarge              1900           1          1900
r8id.12xlarge             2850           1          2850
r8id.16xlarge             3800           1          3800
r8id.24xlarge             2850           2          5700
r8id.32xlarge             3800           2          7600
r8id.48xlarge             3800           3         11400
r8id.metal-48xl           3800           3         11400
r8id.96xlarge             3800           6         22800
r8id.metal-96xl           3800           6         22800
```

**インスタンスタイプのインスタンスストレージの詳細を入手するには**  
[Get-EC2InstanceType](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html) コマンドレットを使用します。

```
(Get-EC2InstanceType `
    -Filter @{Name="instance-type"; Values="r8id.32xlarge"}).InstanceStorageInfo |
    Format-List *,
        @{Name="Disks.Count";Expression={$_.Disks[0].Count}},
        @{Name="Disks.SizeInGB";Expression={$_.Disks[0].SizeInGB}},
        @{Name="Disks.Type";Expression={$_.Disks[0].Type.Value}}
```

こちらの出力例には、このインスタンスタイプに 3800 GB の NVMe SSD ボリュームが 2 つあり、合計 7600 GB のインスタンスストレージがあることが示されています。

```
Disks             : {Amazon.EC2.Model.DiskInfo}
EncryptionSupport : required
NvmeSupport       : required
TotalSizeInGB     : 7600
Disks.Count       : 2
Disks.SizeInGB    : 3800
Disks.Type        : ssd
```

------

# EC2 インスタンスの SSD インスタンスストアボリューム
<a name="ssd-instance-store"></a>

他のインスタンスストアボリュームと同様に、インスタンスの SSD インスタンスストアボリュームを起動するときにマップする必要があります。SSD インスタンスボリューム上のデータは関連するインスタンスの存続期間中のみ維持されます。詳細については[EC2 インスタンスへのインスタンスストアボリュームの追加](add-instance-store-volumes.md)を参照してください。

## NVMe SSD ボリューム
<a name="nvme-ssd-volumes"></a>

インスタンスによってはNon-Volatile Memory Express (NVMe) ソリッドステートドライブ (SSD) インスタンスストアボリュームを提供するものもあります。各インスタンスタイプによりサポートされるインスタンスストアボリュームのタイプの詳細については[EC2 インスタンスのインスタンスストアボリュームの制限](instance-store-volumes.md)を参照してください。

NVMe インスタンスストレージのデータはインスタンスのハードウェアモジュールに実装されている XTS-AES-256 ブロック暗号を使用して暗号化されます。暗号化キーはハードウェアモジュールで作成され、NVMe インスタンスストレージデバイスごとに固有です。すべての暗号化キーはインスタンスが停止または終了して復元できないときに破棄されます。この暗号化を無効にしたり、独自の暗号キーを指定したりすることはできません。

### Linux インスタンス
<a name="nvme-ssd-linux"></a>

NVMe ボリュームにアクセスするにはNVMe ドライバーをインストールする必要があります。以下の AMI はこの要件を満たしています。
+ AL2023
+ Amazon Linux 2
+ Amazon Linux AMI 2018.03 以降
+ `linux-aws` カーネルを搭載した Ubuntu 14.04 以降
**注記**  
AWS Graviton ベースのインスタンスタイプには`linux-aws` カーネル搭載の Ubuntu 18.04 以降が必要です
+ Red Hat Enterprise Linux 7.4 以降
+ SUSE Linux Enterprise Server 12 SP2 以降
+ CentOS 7.4.1708 以降
+ FreeBSD 11.1 以降
+ Debian GNU/Linux 9 以降
+ Bottlerocket

インスタンスに接続したら、**lspci** コマンドを使用して NVMe デバイスをリストできます。次に示すのは4 つの NVMe デバイスをサポートする `i3.8xlarge` インスタンスの出力例です。

```
[ec2-user ~]$ lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 01)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Ethernet controller: Device 1d0f:ec20
00:17.0 Non-Volatile memory controller: Device 1d0f:cd01
00:18.0 Non-Volatile memory controller: Device 1d0f:cd01
00:19.0 Non-Volatile memory controller: Device 1d0f:cd01
00:1a.0 Non-Volatile memory controller: Device 1d0f:cd01
00:1f.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device (rev 01)
```

サポートされているオペレーティングシステムを使用しているが、NVMe デバイスが表示されない場合は次のコマンドを使用して NVMe モジュールが読み込まれていることを確認します。
+ Amazon Linux、Amazon Linux 2、Ubuntu 14/16、Red Hat Enterprise Linux、SUSE Linux Enterprise Server、CentOS 7

  ```
  $ lsmod | grep nvme
  nvme          48813  0
  ```
+ Ubuntu 18

  ```
  $ cat /lib/modules/$(uname -r)/modules.builtin | grep nvme
  s/nvme/host/nvme-core.ko
  kernel/drivers/nvme/host/nvme.ko
  kernel/drivers/nvmem/nvmem_core.ko
  ```

NVMe ボリュームは NVMe 1.0e 仕様に準拠しています。NVMe コマンドは NVMe ボリュームで使用できます。Amazon Linux では`nvme-cli` コマンドを使用して repo から **yum install** パッケージをインストールできます。サポートされているバージョンの Linux ではイメージで利用可能でない場合は `nvme-cli` パッケージをダウンロードできます。

### Windows インスタンス
<a name="nvme-ssd-windows"></a>

以下のオペレーティングシステムの最新の AWS Windows AMI にはAWS NVMe ドライバーが含まれています。これらはパフォーマンス向上のために NVMe ブロックデバイスとして公開される SSD インスタンスストアボリュームを操作するために使用します。
+ Windows Server 2025
+ Windows Server 2022
+ Windows Server 2019
+ Windows Server 2016
+ Windows Server 2012 R2

インスタンスに接続したら、ディスクマネージャーで NVMe ボリュームが表示されることを確認できます。タスクバーで、Windows ロゴのコンテキスト (右クリック) メニューを開き、[**Disk Management**] を選択してください。

Amazon が提供する AWS Windows AMI にはAWS NVMe ドライバーが含まれています。最新の AWS Windows AMI を使用していない場合は[現行の AWS NVMe ドライバーをインストール](aws-nvme-drivers.md)できます。

## 非 NVMe SSD ボリューム
<a name="ssd-volumes"></a>

C3、I2、M3、R3、X1 の各インスタンスは非 NVMe SSD を使用するインスタンスストアボリュームをサポートすることで、高いランダム I/O パフォーマンスを実現しています。各インスタンスタイプによりサポートされるインスタンスストアボリュームの詳細については[EC2 インスタンスのインスタンスストアボリュームの制限](instance-store-volumes.md)を参照してください。

## SSD ベースのインスタンスストアボリュームの I/O パフォーマンス
<a name="ssd-volume-perf"></a>

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

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

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

## インスタンスストアボリュームの TRIM のサポート
<a name="InstanceStoreTrimSupport"></a>

一部のインスタンスタイプではTRIM を持つ SSD ボリュームがサポートされます。詳細については「[EC2 インスタンスのインスタンスストアボリュームの制限](instance-store-volumes.md)」を参照してください。

**注記**  
(Windows インスタンスのみ) Windows Server 2012 R2 を実行するインスタンスはAWS PV ドライバーバージョン 7.3.0 以降の TRIM をサポートしています。以前のバージョンの Windows Server を実行しているインスタンスは TRIM をサポートしていません。

TRIM をサポートしているインスタンスストアボリュームはインスタンスに割り当てられる前に完全に TRIM が実行されます。これらのボリュームはインスタンスの起動時にファイルシステムを使用してフォーマットされないため、マウントして使用する前にボリュームをフォーマットする必要があります。これらのボリュームを迅速に使用できるようにするにはボリュームをフォーマットするときに、TRIM 操作をスキップします。

(Windows インスタンス) 初回フォーマット中に TRIM のサポートを一時的に無効化するには`fsutil behavior set DisableDeleteNotify 1` コマンドを使用します。フォーマットが完了したら、`fsutil behavior set DisableDeleteNotify 0` を使用して TRIM のサポートを再度有効にします。

TRIM をサポートするインスタンスストアボリュームではTRIM コマンドを使用して、書き込んだデータが不要になったときに SSD コントローラーに通知することができます。これにより、より多くの空き領域がコントローラーに与えられ、その結果書き込み増幅が減り、パフォーマンスが向上します。**Linux インスタンス**では`fstrim` コマンドを使用して定期的な TRIM を有効にします。**Windows インスタンス**では`fsutil behavior set DisableDeleteNotify 0` コマンドを使用して、通常のオペレーション中に TRIM サポートが有効になるようにします。

# EC2 インスタンスへのインスタンスストアボリュームの追加
<a name="add-instance-store-volumes"></a>

**NVMe インスタンスストアボリューム**を使用するインスタンスタイプではサポートされているすべてのインスタンスストアボリュームが、起動時に自動的にインスタンスにアタッチされます。NVMe インスタンスストアボリュームはインスタンスの起動時に自動的に列挙され、デバイス名が割り当てられます。

C1、C3、M1、M2、M3、R3、D2、H1、I2、X1、X1e など、**NVMe 以外のインスタンスストアボリューム**のインスタンスタイプでは起動時にアタッチするインスタンスストアボリュームのブロックデバイスマッピングを手動で指定する必要があります。ブロックデバイスマッピングはインスタンス起動リクエストで、またはインスタンスの起動に使用される AMI で指定できます。ブロックデバイスマッピングにはデバイス名とそれがマッピングされたボリュームが含まれます。詳細については「[Amazon EC2 インスタンスでのボリュームのブロックデバイスマッピング](block-device-mapping-concepts.md)」を参照してください。

**重要**  
インスタンスを起動する場合にのみ、インスタンスストアボリュームをインスタンスにアタッチできます。また、起動後のインスタンスにインスタンスストアボリュームをアタッチすることはできません。

インスタンスを起動したら、使用する前に、インスタンスのインスタンスストアボリュームがフォーマットされ、マウントされていることを確認する必要があります。インスタンスストアのルートボリュームは自動的にマウントされます。

**ルートボリュームに関する考慮事項**  
ブロックデバイスマッピングでは常にインスタンスのルートボリュームを指定します。ルートボリュームは常に自動的にマウントされます。

**Linux インスタンス** – ルートボリュームはAmazon EBS ボリュームまたはインスタンスストアボリュームのいずれかです。ルートボリュームのインスタンスストアボリュームを持つインスタンスの場合、このボリュームのサイズは AMI によって異なりますが、最大サイズは 10 GB です。詳細については「[ルートボリュームタイプ](ComponentsAMIs.md#storage-for-the-root-device)」を参照してください。

**Windows インスタンス** – ルートボリュームは Amazon EBS ボリュームである必要があります。インスタンスストアはルートボリュームではサポートされていません。

**Topics**
+ [

# Amazon EC2 AMI にインスタンスストアボリュームを追加する
](adding-instance-storage-ami.md)
+ [

# 起動時に EC2 インスタンスにインスタンスストアボリュームを追加する
](adding-instance-storage-instance.md)
+ [

# インスタンスストアボリュームを EC2 インスタンスで使用できるようにする
](making-instance-stores-available-on-your-instances.md)

# Amazon EC2 AMI にインスタンスストアボリュームを追加する
<a name="adding-instance-storage-ami"></a>

インスタンスストアボリュームが含まれる、ブロックデバイスマッピングを持つ AMI を作成できます。

インスタンスストアボリュームブロックデバイスマッピングを指定する AMI を使用して、**非 NVMe のインスタンスストアボリューム**をサポートするインスタンスを起動すると、インスタンスにインスタンスストアボリュームが含まれます。AMI のインスタンスストアボリュームブロックデバイスマッピングの数がインスタンスに利用できるインスタンスストアボリュームの数を超えた場合、追加のインスタンスストアボリュームブロックデバイスマッピングは無視されます。

インスタンスストアボリュームブロックデバイスマッピングを指定する AMI を使用して、**NVMe インスタンスストアボリューム**をサポートするインスタンスを起動した場合、インスタンスストアボリュームブロックデバイスマッピングは無視されます。NVMe インスタンスストアボリュームをサポートするインスタンスはインスタンス起動リクエストと AMI で指定されたブロックデバイスマッピングに関らず、サポートされているすべてのインスタンスストアボリュームを取得します。これらのボリュームのデバイスマッピングは、オペレーティングシステムがこれらのボリュームを列挙する順序に応じて決まります。

**考慮事項**
+ 使用できるインスタンスストアボリュームの数はインスタンスタイプによって異なります。詳細については「[使用可能なインスタンスストアボリューム](instance-store-volumes.md#available-instance-store-volumes)」を参照してください。
+ デバイス名をブロックデバイスごとに指定する必要があります。詳細については「[Amazon EC2 インスタンス上のボリュームのデバイス名](device_naming.md)」を参照してください。
+ インスタンスを起動する際に、AMI ブロックデバイスマッピングで指定された 非 NVMe インスタンスストアボリュームを省略したり、インスタンスストアボリュームを追加したりできます。
+ M3 インスタンスの場合はAMI ではなく、インスタンスのブロックデバイスマッピングにあるインスタンスストアボリュームを指定します。Amazon EC2 はAMI のインスタンスストアボリュームブロックデバイスマッピングを無視することがあります。

------
#### [ Console ]

**インスタンスストアボリュームを Amazon EBS-backed AMI に追加するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Instances**] を選択し、インスタンスを選択してください。

1. [**アクション**]、[**Image and templates (イメージとテンプレート)**]、[**イメージの作成**] の順に選択してください。

1. [**イメージの作成**] ページで、イメージの意味のある名前と説明を追加します。

1. 追加する各インスタンスストアボリュームについて、[**ボリュームの追加**] を選択し、[**ボリュームタイプ**] からインスタンスストアボリュームを選択して、[**デバイス**] からデバイス名を選択してください。

1. [**イメージを作成**] を選択してください。

------
#### [ AWS CLI ]

**インスタンスストアボリュームを AMI に追加するには**  
EBS-Backed AMI のブロックデバイスマッピングを指定するには、[create-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html) コマンドを `--block-device-mappings` オプションと共に使用します。Amazon S3-backed AMI のブロックデバイスマッピングを指定するには、[register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) コマンドを `--block-device-mappings` オプションと共に使用します。

```
--block-device-mappings file://mapping.json
```

次のブロックデバイスマッピングでは、2 つのインスタンスストアボリュームを追加します。

```
[
    {
        "DeviceName": "/dev/sdc",
        "VirtualName": "ephemeral0"
    },
    {
        "DeviceName": "/dev/sdd",
        "VirtualName": "ephemeral1"
    }
]
```

------
#### [ PowerShell ]

**インスタンスストアボリュームを AMI に追加するには**  
[New-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Image.html) コマンドレットを `-BlockDeviceMapping` パラメータと共に使用して、EBS-Backed AMI のブロックデバイスマッピングを指定します。[Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) コマンドレットを `-BlockDeviceMapping` パラメータと共に使用して、Amazon S3-backed AMI のブロックデバイスマッピングを指定します。

```
-BlockDeviceMapping $bdm
```

次のブロックデバイスマッピングでは、2 つのインスタンスストアボリュームを追加します。

```
$bdm = @()

$sdc = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$sdc.DeviceName = "/dev/sdc"
$sdc.VirtualName = "ephemeral0"
$bdm += $sdc

$sdd = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$sdd.DeviceName = "/dev/sdd"
$sdd.VirtualName = "ephemeral1"
$bdm += $sdd
```

------

# 起動時に EC2 インスタンスにインスタンスストアボリュームを追加する
<a name="adding-instance-storage-instance"></a>

C1、C3、M1、M2、M3、R3、D2、H1、I2、X1、X1e など、**非 NVMe インスタンスストアボリューム**を持つインスタンスタイプを起動する場合は起動時にアタッチするインスタンスストアボリュームのブロックデバイスマッピングを指定する必要があります。ブロックデバイスマッピングはインスタンス起動リクエストで、またはインスタンスの起動に使用される AMI で指定する必要があります。

AMI にインスタンスストアボリュームのブロックデバイスマッピングが含まれている場合、AMI に含まれるよりも多くのインスタンスストアボリュームが必要でない限り、インスタンス起動リクエストでブロックデバイスマッピングを指定する必要はありません。

AMI にインスタンスストアボリュームのブロックデバイスマッピングが含まれていない場合はインスタンス起動リクエストでブロックデバイスマッピングを指定する必要があります。

NVMe インスタンスストアボリュームを使用するインスタンスタイプではサポートされているすべてのインスタンスストアボリュームが、起動時に自動的にインスタンスにアタッチされます。

**考慮事項**
+ 使用できるインスタンスストアボリュームの数はインスタンスタイプによって異なります。詳細については「[使用可能なインスタンスストアボリューム](instance-store-volumes.md#available-instance-store-volumes)」を参照してください。
+ デバイス名をブロックデバイスごとに指定する必要があります。詳細については「[Amazon EC2 インスタンス上のボリュームのデバイス名](device_naming.md)」を参照してください。
+ M3 インスタンスの場合はインスタンスのブロックデバイスマッピングで指定しなくても、インスタンスストアボリュームを受け取る可能性があります。

------
#### [ Console ]

**インスタンス起動リクエストでブロックデバイスマッピングを指定するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ダッシュボードから、[**インスタンスの作成**] を選択してください。

1. **[Application and OS Images]** (アプリケーションと OS イメージ) セクションで、使用する AMI を選択してください。

1. **[ストレージの設定]** セクションの **[インスタンスストアボリューム]** セクションにはインスタンスにアタッチできるインスタンスストアボリュームが一覧表示されます。

1. アタッチする各インスタンスストアボリュームの **[デバイス名]** で、使用するデバイス名を選択してください。

1. 必要に応じて残りのインスタンスの設定を設定し、**[インスタンスの起動]** を選択してください。

------
#### [ AWS CLI ]

**インスタンス起動リクエストでブロックデバイスマッピングを指定するには**  
`--block-device-mappings` オプションで [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用します。

```
--block-device-mappings file://mapping.json
```

次のブロックデバイスマッピングでは、2 つのインスタンスストアボリュームを追加します。

```
[
    {
        "DeviceName": "/dev/sdc",
        "VirtualName": "ephemeral0"
    },
    {
        "DeviceName": "/dev/sdd",
        "VirtualName": "ephemeral1"
    }
]
```

------
#### [ PowerShell ]

**インスタンス起動リクエストでブロックデバイスマッピングを指定するには**  
`-BlockDeviceMapping` オプションで [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを使用します。

```
-BlockDeviceMapping $bdm
```

次のブロックデバイスマッピングでは、2 つのインスタンスストアボリュームを追加します。

```
$bdm = @()

$sdc = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$sdc.DeviceName = "/dev/sdc"
$sdc.VirtualName = "ephemeral0"
$bdm += $sdc

$sdd = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$sdd.DeviceName = "/dev/sdd"
$sdd.VirtualName = "ephemeral1"
$bdm += $sdd
```

------

# インスタンスストアボリュームを EC2 インスタンスで使用できるようにする
<a name="making-instance-stores-available-on-your-instances"></a>

インスタンスストアボリュームが接続しているインスタンスを起動したら、アクセスする前にボリュームをマウントする必要があります。

## Linux インスタンス
<a name="view-instance-store-linux"></a>

インスタンスを起動してから、選択したファイルシステムでボリュームをフォーマットすることもできます。

**Linux でインスタンスストアボリュームを使用できるようにするには**

1. SSH クライアントを使用してインスタンスに接続します。詳細については「[SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)」を参照してください。

1. `df -h` コマンドを使用して、フォーマットおよびマウントされたボリュームを表示します。

   ```
   $ df -h
   Filesystem      Size  Used Avail Use% Mounted on
   devtmpfs        3.8G   72K  3.8G   1% /dev
   tmpfs           3.8G     0  3.8G   0% /dev/shm
   /dev/nvme0n1p1  7.9G  1.2G  6.6G  15% /
   ```

1. `lsblk` を使用して、起動時にマッピングされたが、フォーマットおよびマウントされていないボリュームを表示します。

   ```
   $ lsblk
   NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
   nvme0n1       259:1    0    8G  0 disk
   ├─nvme0n1p1   259:2    0    8G  0 part /
   └─nvme0n1p128 259:3    0    1M  0 part
   nvme1n1       259:0    0 69.9G  0 disk
   ```

1. マッピングされたのみのインスタンスストアボリュームをフォーマットしてマウントするには以下の作業を行います。

   1. `mkfs` コマンドを使用してデバイスでファイルシステムを作成します。

      ```
      $ sudo mkfs -t xfs /dev/nvme1n1
      ```

   1. `mkdir` コマンドを使用してデバイスをマウントするディレクトリを作成します。

      ```
      $ sudo mkdir /data
      ```

   1. `mount` コマンドを使用して、新しく作成されたディレクトリにデバイスをマウントします。

      ```
      $ sudo mount /dev/nvme1n1 /data
      ```

## Windows インスタンス
<a name="view-instance-store-windows"></a>

Windows インスタンスではNTFS ファイルシステムでインスタンスストアボリュームをフォーマットします。

Windows Disk Management を使用してインスタンスストアボリュームを表示できます。詳細については「[非 NVMe ディスクを一覧表示する](windows-list-disks.md#windows-disks)」を参照してください。

**インスタンスストアボリュームを手動でマウントするには**

1. [**スタート**] ボタンをクリックし、**コンピュータの管理**と入力して、**Enter**キーを押します。

1. 左側のパネルで、[**ディスクの管理**] を選択してください。

1. ボリュームを初期化するかどうかを確認するメッセージが表示されたら、初期化するボリュームを選択し、ユースケースに応じて必要なパーティションタイプを選択して、[**OK**] を選択してください。

1. ボリュームの一覧で、マウントするボリュームを右クリックし、[**新しいシンプルボリューム**] を選択してください。

1. ウィザードで、[**次へ**] を選択してください。

1. [ボリュームサイズの指定] 画面で、[**次へ**] を選択して最大ボリュームサイズを使用します。または最小ディスク容量と最大ディスク容量の間のボリュームサイズを選択してください。

1. [ドライブ文字またはパスの割り当て] 画面で、次のいずれかの操作を行い、[**次へ**] を選択してください。
   + ドライブ文字を使用してボリュームをマウントするには[**次のドライブ文字を割り当てる**] を選択し、使用するドライブ文字を選択してください。
   + ボリュームをフォルダとしてマウントするには[**次の空の NTFS フォルダーにマウントする**] を選択し、[**参照**] を選択して、使用するフォルダを作成または選択してください。
   + ドライブ文字またはパスを使用せずにボリュームをマウントするには[**ドライブ文字またはドライブパスを割り当てない**] を選択してください。

1. [パーティションのフォーマット] 画面で、ボリュームをフォーマットするかどうかを指定します。ボリュームをフォーマットする場合は必要なファイルシステムとユニットサイズを選択し、ボリュームラベルを指定します。

1. [**次へ**]、[**完了**] の順に選択してください。

# M1 および C1 EC2 インスタンスのインスタンスストアスワップボリュームの有効化
<a name="instance-store-swap-volumes"></a>

**注記**  
このトピックは`c1.medium` および `m1.small` Linux インスタンスにのみ当てはまります。

`c1.medium` および `m1.small` インスタンスタイプは物理メモリの量が制限されています。そのため、起動時に Linux システムの仮想メモリとして機能する 900 MiB のスワップボリューム (または*スワップ空間*) が与えられます。Linux のスワップ空間はシステムで物理的に割り当てられたよりも多くのメモリを必要とする場合に使用できます。スワップ空間を有効にすると、Linux システムは頻繁に使用されないメモリページを物理メモリからスワップ空間 (既存のファイルシステムの専用パーティションまたはスワップファイル) にスワップし、高速なアクセスを必要とするメモリページのためにその空間を解放します。

**注記**  
スワップ空間をメモリページングに使用しても、RAM 使用時ほど高速でも効率的でもありません。スワップ空間に定期的にメモリをページングするワークロードの場合はRAM が多くサイズの大きいインスタンスタイプに移行することを検討してください。詳細については「[Amazon EC2 インスタンスタイプの変更](ec2-instance-resize.md)」を参照してください。
Linux カーネルはこのスワップ空間をルートボリューム上のパーティションとして認識しますが、ルートボリュームのタイプに関係なく、実際には別のインスタンスストアボリュームです。

Amazon Linux は自動的にこのスワップ空間を有効にして使用しますが、AMI ではこのスワップ空間を認識して使用するために、追加のステップが必要になる場合があります。インスタンスがスワップ空間を使用しているかどうか確認するには**swapon -s** コマンドを使用できます。

```
[ec2-user ~]$ swapon -s
Filename                                Type            Size    Used    Priority
/dev/xvda3                              partition       917500  0       -1
```

上記のインスタンスには900 MiB のスワップボリュームがアタッチされ、有効になっています。このコマンドでスワップボリュームが表示されない場合はそのデバイスに対してスワップ空間を有効しなければならない可能性があります。利用可能なディスクは**lsblk** コマンドを使用して確認します。

```
[ec2-user ~]$ lsblk
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda1 202:1    0    8G  0 disk /
xvda3 202:3    0  896M  0 disk
```

ここで、スワップボリューム `xvda3` はインスタンスで利用できますが、有効になっていません (`MOUNTPOINT` フィールドが空です)。スワップボリュームは **swapon** コマンドを使って有効にできます。

**注記**  
`/dev/` でリストされるデバイス名の先頭に **lsblk** を付加する必要があります。デバイスは`sda3`、`sde3`、`xvde3` など、異なる名前になる場合があります。システムのデバイス名は次のコマンドで使用します。

```
[ec2-user ~]$ sudo swapon /dev/xvda3
```

これで、スワップ空間が **lsblk** および **swapon -s** 出力に表示されます。

```
[ec2-user ~]$ lsblk
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda1 202:1    0    8G  0 disk /
xvda3 202:3    0  896M  0 disk [SWAP]
[ec2-user ~]$ swapon -s
Filename                                Type            Size    Used    Priority
/dev/xvda3                              partition       917500  0       -1
```

また、システムを起動する度にこのスワップ空間が自動的に有効になるように、`/etc/fstab` ファイルを編集する必要もあります。

```
[ec2-user ~]$ sudo vim /etc/fstab
```

(システムの swap デバイス名を使用して) 次の行を `/etc/fstab` ファイルに追加します。

```
/dev/xvda3       none    swap    sw  0       0
```

**インスタンスストアボリュームをスワップ空間として使用するには**

どのインスタンスストアボリュームもスワップ空間として使用できます。例えば、`m3.medium` インスタンスタイプはスワップ空間に適した 4 GB の SSD インスタンスストアボリュームを含みます。インスタンスストアボリュームがはるかに大きい場合 (例えば、350 GB)、ボリュームに 4\$18 GB の小さいスワップパーティションを作成し、残りをデータボリュームにすることもできます。
**注記**  
この手順はインスタンスストレージをサポートするインスタンスタイプのみに適用されます。サポートされているインスタンスタイプについては[EC2 インスタンスのインスタンスストアボリュームの制限](instance-store-volumes.md)を参照してください。

1. <a name="step_swap_start"></a>インスタンスにアタッチされたブロックデバイスの一覧を表示して、インスタンスストアボリュームのデバイス名を取得します。

   ```
   [ec2-user ~]$ lsblk -p
   NAME       MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
   /dev/xvdb  202:16   0   4G  0 disk /media/ephemeral0
   /dev/xvda1 202:1    0   8G  0 disk /
   ```

   この例ではインスタンスストアボリュームは `/dev/xvdb` です。これは Amazon Linux インスタンスであるため、インスタンスストアボリュームはフォーマットされ、`/media/ephemeral0` にマウントされます。すべての Linux オペレーティングシステムでこれが自動的に実行されるわけではありません。

1. (省略可能) インスタンスストアボリュームがマウントされている場合 (**lsblk** コマンドの出力に `MOUNTPOINT` が表示されます)、次のコマンドを使ってアンマウントする必要があります。

   ```
   [ec2-user ~]$ sudo umount /dev/xvdb
   ```

1. <a name="step_mkswap"></a>**mkswap** コマンドを使って、デバイスに Linux スワップ領域をセットアップします。

   ```
   [ec2-user ~]$ sudo mkswap /dev/xvdb
   mkswap: /dev/xvdb: warning: wiping old ext3 signature.
   Setting up swapspace version 1, size = 4188668 KiB
   no label, UUID=b4f63d28-67ed-46f0-b5e5-6928319e620b
   ```

1. 新しいスワップ空間を有効にします。

   ```
   [ec2-user ~]$ sudo swapon /dev/xvdb
   ```

1. <a name="step_swap_enable"></a>新しいスワップ空間が使用されていることを確認します。

   ```
   [ec2-user ~]$ swapon -s
   Filename				Type		Size	Used	Priority
   /dev/xvdb                              	partition	4188668	0	-1
   ```

1. システムを起動する度にこのスワップ空間が自動的に有効になるように、`/etc/fstab` ファイルを編集します。

   ```
   [ec2-user ~]$ sudo vim /etc/fstab
   ```

   `/etc/fstab` ファイルに `/dev/xvdb` (または `/dev/sdb`) 用の項目がある場合はそれを以下の行に合わせて変更します。このデバイス用の項目がない場合は`/etc/fstab` ファイルに以下の行を追加します (システムのスワップデバイス名を使用します)。

   ```
   /dev/xvdb       none    swap    sw  0       0
   ```
**重要**  
インスタンスが停止または休止すると、インスタンスストアボリュームデータが失われます。これには[Step 3](#step_mkswap)で作成したインスタンスストアスワップ領域のフォーマットが含まれます。インスタンスストアのスワップ領域を使用するように設定されたインスタンスを停止および再起動した場合、新しいインスタンスストアボリュームで[Step 1](#step_swap_start)から[Step 5](#step_swap_enable)を繰り返す必要があります。

# EC2 インスタンスでのインスタンスストアボリュームの初期化
<a name="disk-performance"></a>

Amazon EC2 でのディスクの仮想化方法が原因となり、一部のインスタンスストアボリュームに対する最初の書き込みは書き込みの場所にかかわらず、それ以降の書き込みより速度が遅くなります。ほとんどのアプリケーションではインスタンスの存続期間全体でこのコストを負担することは許容範囲内です。ただし、高いディスクパフォーマンスを必要とする場合は本稼働環境での使用の前に、ドライブのすべての場所に一度書き込みを行うことで初期化することをお勧めします。

**注記**  
直接アタッチされた Solid State Drive (SSD) および TRIM サポートを使用するインスタンスタイプは初期化を行わずに、起動時に最大限のパフォーマンスを発揮します。各インスタンスタイプのインスタンスストアについては[EC2 インスタンスのインスタンスストアボリュームの制限](instance-store-volumes.md)を参照してください。

レイテンシーやスループットに関してさらに柔軟性が必要な場合は Amazon EBS を使用することをお勧めします。

インスタンスストアボリュームを初期化するには初期化するストア (例: `dd` または `/dev/sdb`) に応じて、次の `/dev/nvme1n1` コマンドを使用します。

**注記**  
必ずドライブをアンマウントしてから、このコマンドを実行してください。  
初期化には長い時間がかかる場合があります (エクストララージのインスタンスで約 8 時間)。

インスタンスストアボリュームを初期化するには`m1.large`、`m1.xlarge`、`c1.xlarge`、`m2.xlarge`、`m2.2xlarge`、`m2.4xlarge` インスタンスタイプで次のコマンドを使用します。

```
dd if=/dev/zero of=/dev/sdb bs=1M          
dd if=/dev/zero of=/dev/sdc bs=1M          
dd if=/dev/zero of=/dev/sdd bs=1M          
dd if=/dev/zero of=/dev/sde bs=1M
```

すべてのインスタンスストアボリュームに対して同時に初期化を実行するには次のコマンドを使用します。

```
dd if=/dev/zero bs=1M|tee /dev/sdb|tee /dev/sdc|tee /dev/sde > /dev/sdd
```

ドライブを RAID 用に構成すると、ドライブのすべての場所に書き込みを行うことで、ドライブが初期化されます。ソフトウェアベースの RAID を構成するときは再構築の最低速度を必ず変更してください。

```
echo $((30*1024)) > /proc/sys/dev/raid/speed_limit_min
```

# Amazon EC2 インスタンスストアボリュームの詳細なパフォーマンス統計
<a name="nvme-detailed-performance-stats"></a>

Amazon EC2 は、Nitro ベースの Amazon EC2 インスタンスにアタッチされた NVMe インスタンスストアボリュームに対するリアルタイムかつ高解像度のパフォーマンス統計を提供します。これらの統計は集計カウンターとして表示され、インスタンスの存続期間にわたって保持されます。この統計は、オペレーションの累積数、送受信されたバイト数、読み取り/書き込み I/O オペレーションに費やされた時間、読み取り/書き込み I/O オペレーションのヒストグラムに関する詳細を提供します。これらの統計では [Amazon EBS の詳細なパフォーマンス統計](https://docs.aws.amazon.com/ebs/latest/userguide/nvme-detailed-performance-stats.html)との一貫性が維持されていますが、I/O サイズごとに分類された詳細なレイテンシーヒストグラムも含まれるため、ストレージのパフォーマンスパターンをより詳細に把握することができます。それにより可視性が向上し、レイテンシーの問題が発生している特定の I/O サイズを正確に特定できることから、アプリケーションのパフォーマンスの最適化と、問題の効果的なトラブルシューティングが可能になります。

これらの統計は最大 1 秒間隔で詳細に収集できます。リクエストが 1 秒間隔よりも頻繁に行われると、NVMe ドライバーが、後で処理されるリクエストを他の管理コマンドとともにキューに入れることがあります。

**考慮事項**
+ この統計は、Nitro ベースのインスタンスにアタッチされた NVMe インスタンスストアボリュームのみでサポートされています。
+ カウンターは、インスタンスの停止および再起動をまたいで保持されません。
+ この統計は追加料金なしでご利用いただけます。

## 統計
<a name="nvme-stats"></a>

NVMe ブロックデバイスは次の統計を提供します。


| 統計名 | フルネーム | タイプ | 説明 | 
| --- | --- | --- | --- | 
| total\$1read\$1ops | 読み取りオペレーションの合計回数 | Counter | 完了した読み取りオペレーションの合計回数。 | 
| total\$1write\$1ops | 書き込みオペレーションの合計数 | Counter | 完了した書き込みオペレーションの合計回数。 | 
| total\$1read\$1bytes | 読み取りバイトの合計数 | Counter | 転送された読み取りバイトの合計数。 | 
| total\$1write\$1bytes | 書き込みバイトの合計数 | Counter | 転送された書き込みバイトの合計数。 | 
| total\$1read\$1time | 読み取り時間の合計数 | Counter | 完了したすべての読み取りオペレーションで費やされた合計時間 (マイクロ秒単位)。 | 
| total\$1write\$1time | 書き込み時間の合計数 | Counter | 完了したすべての書き込みオペレーションで費やされた合計時間 (マイクロ秒単位)。 | 
| instance\$1store\$1volume\$1performance\$1exceeded\$1iops | 需要がボリュームの最大 IOPS を超えた時間の合計数 | Counter | IOPS リクエストがボリュームの最大 IOPS を超えた時間の合計数 (単位: マイクロ秒)。0 を超える値は、ワークロードが、ボリュームが提供できる IOPS よりも多くの IOPS を要求したことを示しています。このメトリクスの2 つのスナップショットの時点間における増分カウントは、最小限に抑えるのが理想的です。 | 
| instance\$1store\$1volume\$1performance\$1exceeded\$1tp | リクエストがボリュームの最大スループットを越えた時間の合計数 | Counter | スループットリクエストがボリュームの最大スループットを超えた時間の合計数 (単位: マイクロ秒)。0 を超える値は、ワークロードが、ボリュームが提供できるスループットよりも多くの IOPS を要求したことを示しています。このメトリクスの2 つのスナップショットの時点間における増分カウントは、最小限に抑えるのが理想的です。 | 
| volume\$1queue\$1length | ボリュームキューの長さ | ポイントインタイム | 完了を待機している読み取りおよび書き込みオペレーションの数。 | 
| read\$1io\$1latency\$1histogram | I/O ヒストグラムの読み取り | ヒストグラム\$1 | 各レイテンシービン内で完了した読み取りオペレーションの数 (単位: マイクロ秒)。 | 
| write\$1io\$1latency\$1histogram | I/O ヒストグラムの書き込み | ヒストグラム\$1 | 各レイテンシービン内で完了した書き込みオペレーションの数 (単位: マイクロ秒)。 | 

**注記**  
\$1 ヒストグラム統計は正常に完了した I/O オペレーションのみを表します。停止している、あるいは正常でない I/O オペレーションは含まれませんが、ポイントインタイム統計として `volume_queue_length` 統計に表示されます。

## 統計へのアクセス
<a name="nvme-stat-access"></a>

統計には、インスタンスストアボリュームがアタッチされているインスタンスから、直接アクセスする必要があります。統計には、次のいずれかの方法を使用してアクセスできます。

### Linux インスタンス
<a name="nvme-stat-access-linux"></a>

------
#### [ Amazon CloudWatch ]

インスタンスから統計を収集し Amazon CloudWatch のカスタムメトリクスとして利用できるように、Amazon CloudWatch エージェントを設定できます。その後、CloudWatch のメトリクスを使用して、I/O パターンの分析、パフォーマンスの傾向の追跡、カスタムダッシュボードの作成、パフォーマンスのしきい値に基づく自動アラームの設定を行うことができます。

CloudWatch エージェントの設定の詳細については「[Collect Amazon EC2 instance store volume metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-instance-store-Collect.html)」を参照してください。

------
#### [ nvme-cli tool ]

**統計にアクセスするには**

1. ボリュームがアタッチされているインスタンスに接続します。

1. 2025 年 9 月 15 日以降にリリースされた Amazon Linux 2023 AMI には、`nvme-cli` ツールの最新バージョンが含まれています。以前の Amazon Linux AMI を使用している場合は `nvme-cli` ツールを更新します。

   ```
   sudo yum install nvme-cli
   ```

1. 次のコマンドを実行し、ボリュームのデバイス名を指定します。

   ```
   sudo nvme amzn stats /dev/nvme0n1
   ```

この統計は、I/O サイズ別に分類された詳細なレイテンシーヒストグラムも提供します。I/O サイズ別に分類された統計を表示するには `--details` オプションを含めます。次に例を示します。

```
sudo nvme amzn stats --details /dev/nvme0n1
```

`--help` オプションを指定することで、ツールの使用方法に関する詳細情報を入手できます。次に例を示します。

```
sudo nvme amzn stats --help
```

------

### Windows インスタンス
<a name="nvme-stat-access-windows"></a>

------
#### [ nvme\$1amzn.exe tool ]

**統計にアクセスするには**

1. ボリュームがアタッチされているインスタンスに接続します。

1. AWSNVMe ドライバーのバージョン `1.7.0` 以降を使用していることを確認します。AWSNVMe ドライバーの更新の詳細については、「[AWS NVMe ドライバー](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/aws-nvme-drivers.html)」を参照してください。

1. ボリュームのディスク番号を取得します。詳細は、「[Amazon EC2 Windows インスタンスの NVMe ディスクをボリュームにマッピングする](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/windows-list-disks-nvme.html)」を参照してください。

1. 次のコマンドを管理者として実行し、ボリュームのディスク番号を指定します。

   ```
   .\nvme_amzn.exe stats disk_number
   ```

この統計は、I/O サイズ別に分類された詳細なレイテンシーヒストグラムも提供します。I/O サイズ別に分類された統計を表示するには `--details` オプションを含めます。次に例を示します。

```
.\nvme_amzn.exe stats --details disk_number
```

------