

# 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\~8 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)を繰り返す必要があります。