インスタンスストアスワップボリューム - Amazon Elastic Compute Cloud

インスタンスストアスワップボリューム

Linux のスワップ空間は、システムで物理的に割り当てられたよりも多くのメモリを必要とする場合に使用できます。スワップ空間を有効にすると、Linux システムは頻繁に使用されないメモリページを物理メモリからスワップ空間 (既存のファイルシステムの専用パーティションまたはスワップファイル) にスワップし、高速なアクセスを必要とするメモリページのためにその空間を解放します。

注記

スワップ空間をメモリページングに使用しても、RAM 使用時ほど高速でも効率的でもありません。スワップ空間に定期的にメモリをページングするワークロードの場合は、RAM が多くサイズの大きいインスタンスタイプに移行することを検討してください。詳細については、インスタンスタイプを変更するを参照してください。

c1.medium および m1.small インスタンスタイプの物理メモリ容量は限られており、起動時には Linux AMIs の仮想メモリとして機能する 900 MiB スワップボリュームが与えられます。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 を付加する必要があります。デバイスは、sda3sde3xvde3 など、異なる名前になる場合があります。システムのデバイス名は、次のコマンドで使用します。

[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 の小さいスワップパーティションを作成し、残りをデータボリュームにすることもできます。

注記

この手順は、インスタンスストレージをサポートするインスタンスタイプのみに適用されます。サポートされているインスタンスタイプについては、インスタンスストアボリュームを参照してください。

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

    [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 オペレーティングシステムでこれが自動的に実行されるわけではありません。

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

    [ec2-user ~]$ sudo umount /dev/xvdb
  3. 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
  4. 新しいスワップ空間を有効にします。

    [ec2-user ~]$ sudo swapon /dev/xvdb
  5. 新しいスワップ空間が使用されていることを確認します。

    [ec2-user ~]$ swapon -s Filename Type Size Used Priority /dev/xvdb partition 4188668 0 -1
  6. システムを起動する度にこのスワップ空間が自動的に有効になるように、/etc/fstab ファイルを編集します。

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

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

    /dev/xvdb none swap sw 0 0
    重要

    インスタンスが停止または休止すると、インスタンスストアボリュームデータが失われます。これには、ステップ 3で作成したインスタンスストアスワップ領域のフォーマットが含まれます。インスタンスストアのスワップ領域を使用するように設定されたインスタンスを停止および再起動した場合、新しいインスタンスストアボリュームでステップ 1からステップ 5を繰り返す必要があります。