2014-05-30

Linuxでswap用のファイルを作って使う(swapパーティションではなく)

かつてのLinuxの常識
実メモリ(RAM)の2倍のswapパーティションを作って、仮想メモリとして使う。

今陥っている状況
RAMが2GB積んでるからswapパーティション要らないと思って作らなかったけどChrome/Chromiumがやたらメモリ食うしヽ(`Д´)ノもう来ねえよ!ウワァァン

残された手段
Windowsのpagefile.sysみたいに、既存のパーティション上にスワップファイルを作って、メモリ逼迫してきたら仮想メモリとして使えるようにする。

というわけで、/mnt/swap.pagefileという4GBのファイルを作って、そこをスワップファイルにします。

まず、今のスワップの確認。
$ cat /proc/swaps
Filename Type Size Used Priority
何もない!

スワップファイル作成からデフラグ[1]、スワップ有効化。
# dd if=/dev/zero of=/mnt/swap.pagefile bs=1M count=4096
4096+0 レコード入力
4096+0 レコード出力
4294967296 バイト (4.3 GB) コピーされました、 84.8117 秒、 50.6 MB/秒
# e4defrag /mnt/swap.pagefile
ext4 defragmentation for /mnt/swap.pagefile
[1/1]/mnt/swap.pagefile: 100% [ OK ]
 Success: [1/1]
# mkswap /mnt/swap.pagefile
# swapon /mnt/swap.pagefile
これが問題なく終わってれば、スワップ確認した時に変わる。
$ cat /proc/swaps
Filename Type Size Used Priority
/mnt/swap.pagefile                      file 4194300 519140 -1
問題なさそうなら、/etc/fstabに行を追加。これでswapon -aでマウントしてくれるし、起動時にもマウントしてくれる。
/mnt/swap.pagefile swap swap defaults 0 0

[1] Windowsのデフォルトみたいにスワップファイルが断片化してると、目も当てられない状況になってしまうので(XPまでの話。Vista以降はよく知りません)