【ペルシャ猫備忘録】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が、再起動後に消えていた!なんてことがないように、マウントすることも忘れずに。
日々成長、日々前進。
毎日、私自身をアップデートしていかなければ!!!
最後まで読んでくださって、ありがとうございます。