ひとりごと

翌月:[2012-06]  前月:[2012-04] 表示単位 :

ついったー[おとなり日記] かがみさん Y.Kumagaiさん

2012/05/27 (日)

・ データ通信はどこまで浪費できるか

昨日から今日にかけてバスでお出かけしていたのですが、その間Androidでちょこちょこ速度測定したり、宿ではWiFiルータの電源をずーっと入れてiPad2で遊んでいました。

てことで、どれくらい無駄に使えたかの結果発表。

日付 Xperia ray WiFiルータ
5月26日 58MB 58MB 116MB
5月27日 85MB 86MB 171MB
143MB 144MB 287MB

なぜかrayとWiFiルータの転送量がよく似た数字になっていますが(これはホントに偶然)、ぜんぶ合計すると300MB弱です。それも2日間で!! いやはや、普通の生活パターンでいくと1ヶ月で500MBも使わないってのに2日で300MBとは恐れ入ります。この調子だと7日目にはデータ通信量上限に到達してしまいます。iijmioは私のペースだと無駄遣いしても月末に余りまくりますが、例えば1週間ぐらい出張が続くような人は足りなくなります。そういう人にはauとかドコモのプランの方が安心できていいのでしょうね。

[つっこみ]

2012/05/22 (火)

・ ZFS DEDUP テスト

FreeBSDのZFSは既にプロダクションレベルに達しており、我が家のサーバも3年以上の運用期間でノートラブルという実績があります。壊れたら修復は絶望的ですが、別デバイスにバックアップさえ取っておけばスナップショットで差分バックアップの代わりになるしデバイスを追加して容量拡張とか簡単だしそもそもファイルシステムとしては頑丈っぽいし良い事ずくめです。

そんなZFSに DEDUP というこれまたスゴい機能があるのだそうです。DEDUPというのは deduplicationだそうで、「データが重複してるとディスクがもったいないから無くしましょう」という考え。重複するから節約というのはハードリンクとかシンボリックリンクでもよく似ていますが、ZFSのそれはブロックごとに比較して重複していれば共通化するという力技。ハードリンクと違って共通化しても片方を編集した時に他方は影響を受けません(そのかわり共通でなくなるので容量は増える)。

てことで、はたしてそんなうまく機能するのか手元の環境で実験してみました。

はじめの状態
toriyu# zfs list tank/test
NAME USED AVAIL REFER MOUNTPOINT
tank/test 31K 570G 31K /tank/test
toriyu# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
tank 931G 346G 585G 37% 1.00x ONLINE -

作成したてのファイルシステムなのでサイズが非常に小さいです。この時点でのプール全体の使用量は346GB。

大きいファイルを get
toriyu# smbclient //whs2011/ドキュメント -c "get ja_server_install_disc_windows_home_server_2011_x64_dvd_660489.iso"
Enter root's password:
Domain=[WHS2011] OS=[Windows Home Server 2011 7601 Service Pack 1] Server=[Windows Home Server 2011 6.1]
getting file ja_server_install_disc_windows_home_server_2011_x64_dvd_660489.iso of size 4409899008 as ja_server_install_disc_windows_home_server_2011_x64_dvd_660489.iso (28295.8 KiloBytes/sec) (average 28295.8 KiloBytes/sec)

toriyu# zfs list tank/test
NAME USED AVAIL REFER MOUNTPOINT
tank/test 4.11G 565G 4.11G /tank/test
toriyu# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
tank 931G 350G 581G 37% 1.00x ONLINE -

smbclient経由で4GBのファイルをgetしたところ、使用量が4GBほど増えました。計算が合います。

単純コピー
toriyu# cp ja_server_install_disc_windows_home_server_2011_x64_dvd_660489.iso test1.iso
toriyu# zfs list tank/test
NAME USED AVAIL REFER MOUNTPOINT
tank/test 8.22G 561G 8.22G /tank/test
toriyu# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
tank 931G 355G 576G 38% 1.00x ONLINE -

DEDUPは使っていないファイルシステムなので、普通にコピーすると当然使用量が増えます。

DEDUPを有効にしてみる
toriyu# zfs set dedup=on tank/test
toriyu# zfs get dedup tank/test
NAME PROPERTY VALUE SOURCE
tank/test dedup on local
試しにコピーしてみる
toriyu# cp ja_server_install_disc_windows_home_server_2011_x64_dvd_660489.iso test2.iso
toriyu# zfs list tank/test
NAME USED AVAIL REFER MOUNTPOINT
tank/test 12.3G 557G 12.3G /tank/test
toriyu# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
tank 931G 359G 572G 38% 1.00x ONLINE -

ん? 普通に増えてますね。DEDUPの効果は無いのでしょうか?

もう一度コピーしてみる
toriyu# cp ja_server_install_disc_windows_home_server_2011_x64_dvd_660489.iso test3.iso
toriyu# zfs list tank/test
NAME USED AVAIL REFER MOUNTPOINT
tank/test 16.4G 557G 16.4G /tank/test
toriyu# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
tank 931G 359G 572G 38% 2.00x ONLINE -

お、今度は zfs list では増えてるにも関わらず、zpool list では使用量が変わってませんね。DEDUPも2.00xになっています。どうやら共通化する元のブロックもdedup=onにした後で書き込まれないと効果がないようです。

cpではなく再度smbclientでgetしてみる
toriyu# smbclient //whs2011/ドキュメント -c "get ja_server_install_disc_windows_home_server_2011_x64_dvd_660489.iso test4.iso"
Enter root's password:
Domain=[WHS2011] OS=[Windows Home Server 2011 7601 Service Pack 1] Server=[Windows Home Server 2011 6.1]
getting file ja_server_install_disc_windows_home_server_2011_x64_dvd_660489.iso of size 4409899008 as test4.iso (23046.8 KiloBytes/sec) (average 23046.8 KiloBytes/sec)
toriyu# zfs list tank/test
NAME USED AVAIL REFER MOUNTPOINT
tank/test 20.6G 557G 20.6G /tank/test
toriyu# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
tank 931G 359G 572G 38% 3.00x ONLINE -

cpと違って、今度はカーネルにすれば重複領域があることを予め知る術が無いはずですが、これまたちゃんと共通化してディスク使用量はさっきと変わりありません。なかなか優秀です。

snapshotを作ってファイルを削除
toriyu# zfs snapshot tank/test@snapshot1
toriyu# ls
ja_server_install_disc_windows_home_server_2011_x64_dvd_660489.iso
test1.iso
test2.iso
test3.iso
test4.iso
toriyu# rm *.iso
toriyu# zfs list tank/test
NAME USED AVAIL REFER MOUNTPOINT
tank/test 20.6G 557G 39K /tank/test
toriyu# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
tank 931G 359G 572G 38% 3.00x ONLINE -

ZFSを使っている方にはよくお分かりかと思いますが、snapshotを作成してファイルを削除しても容量は減りません。

再び smbclient で get
toriyu# smbclient //whs2011/ドキュメント -c "get ja_server_install_disc_windows_home_server_2011_x64_dvd_660489.iso test5.iso"
Enter root's password:
Domain=[WHS2011] OS=[Windows Home Server 2011 7601 Service Pack 1] Server=[Windows Home Server 2011 6.1]
getting file ja_server_install_disc_windows_home_server_2011_x64_dvd_660489.iso of size 4409899008 as test5.iso (25552.0 KiloBytes/sec) (average 25552.0 KiloBytes/sec)
toriyu# zfs list tank/test
NAME USED AVAIL REFER MOUNTPOINT
tank/test 24.7G 557G 4.11G /tank/test
toriyu# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
tank 931G 359G 572G 38% 4.00x ONLINE -

嬉しいことに、削除済みでsnapshotの中にのみ存在する領域でも有効のようです。

ということで、実験した結果のまとめ。

dedupプロパティはファイルシステム毎に設定できますから、内容が重複することがわかっており容量削減が重要な用途の場合は便利に使えるのでしょう。(どんな用途か思いつきませんけど ^^)

[つっこみ]
06/13( 通りすがり )
pdumpfsを使うような用途で生きてくるかも知れませんね。
ハードリンクでは共有できなパーミッションが音なるケースでもメタデータとは独立なのでdedupなら有効ですし。
06/13( たかたに )
なるほど、pdumpfsですか。と言いつつググる(笑)
うちではzfsのスナップショットを世代バックアップの代わりに使ってますが、確かにpdumpfsで単一ファイルを更新していく時(メールボックスとか)に効果ありそうですね。勉強になります。
06/14( 通りすがり )
「pdumpfsを使うような用途」という言い回しは判りにくかったです。

pdumpfs(やrsyncの--link-dest)はハードリンクで重複冗長を避けています(ですからdedupとは機能がダブります)。

ハードリンクは、リンク個数に上限がある、メタデータ(owner permisshin ctime mtime atime 諸々)の1つでも違っても共有できない、fsを跨いでリンクできない、また1バイトでも異なると共有できない等の制約がありますがdedupはこれらがありません。

使い所に悩みますが、jailでユーザランドの複製を多量に必要なケースで劇的にディスク消費を抑えられそうですね。
[つっこみ]

2012/05/16 (水)

・ Kei車検

新車から丸7年、3回目の車検です。代車で借りた アルト・エコがすごく良かったのでお別れするのが名残惜しいのですが、自分の車に乗り換えてみると、やっぱりこっちのほうが簡単に運転できます。

さて、今回は点検時にちょこちょこ交換部品もあったようで、メニューも盛りだくさんです。

マフラー以外は小さいものばかりなのですが、GSとかの車検と違って 必要な箇所はきっちり見てくれるのが良いですね。現時点では車検を通すのは次回が最後になるかな〜という気がするのですが、乗るからにはコンディションは良い状態を保ちたいので、整備には万全を期しておきましょう。

[つっこみ]

2012/05/15 (火)

・ コマンドラインでのVirtualBox仮想PCの作り方

VirtualBoxで初期イメージを作成するときは間違いなくGUIのほうが便利だと思うのですが、FreeBSDでむにゃむにゃするときはX11が無い環境のほうが普通(?)なわけで、コマンドラインだけで作成するときの覚え書きです。

[想定環境]

で、VirtualBoxは一般ユーザで走らせて、仮想HDDのファイルはホームディレクトリ直下に作成するものとします。ついでにWindowsのインストールDVDのイメージもホームディレクトリに置いておくものとします。

□ 仮想PCを作成
> VBoxManage createvm -name "testwhs" -register
Virtual machine 'testwhs' is created and registered.
UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Settings file: '/home/takatani/VirtualBox VMs/testwhs/testwhs.vbox'

> VBoxManage modifyvm "testwhs" --memory 2048
> VBoxManage modifyvm testwhs --chipset "ich9"
*** I/O APIC must be enabled for ICH9, enabling. ***
> VBoxManage modifyvm testwhs --ostype Windows2008_64
> VBoxManage storagectl testwhs --name hda --add sata --controller IntelAHCI --bootable on

最後の行では'hda'という妙な命名をしていますが、これはコントローラに付けた名前です。

□ 仮想HDDを作成
> VBoxManage createhd --filename "testwhs.vdi" --size 160000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Disk image created. UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
□ 仮想HDDと仮想DVDをマウント
> VBoxManage storageattach testwhs --storagectl hda --port 0 --device 0 --type hdd --medium testwhs.vdi

> VBoxManage storageattach testwhs --storagectl hda --port 1 --device 0 --type dvddrive --medium ~/ja_server_install_disc_windows_home_server_2011_x64_dvd_660489.iso
> VBoxManage modifyvm testwhs --boot1 dvd --boot2 disk --boot3 none
□ 仮想PCのNICを追加
> VBoxManage modifyvm testwhs --nic1 bridged --nictype1 82540EM --bridgeadapter1 em0

em0に関してはホストマシンのインタフェイスによってbge0とかに変わります。bridged にしておくと同一セグメントのネットワークからは実機が追加されたように見えるので扱いやすいと思います。82540EM というのは他の物でも良いと思いますが、選択を間違えるとネットワークの速度がものすごく遅くなるようです。

以上で作成作業はおしまい。

> VBoxHeadless --startvm testwhs --vnc --vncport 5900 --vncpass hogehoge

等と実行すれば、VNCクライアント(例:Chiken of the VNC)からインストール作業を行えます。接続時にはホストマシンのIPアドレスを指定してください。VNCではマウスカーソルがずれて使いにくいので、インストールが済んでしまえば後々のメンテナンスはWindowsの場合 リモートデスクトップの方が便利です。

□ その他
[つっこみ]

2012/05/14 (月)

・ 続・アルトエコ

本日は会社〜プールの90kmの道のりをアルト・エコで走ってまいりました。てことで、昨日は分からなかったことがいろいろ分かりましたのでちょっと書いておきます。

エンジン再始動音ははっきり聞こえる
都心の昼間の騒音ではよく聞こえませんでしたが、田舎の早朝とか夜中だとエンジンがかかる時のセルモーターの音がよく聞こえます。ただ、うちのKeiよりもはるかに静かで音のスペクトルもずいぶん異なっています。聞こえたところで気にならないのは確かです。
燃費運転ができる
私がオートマが難しいと感じる最大の理由が「今の回転数と出力はエンジンにとってしんどいのか楽なのかさっぱりわからん」というところ。だからアクセルをどの程度踏み込んだらどの程度の出力が期待できるのか、どこまで踏んだら燃費が悪くなるのか・・・ということを考えて運転ができません。いや、できないと思ってました。が、アルト・エコのCVTはこれが出来ます。発進時にアクセルをある程度踏んだ状態で更に微調整をしてみると、緩めるとがんばらなくなり、一定以上踏むと無理に頑張るというように微妙に反応が変わります。この間の調度良い踏み具合で固定して待ってやると綺麗に加速して巡航速度に達することができます。で、アクセルオフすると途端に燃料カットに移行し、時速15kmぐらいまでその状態が持続します。トルコン付きではきっとわからないでしょうけど、アルト・エコのCVTは意識的なのか否か、境がはっきりわかります。昨日ちょっと乗って非常に乗りやすいと感じましたが、たぶんMTで常に意識している燃料カットのタイミングがはっきりわかるからなんだと思います。
残量警告灯がつかない
この車にはもちろん残量警告灯が装備されています。が、点灯しません。本日給油をしましたが、16.79L入りました。この車の燃料タンクは20Lです。つまり残量3.21Lでもまだ点かないのです。まぁタンクが小さいのであんまり早く点いても困るということでしょうが、カタログ通り30km/L走るとしても残量3Lで点灯すると仮定して点灯後の走行可能距離は90km。これはちょっと少ないとおもいますよ。
なんかするとアイドルストップが解除される
例えばシフトレバーについてるSボタン(OD OFFみたいなの?)を押したり、ブレーキの踏み方をちょっと変えたり。普段エンジン停止によってものすごく快適な静寂性が確保できているので、停車してるのにエンジンがかかるとものすごく不快に感じます(笑)。アイドルストップ・キャンセルのボタンが付いてるのですが、個人的には強制エンジンストップボタンの方が欲しいです(^_^)。
瞬間燃費はKeiよりもはるかに良い
一般道巡航時には35〜45km/Lがでます。Keiだと22〜35km/Lぐらいかな。Keiで40台は軽い下り坂でないと出ませんが、アルト・エコでは普通に出るのてびっくりです。車のメーターに平均燃費の表示があるのですが、代車を乗り始めた時はなんと17.0km/L(笑)。会社まで走って行って18.1km/L。そのままプールに行って帰ってくると20.0km/Lでした。給油しても自動的にはリセットされなかったのですけど、はたしてこれはどれくらいの距離の平均燃費なのだろう。メーターの表示の中には燃料消費量が無いので、正確な区間燃費が出せないです。とはいえ、20km/Lより遥かに良いのは確かです。
瞬間燃費計は50km/Lで頭打ち
Keiに付けてる燃費マネージャは燃料カット時には ∞ の代わりに 99.9km/Lの表示になります。が、アルト・エコは50km/L以上はみんなこの数字になっちゃうみたいです。巡航時には45km/Lぐらいが上限だし燃料カットの境界は体感でわかりますから実運用ではさほど困らないかもしれません。

といった感じ。アイドリングストップというのは思ってた以上に快適ですよ。軽自動車に乗ったことがない人は知らないと思いますが、1200cc程度の小型自動車のエンジンがだいたい4気筒なのに対して660ccの軽自動車のエンジンはほとんど3気筒です。普通に走るぶんには違いはわからないと思いますが、停車時にエンジンの回転数が下がってくると、3気筒では結構振動が大きくなります。軽自動車だから仕方がない・・・と諦めていたところなのですが、エンジンを止めてしまうという離れ業で欠点を克服する方法があったとは!! (笑) 一時期 私も手動でアイドリングストップしたことがありましたが、手動だと右左折前にはエンジン止められないし、信号待ちで一番前にいる時は早めにエンジンかけなきゃいかんと気を使うしナビは再起動するしで、燃費マニアでなければ到底選ばない手段でした。が、アイドリングストップ車は手動と違ってなにも気にする必要はありません。さらに停車中に平均燃費がどんどん下がっていくという燃費マニアにとっての最大の屈辱に耐える必要もありません(^_^)。いやはや、次に買うんだったら絶対アイドリングストップモデルがいいなぁと思った次第です。

[つっこみ]

2012/05/13 (日)

・ アルト・エコ

新車を購入しました。

120513

というのはもちろん嘘で、うちのKeiの車検の代車です。

自分の車以外では会社のトラックにしか乗ったことがない人なのでぜんぜん知らなかったのですが、アルトエコってなかなかいい車なのです。

車屋さんから乗って帰っただけの数キロの道のりなのであんまり詳しいことはわかんないのですが、運転しにくいとは感じませんでした。MTと違ってCVTなので発進時とか上り坂ではエンジンの回転数が(軽自動車だから)異様に高くなるのですが、加速が悪いのかな〜と思ってスピードメーターを見たらいつの間にか60km/hを超えてたりするわけで、CVTでNAとはいえ普通に走るぶんには全然困らないんだなーと思いました。

まぁうちの車はあと4年ぐらい乗る予定にしていますが、乗り換えるときにはNAでもCVTでもOKかな? というのがわかったのは収穫でした。

[つっこみ]

2012/05/03 (木)

・ 久しぶりに動いた VirtualBox

我が家のFreeBSD機は VirtualBox を用いて Windows Home Server 2011 をインストールしています。元々サーバは24時間稼働ですしメモリやHDDリソースもふんだんにあるので、ここにWindowsを入れておけば電気代の節約になります。

という運用が出来ていたのはじつは何ヶ月も前。ports の VirtualBox の版が3から4に変わった少しあとぐらいに FreeBSD を8.2から9.0に更新すると共にVirtualBoxが動かなくなってしまいました。初めは FreeBSD が新しくなったので ports のメンテナンス待ちかな〜と思っていたのですが、いくら待っても動くようになりません。で、試しに別のFreeBSD9.0に VirtualBox を入れてみるとちゃんと動くのです(笑)。これは弱りました。

動かないというのは、具体的にはこんなふうになります。

takatani(toriyu): {118} VBoxManage list
VBoxManage: error: Failed to create the VirtualBox object!
VBoxManage: error: Code NS_ERROR_FACTORY_NOT_REGISTERED (0x80040154) - Class not registered (extended info not available)
VBoxManage: error: Most likely, the VirtualBox COM server is not running or failed to start.

で、まぁそれなりのキーワードで検索しても解決方法が見つからないのでずいぶん長く放置されていた訳ですが、先日こちらのページが偶然ひっかかりまして、物は試しに

% unsetenv LC_CTYPE

してみたんですよ。するとどうでしょう、ちゃんと動くではないですか。

ちなみに、LC_CTYPE には元々 `ja_JP.UTF-8' が入っています。VirtualBox を始動するときに LC_CTYPE は必要無いですから、Cを入れるなり消すなりすれば問題なく VirtualBox が使えます。はふっ、長い闘いだった・・・。環境変数だったとは。しかも動作に関係ない環境変数。とほほほ。

ちなみに、別のFreeBSDでは LC_CTYPE に ja_JP.UTF-8 がセットされてても動いていますからホントの原因は別のところにあるのだと思うのですが、ports再構築を複数回重ねても古いライブラリを手作業でちまちま消しても直らないので、原因究明は諦めました。とりあえず動けばいいです(^_^)。

# 数カ月ぶりに Windows 機のバックアップが取れましたよ
[つっこみ]
05/03( かがみ )
FreeBSD で VirtualBox が動くとは知りませんでした。FreeBSD native で動くのでしょうか Linux Emulator で動くのでしょうか。
05/03( たかたに )
うちでは Linux Emulatorは入れてないので native のはずです。 /usr/ports/emulators/virtualbox-ose から make install するだけで入ります。コマンドラインで仮想マシンをセッティングするのはちょっと面倒クサいですけど (^_^)
[つっこみ]

翌月:[2012-06]  前月:[2012-04] 表示単位 :
※このページへのリンクは自由です。リンクの方法については[つっこみ]で表示されるページの最後をごらんください。
たかたに(takatani@mars.dti.ne.jp)