FreeBSDでインストール後にswap領域を新設・拡張するなどの方法を探していたら、FreeBSD Handbookにちゃんと書いてあったからみんなもちゃんとドキュメントを読むようにしようね、ごめんなさいごめんなさい!

CentOS(Linux)でのswap領域の追加方法に始まり、FreeBSDのインストール後のswap領域の追加方法を調べたのだが、FreeBSD Handbookにしっかり書いてあったのを確認する。やっぱHandbookは読まないとだめだねぇ。反省。と、そこで気がついたのが、FreeBSD-9までの方法とFreeBSD-10以降の方法では少し異なる手順の部分があったのだ。


FreeBSD 10-STABLEもVirtualBoxなゲストOSが存在するので、これもちょっと試してみた。

なお、FreeBSD Handbookの記載は以下の通り。英語版である。
ちなみに日本語翻訳版ではswapに関する記述が節ごと存在しない。最新のドキュメントは常に英語版で確認するのが一番である。

■12.12. Adding Swap Space – FreeBSD Handbook
http://www.freebsd.org/doc/handbook/adding-swap-space.html

この節中の「Example 12.2. Creating a Swap File on FreeBSD 10.X and Later」を見るとコマンド手順が記載されている。英文が読めなくてもこの手順に従えばできる、のだが(この例では)、「やってはいけない」という記述が混じってたりするとアウトになるので、やっぱり英文はしっかり読もう。

というわけで、実際にやってみることにする。
その前に状況確認。各パーティションはこんな感じになっている。
余談だけれど、パーティションは人の好みや趣味がでるものなので、他人のパーティションの切り方は結構興味があったりする。ただしLinuxの場合はいちいちパーティションを切ったりしない私……。
私のパーティションの切り方は、今から16年ぐらい前に大学職員(技術職)として入りたてだった私にFreeBSDを使うよう指導してくれた某先生の切り方に結構大きく影響を受けている。

[shell]
# df -H
Filesystem Size Used Avail Capacity Mounted on
/dev/ada0p2 8.3G 1.1G 6.6G 14% /
devfs 1.0k 1.0k 0B 100% /dev
/dev/ada0p4 4.2G 246M 3.6G 6% /var
/dev/ada0p5 4.2G 34M 3.8G 1% /var/log
/dev/ada0p6 8.3G 416M 7.2G 5% /usr
/dev/ada0p7 8.3G 1.6G 6.1G 21% /usr/local
/dev/ada0p8 4.2G 955M 2.9G 25% /usr/src
/dev/ada0p9 4.2G 3.4G 392M 90% /usr/obj
/dev/ada0p10 25G 2.3G 21G 10% /usr/ports
/dev/ada0p11 12G 34M 11G 0% /usr/work
/dev/ada0p12 21G 2.0G 17G 10% /home
[/shell]

swapinfoコマンドで確認しておく。一応、1パーティションが割り当てられている。

[shell]
# swapinfo -m
Device 1M-blocks Used Avail Capacity
/dev/ada0p3 4096 0 4096 0%
[/shell]

まず、ddコマンドで1GBサイズのファイルを用意。サイズはcountオプションで任意に設定すればよいだろう。

[shell]
# dd if=/dev/zero of=/usr/swap bs=1m count=1024
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 6.069806 secs (176898867 bytes/sec)
[/shell]

パーミッションを設定する。

[shell]
# chmod 600 /usr/swap
# ls -la /usr/swap
-rw——- 1 root wheel 1073741824 Jul 3 17:40 /usr/swap
[/shell]

/etc/fstabファイルを編集する。Handbookにはデバイス名にmd99とあったが、ちょっとナニなのでmd0にしておくことにする。
FreeBSD-9以前の場合と異なり、/etc/rc.confへの設定は不要のようだ。

[shell]
md0 none swap sw,file=/usr/swap 0 0
[/shell]

そして、swaponコマンドで有効化にする。

[shell]
# swapon -aq
[/shell]

swapinfoコマンドで確認をする。

[shell]
# swapinfo -m
Device 1M-blocks Used Avail Capacity
/dev/ada0p3 4096 0 4096 0%
[/shell]

あ……あれ??
追加されてない!
Handbookどおりにやってるのに、なんでかうまくアタッチされないじゃん。どういうことだろうか?

/etc/fstabの記載内容とかをいろいろ変更したのだが、やっぱりうまくいかず悩んでいたのだが、きっと同じ問題にはまってる人が世界のどこかにいるはずだと思いGoogleってみた。

そしたら、やっぱりいた!

■Using a swap file – freebsd-current Mailing List
http://lists.freebsd.org/pipermail/freebsd-current/2013-October/045812.html

超訳すれば「swapon -aqだとうまくいかず、-aLオプションだとアタッチされるんだけど?」っていう質問だったのだが、これには明快な回答がなされていた。

■Re: Using a swap file – freebsd-current Mailing List
http://lists.freebsd.org/pipermail/freebsd-current/2013-October/046056.html

こちらも超訳すると「(/etc/fstab中の)file=がファイルへのswapだから遅いことを暗示させる」ので、ある時点から扱いが変わったようである。
ということで-aLオプションでやってみると……。

[shell]
# swapon -aL
[/shell]

うまくいった。

[shell]
# swapinfo -m
Device 1M-blocks Used Avail Capacity
/dev/ada0p3 4096 0 4096 0%
/dev/md0 1024 0 1024 0%
Total 5120 0 5120 0%
[/shell]

ちなみに/etc/fstabはあの記述でも問題なさそうである。ためしに再起動をして確認したが、md0もswapとして有効になっていた。

なんだよーHandbookが更新されてない。
Handbookの意味ないじゃん!
とはいえHandbookを見なくてもいい理由にはならないので、やっぱり一度キチンと読んで確認するのがいい。問題があればdocumentation teamに連絡をするなどが望ましいかもしれない。

FreeBSD Expert 2013 Summer Digital Edition実践 FreeBSD サーバ構築・運用ガイド開発環境としてのFreeBSD~FreeBSD 9.2-RELEASEでデスクトップ環境を構築 (FreeBSD Weekly Topics Digital Edition)The Design and Implementation of the FreeBSD Operating System (2nd Edition)安定サーバを作ろう!~FreeBSD 9.2-RELEASEでサーバ構築 (FreeBSD Weekly Topics Digital Edition)Linux究極マスターバイブル (100%ムックシリーズ)

コメントを残す

メールアドレスが公開されることはありません。