AWSのメモリを無料で増設

はじめに

先日awsの格安インスタンスで書いたコードをgithubにコミットしようとした際、OutOfMemoryエラーが吐かれました。
それ以前にもとあるプログラムを実行する際にメモリが足りないエラーを吐かれたことがありました。
格安(無料枠)のインスタンスだとメモリが制限されるので、この様な事がよく起こるのですがスケールアップするのはお金がかかってしまいます。
そこで今回は無料でメモリを増設する方法を記述したいと思います。

スワッピング

お察しの通りスワッピングです。HDDを増設しメモリの様に使う手法のことです。awsでは30GBまで無料枠となっており、ec2インスタンス作成時に8gbは必ずボリューム予約されてしまうので、大体20gb位はボリューム追加出来ることになります。

AWS上の設定

すみません、割愛します。

マウントまで

まずはアタッチしたボリュームが認識されているか確認。

# lsblk
xvda 202:0 0 8G 0 disk
mqxvda1 202:1 0 8G 0 part /
xvdf 202:80 0 20G 0 disk

続いてファイルシステム作成。awsは理由はよく分からないのですがxfsが良いらしいです。

# mkfs -t xfs /dev/xvdf
meta-data=/dev/xvdf            isize=512  agcount=4, agsize=1310720 blks
         =                     sectsz=512 attr=2, projid32bit=1
         =                     crc=1 finobt=0, sparse=0
data     =                     bsize=4096 blocks=5242880, imaxpct=25
         =                     sunit=0    swidth=0 blks
naming   =version 2            bsize=4096 ascii-ci=0 ftype=1
log      =internal log         bsize=4096 blocks=2560, version=2
         =                     sectsz=512 sunit=0 blks, lazy-count=1
realtime =none                 extsz=4096 blocks=0, rtextents=0

作成したらマウントする。

# mkdir /data
# mount /dev/xvdf /data/

スワップする

次からスワップ設定を行う。
スワップファイルを作成する。

# touch /data/swapfile
# dd if=/dev/zero of=/data/swapfile bs=1M count=20480
dd: error writing ‘/data/swapfile’: No space left on device
20438+0 records in
20437+0 records out
21429747712 bytes (21 GB) copied, 333.884 s, 64.2 MB/s
# mkswap /data/swapfile
Setting up swapspace version 1, size = 20927484 KiB
no label, UUID=866867a2-0e24-4931-8e84-3830d045fe03

最後にswaponする。

# free -h
      total used free shared buff/cache available
Mem:  989M  403M 68M  13M    517M       424M
Swap: 0B    0B   0B

# swapon /data/swapfile
swapon: /data/swapfile: insecure permissions 0644, 0600 suggested.
# free -h
      total used free shared buff/cache available
Mem:  989M  420M 79M  13M    489M       408M
Swap: 19G   0B   19G

以上。
コミット用に作成したインスタンスなので直ぐ消すつもりだったのですが、永続化を考えているならfstabファイルとかを編集した方が良いと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA