OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

AWSのEC2(RHEL 7.4)でスワップファイルを作成する

カテゴリ:OSSセットアップ | ソフトウェア:Linux | タグ:
最終更新日:2020/11/22 | 公開日:2017/08/30

目次

概要

 AWSのEC2インスタンスでお安く(もしくは無料枠で)サーバを構築する場合、 インスタンスタイプとして t2.micro を選択することが多いかと思います。 t2.micro はメモリを1GBしか搭載していないため、DBMSのようなメモリを多めに使用する ミドルウェアを起動するには足りなくて起動できないケースがあります。 インスタンスタイプを t2.medium などにアップすれば問題は解決しますが、 お金をケチりたい場合でかつ、あまり性能を求めない場合は、 ファイルでスワップ領域を作成するのが手っ取り早いです。

 今回はLinuxのルートファイルシステム上に SWAPFILE という名前の1GiBのファイルを作成し、 これをスワップファイルとして設定します。 AWSのEC2で検証しましたが、AWSに特化した話ではないため、Red Hat系のLinuxであれば 同じ手順で作成できます。

 余談ですが、EC2の初期状態ではスワップ領域って存在しないようですね。

構成

想定環境

 AWS(Amazon Web Services)のEC2インスタンスを利用して検証しました。 サーバのスペックは以下のとおりです。

■サーバスペック
項目内容
インスタンスタイプt2.micro
vCPU1
メモリ1GB
ディスクSSD 10GiB
リージョン日本

サーバ構成

OSバージョン

Red Hat Enterprise Linux 7.4 x86_64

環境構築

設定

事前の構成確認

 スワップファイルを作成する前にシステム構成を確認します。 以降全てrootユーザで実行します。

$ sudo su - ←rootユーザにスイッチ
Last login: Sat Aug 26 17:45:06 UTC 2017 on pts/0
# free ←メモリ使用状況の確認
              total        used        free      shared  buff/cache   available
Mem:        1014736       81508      797232       12960      135996      775592
Swap:             0           0           0 ←スワップは存在しない
# cat /proc/swaps ←スワップ構成の確認
Filename                                Type            Size    Used    Priority ←スワップは存在しない
# df ←ファイルシステム構成の確認
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/xvda2      10473452 1242724   9230728  12% / ←ルートファイルシステムに約9GiBの空きがある
devtmpfs          487080       0    487080   0% /dev
tmpfs             507368       0    507368   0% /dev/shm
tmpfs             507368   12960    494408   3% /run
tmpfs             507368       0    507368   0% /sys/fs/cgroup
tmpfs             101476       0    101476   0% /run/user/1000

スワップファイルの作成

 ルートファイルシステム上にスワップファイルとする空ファイルを作成します。 1GiBのスワップファイルを作成するため、サイズ512バイトのブロックを2,097,152(=2×1,024×1,024)個で 構成される /SWAPFILE という名前のファイルをddコマンドで作成します。 スワップファイルは一般ユーザに間違って消されないように、所有者rootでパーミッションを0600とします。

# dd if=/dev/zero of=/SWAPFILE bs=512 count=2097152 ←1GiBの空ファイルを作成
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 12.9585 s, 82.9 MB/s
# chmod 600 /SWAPFILE ←パーミッションを0600に変更
# ls -l /SWAPFILE ←ファイルのパーミッションと所有者を確認
-rw-------. 1 root root 1073741824 Aug 29 13:40 /SWAPFILE

スワップファイルをスワップ領域として初期化

 作成したスワップファイルを mkswap コマンドでスワップ領域として初期化します。

# mkswap /SWAPFILE ←スワップ領域として初期化
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=806577e1-789e-4819-8937-49bd7d1ffa4f
# file /SWAPFILE ←ファイル属性の確認
/SWAPFILE: Linux/i386 swap file (new style), version 1 (4K pages), size 262143 pages, no label, UUID=806577e1-789e-4819-8937-49bd7d1ffa4f

スワップ領域の有効化

 作成したスワップファイルをスワップ領域として有効化します。

# swapon /SWAPFILE ←スワップ領域の有効化
# cat /proc/swaps ←スワップ構成の確認
Filename                                Type            Size    Used    Priority
/SWAPFILE                               file            1048572 0       -1 ←スワップ領域として認識されている
# free ←メモリ構成の確認
              total        used        free      shared  buff/cache   available
Mem:        1014736       83220       73296       13016      858220      748592
Swap:       1048572           0     1048572 ←1GiBのスワップ領域として認識されている

Linux起動時にスワップ領域を自動で有効化

 上記設定だけではLinux再起動の度に swapon コマンドでスワップ領域を有効化しなければならないため、 fstab ファイルに設定を追加して、Linux起動時に自動でスワップ領域を有効化します。

# cd /etc/
# vi fstab
ファイル名:/etc/fstab
※ファイルの末尾に追加※

#
# /etc/fstab
# Created by anaconda on Tue Jul 11 15:57:39 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=de4def96-ff72-4eb9-ad5e-0847257d1866 /                       xfs     defaults        0 0
/SWAPFILE                                 swap                    swap    defaults        0 0 ←この行を追加

 以上で設定は終わりです。