2010年10月アーカイブ

zshインストールしようとしたらPerlを巻き込みはじめてちょっとビックリ。
perlならいいが一度X WindowなどのGUI関連が巻き込まれたら手に負えなくなる。
なゆた先生からMakeの設定を変えれば良いと教えられ、/etc/make.confに以下の2オプションを追加。そーいえばmake.confって今まで変えたことがなかったような...。

NO_X=true
WITHOUT_X11=true

ちなみに=の後ろの値は何でもいい。マニュアルより
bool と指定されている変数では、その値は
意味を持ちません。変数が設定されていれば (たとえ値が ``FALSE'' や ``NO''
でも)、変数が設定されているものとして扱われます。

まぁこれでインストールに数時間なんて事態も防げるはず。

この間の続き。

早速完成した環境でsshdの設定やportsnapでportsツリーを更新。
その後locateコマンドを効かす為に
/usr/libexec/locate.updatedb を実行したらカーネルがパニくってシステムが完全固まった。

もう一度再起動してdmesgを確認するとZFS関連のメッセージで以下が出力されていた。
ZFS NOTICE: Prefetch is disabled by default on i386 -- to enable,
add "vfs.zfs.prefetch_disable=0" to /boot/loader.conf.
ZFS WARNING: Recommended minimum kmem_size is 512MB; expect unstable behavior.
Consider tuning vm.kmem_size and vm.kmem_size_max
in /boot/loader.conf.
ZFS filesystem version 3
ZFS storage pool version 14

どうやらI/O周りに負荷がかかるとやっぱりメモリを多く割り当てないとダメなようだ。

そこで、ハンドブック[1]を参照にカーネルを再ビルドすることにした。

カーネルコンフィグレーションファイルを以下のように変更。色々弄くってみたいが、とりあえず余計なことはせず、options KVA_PAGES=512だけを追加。

後はハンドブックの指示通りにmake buildkernelしてmake installkernelしたら再起動。dmesgにidentに指定した i386_ZFS_KERNELという文字列が出力され、うまくカーネルがさし変わったことを確認した後、似たような構成でZFS環境を構築している方のパラメータを参考に[2] /boot/loader.confに以下を追記し、また再起動。
vm.kmem_size="1536M"
vm.kmem_size_max="1536M"
vfs.zfs.arc_max="1024M"

dmesgにZFS WARNINGが消えたのを確認。
/usr/libexec/locate.updatedb を再実行しても落ちなくなった!

後はnoticeに出ているプリフェッチを有効化するのかどうかだが、性能と引き替えに落ちるという報告[3]を見かけたので特に何もしないことにした。


参考
[1]カスタムカーネルの構築とインストール http://www.freebsd.org/doc/ja/books/handbook/kernelconfig-building.html
[2]ともちゃ日記 - 元大学生のぐだぐだOL日記- http://tomocha.net/diary/?20100608#201006082
[3]ZFSが落ちる - smectic_gの日記 http://d.hatena.ne.jp/smectic_g/20100827/1282862472

たまには技術ネタでも。
そろそろ以前買ったatomマシンにFreeBSDを入れることにした。で、FreeBSD8.0系からZFSが実験的レベルからプロダクションレベルに引き上げられたので、是非この先進的なファイルシステムを使ってみたいと思い、数日間寝る前に色々格闘した結果、案外簡単にOS立ち上げまで辿り着けたので、環境構築手順をメモっておく。

まぁ偉そうにいっても、ほとんどwiki.freebsd.org[1]に書かれている内容の真似事である。
ただ、記憶領域がSSDの40GBでそんなに余裕が無い為、swap領域は別パーティションで用意せずにzfsの機能を利用させてもらっている。

まず、公式からiso-imgのFreeBSD-8.1-RELEASE-i386-memstick.imgを取得し、USBメモリに移す。isoイメージの書き込みにはWin32DiskImagerってツールを使用した。

USBメモリからbootし、以下の手順で環境を構築。
http://gist.github.com/615329

とりあえずここまでやれば
Welcome_to_FreeBSD.jpg
システムログイン画面までいける!いっつもsysinstallでやっていたから楽々だったけど手動インストールは結構めんどい。実際に何回かやり直しもしている。Welcome to FreeBSDの文字が表示されて嬉しく思うのは初インストール以来だろうか。

ちなみに貧弱なシェルで上記コマンドを打つのは結構な苦行だ。特にzfsファイルシステム作成のあたりとか泣きそうになる。実際に自分は一回他のwindowsマシンで上記コマンドをzfs_install_helper.shみたいな名前のシェルスクリプトに纏めてUSBメモリに書き写し、OSインストール中のマシンで以下のコマンドを実行し一気に作業を進めている。
mount_msdosfs /dev/da0s1 /mnt
sh /mnt/zfs_install_helper.sh

8.0の段階ではi386じゃメモリ不足によりZFS無理って評価が圧倒的に多かったので、メモリチューニング&カーネル再構築は必須かと思っていたが意外にも大丈夫だった。まぁメモリ絡みの設定はもう少しアプリ入れてからやってみることにしよう。

うーん、恥ずかしながら後半のexport LD_LIBRARY_PATH=/mnt2/lib
が何の為にやっているのか分からん...。システム環境変数なのでOSの挙動に影響しているのは分かったがzfs unmount -aが影響を受けるのだろうか...?


[2010/10/09]これでswap領域も共有されて...と思ったが、よくよく考えたら-V指定でサイズを指定しているので結局パーティション切った同じだ!...orz

echo 'cpufreq_load="YES"' >> /boot/loader.conf を削除。組み込まれているのでいちいち指定する必要はもう無い。http://gihyo.jp/admin/clip/01/fdt/200707/09

[参考]
[1]RootOnZFS/GPTZFSBoot/RAIDZ1 - FreeBSD Wiki
[2]ESXiのゲストOS FreeBSD 8.1 + ZFSの導入メモ [ESXi/FreeBSD](fkimura.com)
[3]~nabeken/diary/ : FreeBSD 8.1-RELEASEでZFS on ROOT
[4]On-line Manual of "gpart"

このアーカイブについて

このページには、2010年10月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2010年9月です。

次のアーカイブは2010年11月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 7.9.3