r3.largeでswap領域としてエフェメラルディスクをマウントする


◆実施したいこと
・r3.largeで新規にAmazon Linux(ami-6154bb00)を構築
・EC2を再起動しようが停止しようがインスタンスストアを
 恒久的にswap領域として利用したい

◆手順
①インスタンスストアボリュームのデバイス名を確認
 # lsblk -p

 例えば、以下のようなコマンド出力結果の場合、
 # lsblk -p
 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
 /dev/xvda 202:0 0 8G 0 disk
 └─/dev/xvda1 202:1 0 8G 0 part /
 /dev/xvdb 202:16 0 30G 0 disk

 上記のケースでは /dev/xvdb が対象となる。
 MOUNTPOINT が / のボリュームではない方を対象にすること。

②インスタンスストアボリュームのアンマウント
 # umount /dev/(①で確認したボリューム)

③デバイスに Linux スワップ領域をセットアップ
 # mkswap /dev/(①で確認したボリューム)

④新しいスワップ空間を有効
 # swapon /dev/(①で確認したボリューム)

⑤新しいスワップ空間が使用されていることを確認
 # swapon -s

⑥システム起動毎にスワップ空間を自動的に有効化
 # vi /etc/fstab
 (下記内容を追加)
 /dev/(①で確認したボリューム) none swap sw 0 0
 →既に/dev/xvdb/media/ephemeral0autodefaults,nofail,comment=cloudconfig02
  という記載がある場合、その項目を削除して置き換える。

  (公式ドキュメント抜粋)
  ======
  /etc/fstab ファイルに /dev/xvdb(または /dev/sdb)用の項目がある場合は、
  それを以下の行に合わせて変更。
  このデバイス用の項目がない場合は、/etc/fstab ファイルに
  以下の行を追加(システムのスワップデバイス名を使用)。
  http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/instance-store-swap-volumes.html
  ======

⑦/etc/cloud/cloud.cfg の設定を修正
 # vi /etc/cloud/cloud.cfg

 <修正前(例)>
 ---
 mounts:
 - [ ephemeral0, /media/ephemeral0 ]
 - [ swap, none, swap, sw, "0", "0" ]
 ---
 <修正後(例)>
 ---
 mounts:
  - [ ephemeral0, swap, swap ,"defaults", "0", "0"]
 ---
 ※注意:mounts: の次の行の先頭のハイフンの前に半角スペースが必要。

⑧swapの有効化のため、/etc/rc.local の編集
 # vi /etc/rc.local

 末尾に以下を追加(---は回答上の区切り文字のため、実ファイルには反映しないこと)
 ---
 mkswap /dev/xvdb
 swapon -a
 ---
 ※ /dev/xvdb は手順①で確認したボリュームを記載すること。

⑨インスタンスを再起動して、swap が設定されているか確認
 # lsblk -p
 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
 /dev/xvda 202:0 0 8G 0 disk
 mq/dev/xvda1 202:1 0 8G 0 part /
 /dev/xvdb 202:16 0 4G 0 disk