目次
3Dモデリングとゲームエンジンに興味があります。Blenderも活用!
t2.micro に限らず AWS EC2 のインスタンスにはスワップ領域が確保されていません。コスト削減のために必要最小限の性能を備えたインスタンスタイプを選択してしまうと、メモリが不足して OOM Killer によってプロセスが kill されてしまう可能性が高い状態が継続して危険です。そこで、非常事態にはスワップできるように設定を行います。今回 t2.micro を利用していますが基本的な考え方は他のインスタンスタイプでも同じです。
スワップ領域の準備
スワップ領域には /dev 以下のデバイスをパーティションとして利用する「スワップパーティション」と、ファイルシステム内のファイルを利用する「スワップファイル」の二種類があります。今回の例ではパーティションでは EBS を /data にマウントします。EBS には Amazon EBS General Purpose (SSD) volumes を選択します。
補足
- t2.micro ではインスタンスストア (Ephemeral Disk) が利用できないため EBS を利用しています。
一部のインスタンスファミリー(T1、T2 など)は、インスタンスストアボリュームをまったくサポートせず、ストレージとしては Amazon EBS のみを使用します。
- Root ボリュームに十分な空きがある場合は EBS をマウントせずに OS と同じファイルシステムをスワップファイルの格納領域として利用できます。
- 数年前は I/O あたり追加課金がなされる Amazon EBS Magnetic volumes しかなかったためクラウド破産の危険性がありました。現在は Amazon EBS の価格 にあるように Amazon EBS General Purpose (SSD) volumes が選択できます。
- Root ボリュームや Amazon EBS General Purpose (SSD) volumes がサポートする IOPS は小さいためスワップ領域を利用すると低速になります。あくまでも非常事態用と考えます。
- Amazon EBS Provisioned IOPS (SSD) volumes がサポートする IOPS は大きく設定できますが 1 GB あたりのコストは高くなります。
スワップファイルの作成
ここまでの設定で EBS が /data にマウントされているとします。以下のコマンドでスワップファイルを作成します。
必要に応じてスワップファイルを格納するディレクトリを作成します。
$ sudo mkdir /data/tmp
$ sudo chmod 777 /data/tmp
スワップファイルを作成します。t2.micro は実メモリが 1 GB ですので 2 GB としました。
$ sudo dd if=/dev/zero of=/data/tmp/swap.img bs=1M count=2048
- if=/dev/zero → input file から 0 を読み出します
- of=/data/tmp/swap.img → 出力ファイル (output file)
- bs=1M → 一度に書き込むバイト数
- count=2048 → ブロック "bs=1M" をコピーする回数
作成できました。
$ du -h /data/tmp/swap.img
2.1G /data/tmp/swap.img
権限を変更します。
$ sudo chmod 600 /data/tmp/swap.img
スワップファイルとして初期化
$ sudo mkswap /data/tmp/swap.img
スワップ空間バージョン1を設定します、サイズ = 2097148 KiB
ラベルはありません, UUID=fecce2a6-ec57-49d3-9036-f77a8a0dc29b
スワップファイルを手動で認識させる
$ sudo swapon /data/tmp/swap.img
有効になりました。
$ free -m
total used free shared buffers cached
Mem: 996 782 213 0 14 132
-/+ buffers/cache: 636 360
Swap: 2047 0 2047 ←★
別の確認方法も記載します。
$ swapon -s
Filename Type Size Used Priority
/data/tmp/swap.img file 2097148 0 -1
インスタンス起動時にスワップファイルが自動で認識されるように設定 (fstab)
EBS のマウント設定を記載した /etc/fstab にスワップファイルの設定も記載できます。以下のように追記します。
/etc/fstab
#
LABEL=/ / ext4 defaults,noatime 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/xvdf /data ext4 defaults,nofail 0 2 ←EBSマウントのために追加した設定
/data/tmp/swap.img none swap defaults,nofail 0 0 ←今回追加する設定
通常のファイルシステムの設定については
$ sudo mount -a
によって設定の検証ができました。しかしながら今回はスワップファイルの設定ですので mount ではなく以下のように検証します。
$ sudo swapon -a
これは /etc/fstab に記載のあるスワップファイルを認識させようとします。
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。
関連記事
- AWS EC2 インスタンスの選定方法準仮想化と完全仮想化 AWS のインスタンスタイプが準仮想化と完全仮想化のどちらの仮想化技術を採用したハードウェアであるかによって、使用できる AMI (OS) が異なるのは以下の理由によります。 準仮想化 ParaVirtualization (PV) において OS は自分が仮想化用のハードウェア上で動作していることを知っています。つまり仮想化用にカスタマイズされた専用の OS が必要になりま...
- OpenVPN で二つの VPC をつなぐための設定インターネット VPN (Virtual Private Network) には二拠点間の通信を暗号化する方式によって IPsec-VPN や SSL-VPN などがあります。OpenVPN は SSL-VPN の実装のひとつです。AWS VPC を二つ用意してそれらを OpenVPN で接続してみます。 VPC の構成 myvpc-1 (10.1.0.0/16) mysubnet-1-1 (10...
- Windows Server EC2 インスタンスへの CAL インストールWindows サーバを AWS EC2 インスタンスとして起動した後は、RDP 接続が必要となります。RDP 接続を行なうためには Remote Desktop Services (RDS) ライセンスが必要となります。 Windows Server のライセンスは、管理用途の RDS 接続を許可しています。その際に RDS ライセンスは不要です。ただし、[同時接続数が 2 という制限があります...
- AWS Lambda の基本的な使い方AWS Lambda はイベントドリブンな「関数」を登録できるサービスです。例えば S3 に画像がアップロードされたときにサムネイル用のサイズに加工する処理が記述された関数を登録できます。基本的な使い方をまとめます。 事前準備 関数の登録はブラウザで AWS コンソールにログインして行うこともできますが、本ページでは AWS C
- AWS 落穂拾い (Data Engineering)Kinesis Kinesis Streams データは 3 AZ にレプリケーションされます。Amazon Kinesis Data Streams FAQs 24 時間 (既定値) から 1 年までデータ保持できます。[Changing the Data Retention Period](https://docs.aws.amazon