LoginSignup
0

More than 3 years have passed since last update.

EC2インスタンスのインスタンスストアボリュームにSWAP領域を作る話

Posted at

EC2インスタンスのインスタンスストアボリュームにSWAP領域を作る話

初投稿です。
先日とある事情で、AWSのEC2インスタンスのインスタンスストアボリュームにSWAP領域を作ったので
その手順のメモです。
抜けているところがあったら、ご容赦ください。

↓こんな感じのAmazon Linux2のEC2インスタンスを、インスタンスストアボリューム付きのインスタンスタイプでログイン。
c5d.largeでたてているのは、インスタンスストアボリューム付きのインスタンスタイプでは一番安いからです。

[ec2-user@ip-***-**-**-** ~]# curl http://169.254.169.254/latest/meta-data/instance-type
c5d.large
[ec2-user@ip-***-**-**-** ~]# cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
[ec2-user@ip-***-**-**-** ~]#

いちいちsudoするのが面倒なので、rootにスイッチします。
スイッチ後、念のため、インスタンスストアボリューム(nvme1n1)が認識されていることを確認します。

[ec2-user@ip-***-**-**-** ~]$ sudo -i
[root@ip-***-**-**-** ~]#
[root@ip-***-**-**-** ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme1n1       259:0    0 46.6G  0 disk
nvme0n1       259:1    0    8G  0 disk
├─nvme0n1p1   259:2    0    8G  0 part /
└─nvme0n1p128 259:3    0    1M  0 part

マウントされていないこと、SWAP領域がないことも念のため、確認します。

[root@ip-***-**-**-** ~]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  1.8G     0  1.8G   0% /dev
tmpfs          tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs          tmpfs     1.9G  400K  1.9G   1% /run
tmpfs          tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/nvme0n1p1 xfs       8.0G  1.2G  6.8G  16% /
tmpfs          tmpfs     371M     0  371M   0% /run/user/1000
[root@ip-***-**-**-** ~]#
[root@ip-***-**-**-** ~]# free
              total        used        free      shared  buff/cache   available
Mem:        3793980       71192     3307076         400      415712     3482164
Swap:             0           0           0

インスタンスストアボリュームをSWAP領域に指定します。
(インスタンスストアボリューム全ての領域をSWAP領域にしたいので、ボリュームごとスワップ領域化します)

[root@ip-***-**-**-** ~]# mkswap /dev/nvme1n1
Setting up swapspace version 1, size = 46.6 GiB (49999994880 bytes)
no label, UUID=c2ac66b7-9d67-4dc4-9dea-652b5d94a504

SWAP領域を有効化します。

[root@ip-***-**-**-** ~]# swapon /dev/nvme1n1
[root@ip-***-**-**-** ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/nvme1n1                            partition       48828120        0       -2
[root@ip-***-**-**-** ~]#

このままではEC2インスタンス再起動(停止→起動)時にSWAP設定が解除された状態になってしまうので
/etc/cloud/cloud.cfg/etc/fstabを編集します。

[root@ip-***-**-**-** ~]# vi /etc/cloud/cloud.cfg
[root@ip-***-**-**-** ~]#
[root@ip-***-**-**-** ~]# cat /etc/cloud/cloud.cfg
(略)
mounts:
 - [ ephemeral0, swap, swap ,"defaults", "0", "0"]    ← これに修正 
# vim:syntax=yaml
[root@ip-172-31-33-88 ~]# vi /etc/fstab
[root@ip-172-31-33-88 ~]# cat /etc/fstab
#
UUID=a1e1011e-e38f-408e-878b-fed395b47ad6     /           xfs    defaults,noatime  1   1
/dev/nvme1n1  none swap sw,nobootwait,comment=cloudconfig 0 2       ← これに修正 

また、起動時にSWAP領域を作成・有効化するコマンドも流さなければならないので、 /etc/rc.d/rc.localを編集します。

[root@ip-***-**-**-** ~]# vi /etc/rc.d/rc.local
[root@ip-***-**-**-** ~]# cat /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
mkswap /dev/nvme1n1       ← 追記
swapon /dev/nvme1n1       ← 追記 
[root@ip-***-**-**-** ~]#

/etc/rc.d/rc.localに実行権限をつけて、起動時に実行するようにします。

[root@ip-***-**-**-** ~]# ls -la /etc/rc.d/rc.local
-rw-r--r-- 1 root root 513 Aug 11 16:25 /etc/rc.d/rc.local
[root@ip-***-**-**-** ~]# chmod +x /etc/rc.d/rc.local
[root@ip-***-**-**-** ~]# ls -la /etc/rc.d/rc.local
-rwxr-xr-x 1 root root 513 Aug 11 16:25 /etc/rc.d/rc.local
[root@ip-***-**-**-** ~]#

↓EC2インスタンス停止→起動時に時にSWAP領域ができていることを確認します。

[root@ip-***-**-**-** ~]# free
              total        used        free      shared  buff/cache   available
Mem:        3793980      106464     3522712         404      164804     3479892
Swap:      48828120           0    48828120
[root@ip-***-**-**-** ~]#
[root@ip-***-**-**-** ~]#
[root@ip-***-**-**-** ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/nvme1n1                            partition       48828120        0       -2
[root@ip-***-**-**-** ~]#

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0