Btrfsはスワップファイルをサポートしていない件。
一時的にでかいファイルをつくって、それをスワップ領域として
追加するオペレーションはたまにやる手段かと思いますがBtrfsではこれができない・・
一般的な方法
一般的なswapファイルを追加する方法を見てみましょう。
root@gealach:~# dd if=/dev/zero of=/tmp/swapfile bs=1M count=1024
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 2.61776 秒、 410 MB/秒
root@gealach:~# mkswap /tmp/swapfile
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=17792a6a-6f13-4ac1-8bbf-fc4a5fe1be85
root@gealach:~# swapon /tmp/swapfile
swapon: /tmp/swapfile: insecure permissions 0644, 0600 suggested.
swapon: /tmp/swapfile: swapon failed: 無効な引数です
うーん、だめですね。
急遽swapを足したい時は対処のしようがないのか?
そんなことはないのです!
ループデバイスにスワップファイルをマウントして、それをスワップに割り当てることができます。
Btrfsの場合
さっそくやってみましょう!
root@gealach:~# dd if=/dev/zero of=swapfile bs=1M count=1024
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 2.31198 秒、 464 MB/秒
root@gealach:~# losetup /dev/loop0 swapfile
root@gealach:~# mkswap /dev/loop0
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=6351b805-5252-46af-9f33-dc8f6410756e
VirtualBox上の仮想マシンで検証をしたのですが、
Btrfsだから圧縮が効いて1GBのファイル作成が450MB/s前後!
はやーい!!
けどこれ、スワップアウトしたらものすごい遅いんでしょうね・・