[Osaka/Yokohama] Looking for infrastructure/server side engineers!

[Osaka/Yokohama] Looking for infrastructure/server side engineers!

[Deployed by over 500 companies] AWS construction, operation, maintenance, and monitoring services

[Deployed by over 500 companies] AWS construction, operation, maintenance, and monitoring services

[Successor to CentOS] AlmaLinux OS server construction/migration service

[Successor to CentOS] AlmaLinux OS server construction/migration service

[For WordPress only] Cloud server “Web Speed”

[For WordPress only] Cloud server “Web Speed”

[Cheap] Website security automatic diagnosis “Quick Scanner”

[Cheap] Website security automatic diagnosis “Quick Scanner”

[Reservation system development] EDISONE customization development service

[Reservation system development] EDISONE customization development service

[Registration of 100 URLs is 0 yen] Website monitoring service “Appmill”

[Registration of 100 URLs is 0 yen] Website monitoring service “Appmill”

[Compatible with over 200 countries] Global eSIM “Beyond SIM”

[Compatible with over 200 countries] Global eSIM “Beyond SIM”

[If you are traveling, business trip, or stationed in China] Chinese SIM service “Choco SIM”

[If you are traveling, business trip, or stationed in China] Chinese SIM service “Choco SIM”

[Global exclusive service] Beyond's MSP in North America and China

[Global exclusive service] Beyond's MSP in North America and China

[YouTube] Beyond official channel “Biyomaru Channel”

[YouTube] Beyond official channel “Biyomaru Channel”

【ペルシャ猫備忘録】AWS無料枠で試してみた!SWAP領域を追加する

こんにちは!
株式会社ビヨンド四国オフィスのペルシャ猫、いのうえです。

今回は、自分のAWSインスタンスでSWAP領域を作成してみたので
ペルシャ猫によるペルシャ猫のための備忘録としてブログに記します。
皆さんの参考になれば、うれしく思います!(*‘ω‘ *)

SWAPとは、メモリが足りない時にディスクにデータを移し一時保存してくれる機能のこと。
スワップアウトとは、メモリの一部をディスクに退避させる仕組み。
スワップインとは、スワップアウトされたデータをメモリに戻すこと。

メモリは、例えるとコンピュータの作業机です。
机が狭いと作業が遅くなってしまいますね。
だって、使ってないものを片づけたり、使うものを取り出したりしなくてはいけませんから。
ハードディスクは、例えるとコンピュータの作業机についている引き出しです。
スワップは、ハードディスクをメモリのように使い、
実際のメモリより大きいメモリがあるかのようにと錯覚させます。
ただ、メモリを使うより、ハードディスクを使うほうが作業をこなすのに時間がかかります。
よって、スワップを使うとコンピュータの動作は遅くなります。
なぜ、スワップを使うとコンピュータの動作は遅くなるのでしょう??
まず前提として、CPUで演算をするために必要なデータは必ず主記憶装置(メモリ)に展開する必要があります。
机が小さく狭い時に、机で作業を行う場合は一時的にデータを引き出しに入れるしかないので
引き出しにデータを入れる頻度が多くなって、スワップ使用量が増えます。
また、使いたいデータを机の上に出したいので、引き出しから机にデータを出す頻度も増えます。
引き出しにデータを入れたり(スワップアウト)、出したり(スワップイン)を頻繁に行うことになりますね。
このように、スワップアウトとスワップインが頻繁に繰り返されることをスラッシングといいます。
スワップはメモリよりも処理に時間がかかるので、
SWAP使用量が増えると、コンピュータの動作が遅くなる。というわけです。

SWAPが発生する原因として以下のようなことが考えられます。
①メモリが足りない。
②メモリの断片化が進んでまとまったメモリを確保できない。

SWAP領域を作成してみよう

[root@test-aws-harukainoue var]# free -m
              total        used        free      shared  buff/cache   available
Mem:            983         226          75           0         681         596
Swap:             0           0           0

デフォルトでは、SWAP領域がなく、メモリだけを使用していることがわかります。

早速、SWAP領域を作成していきましょう!
まず、メモリ代わりにするSWAPファイルを作成します。
私は/var以下に「swapfile」というディレクトリを用意し、「swap」というファイルを作ります。

[root@test-aws-harukainoue var]# mkdir swapfile
[root@test-aws-harukainoue var]# ls -altr
drwxr-xr-x  2 root root    6 Feb  2 04:52 swapfile
[root@test-aws-harukainoue var]# cd swapfile
[root@test-aws-harukainoue swapfile]# pwd
/var/swapfile
[root@test-aws-harukainoue swapfile]# dd if=/dev/zero of=/var/swapfile/swap bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 13.6114 s, 78.9 MB/s
[root@test-aws-harukainoue swapfile]# ls -altr
-rw-r--r--  1 root root 1073741824 Feb 11 08:40 swap
[root@test-aws-harukainoue swapfile]# chmod 600 swap
[root@test-aws-harukainoue swapfile]# ls -altr
-rw-------  1 root root 1073741824 Feb 11 08:40 swap

間違って「swap」ファイルを編集しないように、パーミッションを「600」にしておきます。
※パーミッションを「600」にしていない場合、次のような警告が表示されます。

mkswap: /swap: insecure permissions 0644, 0600 suggested.

スワップファイルをSWAP領域用にフォーマットします。
さらに、スワップファイルを有効化します。

[root@test-aws-harukainoue swapfile]# mkswap ./swap
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=8227fefa-a6da-4c63-a9c3-ae21c06dad30
[root@test-aws-harukainoue swapfile]# swapon ./swap
[root@test-aws-harukainoue swapfile]# free -m
              total        used        free      shared  buff/cache   available
Mem:            983         227          73           0         682         594
Swap:          1023           0        1023
[root@test-aws-harukainoue swapfile]# swapon -s
Filename                                Type            Size    Used    Priority
/var/swapfile/swap                      file            1048572 0       -2

SWAP領域ができました!!!

再起動してもSWAP領域が消えないように設定する

再起動後もSWAPを使えるようにマウントします。

[root@test-aws-harukainoue swapfile]# vi /etc/fstab

以下を記述し、上書きします。

/var/swapfile/swap swap swap defaults 0 0
:wq

再起動・・・・・・・・・

[root@test-aws-harukainoue ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            983         218          78           0         686         604
Swap:          1023           0        1023

再起動後もSWAPが使われるようになっているのがわかります。

普段、自分のAWSインスタンスの環境ではSWAPを使用しないのでOFFにします。
※SWAPを使う場合は、OFFする必要はありません。

[root@test-aws-harukainoue swapfile]# swapoff ./swap
[root@test-aws-harukainoue swapfile]# free -m
              total        used        free      shared  buff/cache   available
Mem:            983         226          73           0         682         594
Swap:             0           0           0

まとめ

メモリが枯渇するとOOM killerによってプロセスが強制終了されてしまいます。
メモリが不足しているときに、応急処置として
一時保存領域SWAPを使うことで少しは、メモリが枯渇してしまう不安を和らげることができます。
メモリとSWAPを上手に使って、システムのハングアップを防ぎたいところです。
作成していたはずのSWAPが、再起動後に消えていた!なんてことがないように、マウントすることも忘れずに。

日々成長、日々前進。
毎日、私自身をアップデートしていかなければ!!!
最後まで読んでくださって、ありがとうございます。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
0
読み込み中...
0 票, 平均: 0.00 / 10
1,007
X facebook はてなブックマーク pocket
[2024.6.30 CentOS support ended] CentOS server migration solution

[2024.6.30 CentOS support ended] CentOS server migration solution

[2025.6.30 Amazon Linux 2 support ended] Amazon Linux server migration solution

[2025.6.30 Amazon Linux 2 support ended] Amazon Linux server migration solution

[Osaka/Yokohama] Actively recruiting infrastructure engineers and server side engineers!

[Osaka/Yokohama] Actively recruiting infrastructure engineers and server side engineers!

The person who wrote this article

About the author

Akika Inoue

Belongs to the System Solutions Department.
He joined Beyond as a founding member of the Shikoku office.
I jumped into the IT industry with no experience. As an education team, we create curriculum and conduct training for new graduates, mid-career, and existing members.
The main business is server operation and maintenance.
Either way, we value your content.
Also belongs to the Web Content Division and YouTube Team.