インフラエンジニアbacchiのわかったことまとめ

bacchi.me

Btrfsはスワップファイルをサポートしてないけどなんとかなる

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前後!

はやーい!!

けどこれ、スワップアウトしたらものすごい遅いんでしょうね・・

  • B!