参考サイト
EC2インスタンスのSwap領域を作成する
https://qiita.com/nakamto/items/5e78e9caceeff6b9e2b4 (2020)
AWS EC2 インスタンスに swap 領域を作成する
https://zenn.dev/wsuzume/articles/3ef4b2d3caf203
→ほぼそのままでいけました。ありがとうございます!!
手順
1.事前の確認
free -h
sudo su
swapon -s
→swap領域が確保されていない
#Swap 領域を作成するストレージのファイルシステムによって、作成方法が微妙に異なるため、確認
df -Th
df -Th /dev/xvda1
→今回はxfs
sudo su
2.SWAP領域の確保
#[ext4の場合の] Swap領域の確保
fallocate -l 2G /swapfile
#[btrfsの場合の] Swap領域の確保
truncate -s 0 /swapfile
chattr +C /swapfile
fallocate -l 2G /swapfile
#[xfsの場合の] Swap領域の確保 (少し時間がかかる)
dd if=/dev/zero of=/swapfile bs=1M count=2048
|
^[[O2048+0 レコード入力
2048+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 30.5896 秒、 70.2 MB/秒
|
|補足
ーーーーーーーーーーーーーー
dd: ディスクやファイルなどのデータをコピーするためのコマンドです。
if=/dev/zero: 入力ファイルとして、/dev/zero デバイスを指定しています。
/dev/zero は無限のゼロバイトのストリームを提供する特殊なデバイスです。
つまり、これは無限のゼロバイトのデータを生成します。
of=/swapfile: 出力ファイルとして、/swapfile というファイルを指定しています。
/swapfile は通常、スワップ領域(仮想メモリ)を格納するために使用されます。
bs=1M: ブロックサイズを1メガバイトに設定しています。
これは、dd コマンドがデータを読み取る/書き込む際に使用するブロックのサイズです。
count=2048: ブロックの数を指定しており、ここでは2048となっています。
したがって、1メガバイトのブロックを2048個書き込むことになります。
つまり、このコマンドは、2GBのサイズのゼロで埋められた /swapfile という名前のファイルを作成します。
通常、これはスワップ領域(仮想メモリの一部)を作成するために使用されます
ーーーーーーーーーーーーーー
free -h
sudo su
swapon -s
→まだSWAPは見えない
3.パーミッション設定
#Swap ファイルの権限は 644 または 600 が推奨。特に理由がなければ root 以外のユーザーにアクセスを許す必要はないので権限は 600
chmod 600 /swapfile
ll /swapfile
4.Swap領域の有効化
#Swap領域の有効化 (Swap ファイルは swap ファイル用にフォーマットされている必要がある)
mkswap /swapfile
|
スワップ空間バージョン 1 を設定します。サイズ = 2 GiB (2147479552 バイト)
ラベルはありません, UUID=606dd35e-e70a-4cf6-a86c-b3787883cc19
#swap領域の有効化
swapon /swapfile
|
SWAP領域が確認できる
free -h
swapon -s
|
ファイル名 タイプ サイズ 使用済み 優先順位
/swapfile file 2097148 0 -2
ーーーーーーーーーーーーーーーー
5'.(任意)ループバックデバイスとしてマウント
- ファイルをループバックデバイスとしてマウントすると、そのファイルをあたかもブロックデバイスであるかのように扱うことができます。
- 要するにファイルを論理ボリュームのように扱うことができます
#ループバックデバイスとして登録されているファイルを確認
losetup -l
#/swapfile を新規のループバックデバイスとしてマウント(名前は自動で割り当てられます)
losetup -f /swapfile
#確認
losetup -l
#swap 領域として有効化(※仮に、任意の名前がloop0だった場合。)
swapon /dev/loop0
ーーーーーーーーーーーーーーーー
5.SWAP領域の永続化
#起動時swapファイルをswap領域としてマウントする設定を記述(Swap 領域のマウントは再起動する度にリセットされてしまうので)
cd /etc
cp fstab fstab.yyyymmdd
#1行だけ追記(UUID=XXXXXXXXXX / xfs defaults,noatime 1 1の下)
vi /etc/fstab
|
/swapfile swap swap defaults 0 0
#/swapfile none swap defaults 0 0
6.再起動
reboot
free -h
→Swapのtotalが表示される
7.Swap 領域を無効化&削除する 【必要な場面になったら】
- 必要な場面
- インスタンスをアップグレードした場合などはswap 領域がいらなくなる場合や作り直したい場合がありえる。
#/etc/fstabの記述を削除
vi /etc/fstab
#swap 領域を無効化(ループデバイスで設定している場合は /swapfile を /dev/loop0 などで置き換えること)
swapoff -v /swapfile
#swap領域の削除
rm -f /swapfile