M1 および C1 EC2 インスタンスのインスタンスストアスワップボリュームの有効化
注記
このトピックは、c1.medium
および m1.small
Linux インスタンスにのみ当てはまります。
c1.medium
および m1.small
インスタンスタイプは、物理メモリの量が制限されています。そのため、起動時に Linux システムの仮想メモリとして機能する 900 MiB のスワップボリューム (またはスワップ空間) が与えられます。Linux のスワップ空間は、システムで物理的に割り当てられたよりも多くのメモリを必要とする場合に使用できます。スワップ空間を有効にすると、Linux システムは頻繁に使用されないメモリページを物理メモリからスワップ空間 (既存のファイルシステムの専用パーティションまたはスワップファイル) にスワップし、高速なアクセスを必要とするメモリページのためにその空間を解放します。
注記
-
スワップ空間をメモリページングに使用しても、RAM 使用時ほど高速でも効率的でもありません。スワップ空間に定期的にメモリをページングするワークロードの場合は、RAM が多くサイズの大きいインスタンスタイプに移行することを検討してください。詳細については、「Amazon EC2 インスタンスタイプの変更」を参照してください。
-
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 インスタンスのインスタンスストアボリュームの制限を参照してください。
-
インスタンスにアタッチされたブロックデバイスの一覧を表示して、インスタンスストアボリュームのデバイス名を取得します。
[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 オペレーティングシステムでこれが自動的に実行されるわけではありません。 -
(省略可能) インスタンスストアボリュームがマウントされている場合 (lsblk コマンドの出力に
MOUNTPOINT
が表示されます)、次のコマンドを使ってアンマウントする必要があります。[ec2-user ~]$
sudo umount /dev/xvdb
-
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
-
新しいスワップ空間を有効にします。
[ec2-user ~]$
sudo swapon /dev/xvdb
-
新しいスワップ空間が使用されていることを確認します。
[ec2-user ~]$
swapon -s
Filename Type Size Used Priority /dev/xvdb partition 4188668 0 -1
-
システムを起動する度にこのスワップ空間が自動的に有効になるように、
/etc/fstab
ファイルを編集します。[ec2-user ~]$
sudo vim /etc/fstab
/etc/fstab
ファイルに/dev/xvdb
(または/dev/sdb
) 用の項目がある場合は、それを以下の行に合わせて変更します。このデバイス用の項目がない場合は、/etc/fstab
ファイルに以下の行を追加します (システムのスワップデバイス名を使用します)。/dev/
xvdb
none swap sw 0 0