Linux(Ubuntu)のswap領域を拡張する
Odroidを組み立てて色々確認していたら、どうも初期設定ではSWAPの設定がされていないようだった。
$ free -h
total used free shared buff/cache available
Mem: 1.9G 380M 46M 1.9M 1.5G 1.5G
単純にファイルサーバとして使うだけだったら、そのままでも問題ないんだけど、目的が”bitcoind”を動かすために組み立てたのもあって、流石に2Gのメモリだけだと溢れるだろうなと思ったので、拡張しました。
swap(スワップ)とは?
ハードディスク上に「スワップファイル」あるいは「スワップ領域」と呼ばれる専用の保存領域を用意して、メモリ容量が不足してきたら現在使われていないプログラム(プロセス)を一時的にスワップファイルに書き出して消去し、占有していたメモリを開放する。メモリからハードディスクに退避する動作を「スワップアウト」(swap-out)、ハードディスクからメモリに書き戻す動作を「スワップイン」(swap-in)という。
メモリが溢れてしまっても、一時的に利用されるファイルです。設定なしでメモリが溢れると、稼働中のアプリケーションが強制終了されちゃいます…
swapの設定はパーテーションを作成してそこをswap設定にするか、swap用のファイルを作成して設定するかで、パーテーションの方がスピードは早いと思うけど、後から変更するのが大変なのでswapファイルを作成しました。∠( ‘ω’)/
ここから先の方法は起動中のプログラムを止める必要はなく、設定後にOS自体の再起動も必要ないので、何かのプログラム動作中に「swap領域ヤバイ」とか、「メモリ溢れそうだけどswap設定してない」という時でも拡張できる。
swapファイルを作成
以下のコマンドで、”/(ルート)”配下に、2Gバイトの”swapfile”という名前のファイルを作成。
$ sudo fallocate -l 2G /swapfile
通常は「メモリの2倍だ!」とか言われている本当は4Gぐらいが良いみたいだけど、eMMCの容量が8Gと一番小さいのを選んでしまっていて、4Gの容量を確保するとSSDの空き容量が1Gを下回りそうだったので、2Gにしてます。ちなみに、必ずしもメモリの2倍にしなければいけないわけではない。
“swapfile”の容量を調節したい場合は”2G”の部分を変更してね!
続いて”swapfile”の権限を”root”のみに変更する。
$ sudo chmod 600 /swapfile
swapファイルをswap領域として設定
上記で作成した”swapfile”をswap領域として設定する。
$ sudo mkswap /swapfile
swap領域に設定しただけではダメなので、有効化をします。
$ sudo swapon /swapfile
これですぐにswap領域として反映されます。
設定したswap領域の恒久処理
ここまでの設定はあくまで一時的に今稼働中のOSに設定した状態なので、OS再起動をかけるとswap領域が外れる。一時的な対応として実施したのであれば、そのままでもいいと思うけど、「今後もそのままにしておきたい。」と思うなら、恒久的に反映されるように設定しておきましょう。
$ sudo cp -p /etc/fstab /etc/fstab.bak
$ sudo vim /etc/fstab
※どこでも良いので以下の1行を追加
~
/swapfile none swap sw 0 0
~
これでOSを再起動しても同じようにswap領域が割り当てられるようになる。
設定したswap領域の割り当て解除
割り当てを解除する場合は逆順で処理をすれば外れる。
$ sudo swapoff /swapfile
$ sudo mv /etc/fstab.bak /etc/fstab
$ sudo rm /swapfile
恒久処理をしていない場合は2行目の”fstab”ファイルを戻すところはやらなくて良いよ(。・ω・)ノ゙
ディスカッション
コメント一覧
まだ、コメントがありません