もう2023年も年末ですね。
毎年一年が過ぎ去るのが早くなってくるのを感じて老いを感じ始めたアラサーです。
すごく今更なんですが、t系などよく使用するインスタンスタイプではswapが初期で作成されません。
たまに忘れちゃうので、備忘録的にEC2のswapを作成するときにすることをまとめます。
早速やっていきます
基本的に公式ページに従って作業します。
https://repost.aws/ja/knowledge-center/ec2-memory-swap-file
まず、EC2を立てます。
公式ページでは下記ddコマンドでスワップ用のファイルを作るとありますが、
まずはEBSのディスク容量があるか確認しましょう。
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=32
[ec2-user@ip-172-31-10-161 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 454M 0 454M 0% /dev
tmpfs 481M 0 481M 0% /dev/shm
tmpfs 481M 55M 427M 12% /run
tmpfs 481M 0 481M 0% /sys/fs/cgroup
/dev/xvda2 8.0G 3.7G 4.4G 46% /
tmpfs 97M 0 97M 0% /run/user/1000
確認するとEBSデフォルト容量の8gbで作成してるので、空き容量が4.4GBであることが分かります。
[ec2-user@ip-172-31-10-161 ~]$ free -h
total used free shared buff/cache available
Mem: 961Mi 238Mi 234Mi 56Mi 488Mi 518Mi
Swap: 0B 0B 0B
また今回作成したEC2はt2.microで、RAMは1GBです。
Redhatの推奨に従って今回は2GBをswapに割りてていきます。(EBSの容量が足りないときは容量を増加させるなど調整しましょう。)
※2GBなので、128M×16=2048Mで設定します。
[ec2-user@ip-172-31-10-161 ~]$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16
16+0 records in
16+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 31.1194 s, 69.0 MB/s
権限変更やスワップ領域のセットアップ等を実施すると割り当ては完了です。
[ec2-user@ip-172-31-10-161 ~]$ sudo chmod 600 /swapfile
[ec2-user@ip-172-31-10-161 ~]$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=21e45515-aaa7-4a4b-9474-fda79275ba8d
[ec2-user@ip-172-31-10-161 ~]$ sudo swapon /swapfile
[ec2-user@ip-172-31-10-161 ~]$ sudo swapon -s
Filename Type Size Used Priority
/swapfile file 2097148 0 -2
[ec2-user@ip-172-31-10-161 ~]$ free -h
total used free shared buff/cache available
Mem: 961Mi 237Mi 196Mi 56Mi 527Mi 518Mi
Swap: 2.0Gi 0B 2.0Gi
最後にfstabに1行追加して作業は完了です。
$ sudo vi /etc/fstab
/swapfile swap swap defaults 0 0
最後に
Swapの割り当ては特にメモリが少ないインスタンスだとOOM Killerを防ぐために
重要な事項になるかと思いますが、EBSの容量はつかってしまうので、空き容量を確認することはお忘れずに!
それでは良いお年を!