◆実施したいこと
・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