仮想環境の勧め (VMWare + FreeBSD/Jail)

17th Jan, 2010 | freebsd development

プログラマのための仮想環境の勧めに関しては、以前にも会社ブログの方に書いた。

そっちはどちらかと言うと共用サーバでの話。今回は自分自身が開発したり、ソフトウェアを評価したりするときにも仮想環境(特にJail)は便利だよ、という話。

普段、自分の開発環境はMac OS X(iMac / Macbook)なんだけど、両方ともVMWare Fusionを入れ、その上でFreeBSDを動かしている。そしてさらにそのFreeBSDの中にさらに複数の仮想環境であるJailが動いている。(ちょっとややこしい)

例えば、自宅のiMacの中のFreeBSDには以下のJailが入っている。

% ezjail-admin list          
STA JID   IP              Hostname              Root Directory
--- ----- --------------- --------------------- -------------------------
DR  1     192.168.252.204 rems.madoro.org       /usr/local/jails/rems.madoro.org
DR  2     192.168.252.205 rems3.madoro.org      /usr/local/jails/rems3.madoro.org
DR  3     192.168.252.207 puppets.madoro.org    /usr/local/jails/puppets.madoro.org
DR  4     192.168.252.206 puppetc.madoro.org    /usr/local/jails/puppetc.madoro.org
DR  5     192.168.252.208 puppetc2.madoro.org   /usr/local/jails/puppetc2.madoro.org
DR  6     192.168.252.203 pgsql84.madoro.org    /usr/local/jails/pgsql84.madoro.org
DR  7     192.168.252.202 pgsql82.madoro.org    /usr/local/jails/pgsql82.madoro.org
DR  8     192.168.252.211 mongodb.madoro.org    /usr/local/jails/mongodb.madoro.org
DR  9     192.168.252.209 mogilefs.madoro.org   /usr/local/jails/mogilefs.madoro.org
DR  10    192.168.252.212 gerrit.madoro.org     /usr/local/jails/gerrit.madoro.org
DR  11    192.168.252.201 couchdb.madoro.org    /usr/local/jails/couchdb.madoro.org
DR  12    192.168.252.210 couchdb2.madoro.org   /usr/local/jails/couchdb2.madoro.org
DR  15    192.168.252.213 redis.madoro.org      /usr/local/jails/redis.madoro.org

これだけの仮想環境がVMWare上のFreeBSDに入っている。使わなくなった仮想環境は消しているので、上にあるのは現役で使っている仮想環境のみ。オーバヘッドが大きそうだなあ、と思う人もいると思うがVMWare的に割り振っているメモリは、かなり余裕を持たせて1GB。少し前までは512MBだったがDatabase系がメモリ食いなので増やした。最近はノート型PCでも4GBとかいけるので、1GBくらいなら許容範囲だと思う。CPUやディスク負荷的には余裕。もちろん激しいことをしたら全体が遅くなるが、そういうことが必要になった場合(たとえば負荷テストとか、大規模データ処理とか)には別の環境を用意すればいいだけの話。

デスクトップ用途のマシンにサーバソフトウェアは入れない

デスクトップ用途のMac上に色々なサーバソフトウェアを入れるのは好きではない。Macに限らず、Windowsでもなんでも「デスクトップ用」として使ってる環境にサーバ系ソフトを色々入れるのはよろしくない。とは言え、開発環境としてはオールインワンで開発に必要なすべての物が物理的な一台に入っていると便利なことも多いので(ちょっと外出先でプログラミングとかね)、自分は仮想環境を使っている。

仮想環境のすばらしいところ

で、仮想環境のいいところは、たとえば、たった今 redis.madoro.org をResqueの評価用に作った。現在評価中なんだが、その後「やっぱりResque使わない」となったとしよう。この場合ばっさりその仮想環境を消せば、すべてがなかったことになる。他の環境がまったく汚れない。もっとすばらしいのは、独立した仮想環境にインストールすることによって、「Redisをインストールしたら、PostgreSQLが動かなくなった!」(例です)とかアホな事態が避けられること。また、仮想環境ひとつずつが独立したIP addressで動くので、port 80がかぶるから、こっちは8080で動かそう、とか本質でないことを考える時間も節約できる。アホなことで時間を使わない、のが生産性向上の第一歩。

なぜ、FreeBSDのJailなのか

こういうことをするのには、もちろんどんな仮想環境でもいいんだけど、FreeBSDのJailを勧めたいのは、軽くて早いから、早いというのは、特に、インストールやアンインストールにかける時間の面がでかい。人間的な手間も少ないし、実際に作成にかかる時間も少ない。慣れれば1分とかで新しい環境ができる。Jail以外の仮想環境も以前は使っていたけど、怠け者の自分には色々手がかかりすぎで使わなくなってしまった。たとえば、「ちょっと空いた時間にResqueの評価がしたくなった。でも環境の設定に1時間かかる」とかだと一気に冷めてしまう(自分は短気なので5分でも冷めるかも)。

なんか、だらだらと書いてしまったけど、このFreeBSD/Jailを使った環境は、自分のこの10年の中でも革新的なことだったので、つい熱くなってしまう。紹介してくれた同僚の某氏ありがとう!



FreeBSDで一時的にSwapを増やす

11th Jan, 2010 | freebsd vps

そんなわけで、arpnetworksのVPSでFreeBSDを使っているんだけど、メモリもSwapも少なめなので、大きめのものをコンパイルするとメモリ不足で止まってしまったりする。そういうときに一時的にswapを増やすメモ。

ファイルを作って、それをswaponするだけ。この例では180M増やしてる。

作成:

$ dd if=/dev/zero of=/tmp/swap_ext bs=1024k count=180
$ sudo mdconfig -a -t vnode -f /tmp/swap_ext -n 0
(このコマンドの後、"0"とか表示されるのが、これが次のコマンドの/dev/mdの後の数字になる)
$ sudo swapon /dev/md0

削除:

$ sudo swapoff /dev/md0
$ sudo mdconfig -d -u 0
$ sudo rm /tmp/swap_ext



ARP NetworksのVPS

9th Jan, 2010 | freebsd vps arpnetworks

ちょっと前に @nabeken さん @matsuu さんあたりが話していて良さそうなので ARP NetworksのVPS を自分も借りてみた。このブログもそのARP NetworksのVPS上で動いてる。1、2ヶ月使ってみての感想メモ。

よいところ

  • それなりに安い。一番安いコースだと月10ドル。今の為替なら1000円以下。これでroot権限とグローバルIPアドレスを持った環境が手に入るのはなかなかだと思う。使ってないけどIPv6もついてるらしい。
  • サポートが面白い。この手のサービスをよく知らないから普通なのかもしれなけど、サポートがなかなか面白い。IRCに人が常駐していているので、そこで聞けばすぐ解決する。人がいかにもプログラマっぽい感じの人で話すのも楽。話の途中でピザとか食べに行っちゃうのもさすが。普通のユーザの人もそこにいるので普通に話をするだけでも面白い。
  • カスタマイズも柔軟にできる(と思う)。まだやったことないんだけど、そこに乗ってるコース以外でも柔軟に作ってもらえそう。たとえば、「Diskだけ200GBで他は一番安いコースで」とかもやってくれそうな雰囲気。

わるいところ

  • たまにネットワークがあやしい。24時間必ず動かすサービスやりたい、とかだときついかも。(追記: その後の1ヶ月間で落ちていたのが2回で合計3分くらいでした。個人レベルなら十分ですね。)
  • 経営運用がいろいろとあやしい。なんとなく個人経営に毛が生えた感じぐらいの気がする。10年以上やっているとか書いてあるけど、明日突然「終わりました」と言われてもそんなにびっくりしない感じ。ただあんまり企業企業してないのでそれがいい面でもある。完全なる勘違いの可能性あり。

その他

  • RRDtoolでネットワーク使用量がわかるサービスがあるのだが、デフォルトだと見ることができないので、サポートにメールして設定してもらい必要がある。別途費用とかはかからない。お互い手間かかるし最初から設定しとけよって気もするんだけど。