【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【ペルシャ猫備忘録】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
949
X facebook はてなブックマーク pocket
【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【25卒向け】AI×バーチャル面接の募集を開始いたしました!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

井上明香

システムソリューション部に所属。
ビヨンドに四国オフィス設立メンバーとして入社。IT業界に未経験で飛び込みました。
教育チームとして、新卒、中途、既存メンバーのカリキュラムの作成や研修の実施を行っています。
主な業務は、サーバーの運用保守。
とにかく、お客様のコンテンツを大切に思っています。
Webコンテンツ事業部、YouTubeチームにも所属。