AWS EC2でインスタンスを新規に作成すると、もれなくスワップ領域が存在しません。 まぁ…スワップ使い始めると劇的にパフォーマンスが落ちるので、足りなくなったらメモリ増やすなり、AutoScalingなりでインスタンス数を増やせってことなんだと思いますが、例えばmakeコマンドなどでビルド中に微妙にメモリが足りなくなった場合は普通にスワップ使ってもらった方が面倒事が少なくて助かる場合もあります。
というわけで今回はLinuxにスワップ領域を作成しマウントするところまでをメモしておきます。
スワップ領域の作成
初期状態
インスタンス作成直後の状態です。スワップはゼロです。
$ free -h total used free shared buffers cached Mem: 481M 163M 318M 60K 8.4M 98M -/+ buffers/cache: 56M 425M Swap: 0B 0B 0B
ファイルの準備
スワップは簡単に言うと物理的なファイルをメモリ代わりに利用する仕組みです。というわけでメモリ代わりにするファイルを準備します。
$ sudo mkdir /var/swap/ $ sudo dd if=/dev/zero of=/var/swap/swap0 bs=1M count=1024 1024+0 レコード入力 1024+0 レコード出力 1073741824 バイト (1.1 GB) コピーされました、 15.084 秒、 71.2 MB/秒
上記コマンドで/var/swap/swap0
というファイルを作成しました。ここでは約1Gbyte分の領域を作成していますが、ddコマンドのオプションcount
で指定している値を減らしたり増やしたりします。
なおまだスワップ領域にはなっていません。ここでは中身が空だが1Gbyte分の容量があるファイルを作成しただけです。
$ od -h /var/swap/swap0 0000000 0000 0000 0000 0000 0000 0000 0000 0000 * 10000000000
誤って編集しないようパーミションも変更しておきます。
$ sudo chmod 600 /var/swap/swap0
スワップ領域に変換
mkswap
でスワップ領域に変換します。
$ sudo mkswap /var/swap/swap0 スワップ空間バージョン1を設定します、サイズ = 1048572 KiB ラベルはありません, UUID=f801211b-52ab-478e-959c-f6482770552b
swapon
で有効にします。
$ sudo swapon /var/swap/swap0
ここでおもむろにfreeコマンドを打つと、無事にスワップ領域として認識されました。
$ free -h total used free shared buffers cached Mem: 481M 164M 317M 60K 8.5M 98M -/+ buffers/cache: 57M 424M Swap: 1.0G 0B 1.0G
どうでも良いのですが、ずっと心の中で「すわぽん」と呼んでいて、かわいいなこいつと思っていたのですが、これ冷静に考えるとswap
をon
にするコマンドなので呼称としては「すわっぷおん」が正しいわけですね。スワップ領域を無効にするコマンドがswapoff
なのを見て気が付きましたw
再起動後もマウントする
最後に/etc/fstab
の最後の行に以下を追記しておきます。
$ sudo vi /etc/fstab /var/swap/swap0 swap swap defaults 0 0
関連
https://blog.katsubemakito.net/monacoin/build_monacoind
売り上げランキング: 3,945