(中の人: @shimariso)

Walbrixとはなにか

Xen上で仮想マシンを動作させることに特化した Linuxです。ハイパーバイザー特化型仮想化オペレーティングシステムの商用製品としては VMWare ESXiや XenServerが有名ですが、それらに対する Walbrixの優位点は下記の通りです。

Walbrixは Gentoo Linuxを使って構築されていますが、Gentoo Linuxとしての多くの機能は削られています(その点ではCoreOSと似ています)。その結果、xz圧縮時で百数十メガバイトというとても小さな配布サイズを実現しています。(インストールDVDイメージが4GBあるのは、ソースコードつまり /usr/portage/distfiles を収録しているためです)

インストーラの処理は、基本的にはインストールディスクに収録されている wb-$(ARCH).tar.xz をディスクに展開して、grubをセットアップするだけです。

Xenが稼働する環境が出来たところで準仮想マシンに OSをインストールするのは普通の人には出来ないので、様々なセットアップ済み準仮想化環境の tarアーカイブがあらかじめ Amazon S3上のパブリックな場所に置いてあり(仮想アプライアンスと呼んでいる)、それをダウンロードして論理ボリューム上のXFSファイルシステム上に展開するだけで目的の仮想マシンを走らせることが出来るようという工夫がしてあります。これは Amazon EC2で AMIを使用して仮想サーバを作成するのと似ていますが、Walbrixの場合は大層なイメージファイルフォーマットではなくてただの tarです。潔いですね。

WBUIについて

ただの Linuxだと普通の人が操作できないので、家電・ゲーム風スタイルな独自の UIを付けています。これをWBUIと呼んでいます。このスタイルならファミコン世代以降の人は誰でも操作できるという利点があります。インストーラもWBUIで出来ています。

WBUIのデモ(途中からBGMあり注意)

元々は、客先に置いてある弊社管理のサーバをお客様自身でシャットダウンくらいは出来るようにという考えから始まっています。電源ボタンポチ押しでacpidにシャットダウンさせてもいいんですけどね。

ほとんどの人はこれが X Window System上で動いているものと見た目で勘違いしますが、WBUIはフレームバッファ(ええ、つまり /dev/fb0ですが何か?)に直接描画処理を行うため、X Windowを必要としません。これも Walbrixをコンパクトにまとめてなおかつ幅広いハードウェアで動作出来るようにするためです。また、マウスを必要とする操作体系はマウスが動きまわるための平面を確保できる物理的な場所を要求する点でサーバ向きではないというのもあります。(代わりにトラックボール/トラックパッドを付ければ良いという話は却下です。そもそも必要無ければいいので)

WBUIはグラフィックアクセラレータに依存せず、最低でもVESA VGAが使用可能であれば画面表示が出来るように設計されています。X Windowを使う普通の Linuxだと、グラフィックチップとドライバの適合如何でまともに表示が出来なかったりハングしたりしがちです。そんな時はユーザーが自分の手で設定ファイルをいじりまわして VESA VGAにフォールバックさせてやらないとならず、このことが世界中で年間何万人もの初心者(特に日本人のような英語の読めない人々)を Linuxから遠ざけていることは明らかです。いっぽう WBUIはにはそういう問題を極力排除するための努力が盛り込まれています。見えない部分の努力なので誰にも評価されませんが・・・。

Walbrixと秋葉原

今はクラウドの時代なので普通は自分でサーバを持ったりしません。で・す・が、仮に秋葉原で売られている最新スペックのパーツを使って組み立てたマシンと同レベルの性能や容量をクラウドサービス上で確保しようとしたらどれくらいの月額費用になるか知ってますか?ええ、すごい金額です。

こちら貧乏性かつ秋葉原の近くに事務所を構えているものですから、なるべく安く最先端のパーツを揃えて自社でサーバを作ってしまうんですよ(自社利用だったりお客様の事務所に設置したり)。幸い、日本はNTTが隠し持っていた光ファイバがインターネットに開放されたことにより大変格安に100Mbpsの回線を維持出来る恵まれた環境にもありますので外に見せるサーバの運用も割とできてしまいます。

ただ、サーバを作るたびに汎用の Linuxディストリをインストールして、あーでもないこーでもないと互換性の問題に悩むのは嫌なんですよね。これが Walbrixみたいな自社ディストリを開発・維持している理由のひとつだということをご説明しましょう。

Linuxカーネルそのものは、コミュニティの意思もあれば企業の意思もあり、新しいハードウェアにかなり積極的に対応しています(個人的に、Linuxがそういう風にできているのはコミュニティの力もさることながら営利企業までをも利害関係に巻き込むことに成功していることが理由として上がると思っています)。

PCパーツのメーカーは、コストの関係上どうしても Windowsでだけテストして製品を市場に出さざるを得ません。すると、Windowsではたまたま動くけど実際にはこれバグってるよねっていうハードウェアが市場にはよく出てくるのですが、Linuxコミュニティはそういうハードウェアのバグを回避するための努力もよくやっています(ファックファック言いながら)。

何が言いたいかというと、秋葉原で売っている最新型のコストパフォーマンスだけはやたら高いイカしたバグ入りパーツを使いたければ Linuxカーネルも最新でなければいけないということです。しかし汎用の Linuxディストリビューションは、互換性やらなにやらの観点からどうしても常に最新の Linuxカーネルをユーザーに提供するわけにはいきません。あわれ最新のハードウェアをあなたの Ubuntuちゃんが認識してくれないとなれば、最悪の場合最新の Linuxカーネルをソースコードからビルドし、インストールし、起動しねえと嘆いて configを見直す不毛なスパイラルが待っているわけです。ていうか一般ユーザーだったら認識せんわーで終了ですな。

趣味や研究でやってるならまだしも、秋葉原からその日に仕入れた旬の材料で高性能なサーバを格安でお作りしてお客様へ提供するシマーポーシャ弊社にとってあまりこういうコストはウェルカムではありません。Walbrixという名前まで付けて(しまいには社名にまでして)独自の OSを作って最新カーネルの取り込みを続けている背景にある理由のひとつです。

あと汎用のLinuxは汎用だけあってインストールに何十分もかかりますが Walbrixのように仮想サーバ運用にだけ特化したOSなら5分とかからないし、知識が要らないのでバイトにも任せられるとか他にも色々ありますがこのへんで。

仮想マシンを走らせることに特化したOSという風に Walbrixを紹介した冒頭で、よくご存知な方なら VMWare ESXiや XenServerのようなハイパーバイザ製品を想像したかと思います。Walbrixも機能の多さや想定用途の広さは全く違えどアーキテクチャ的にはそういうカテゴリの製品といえます。ただ、Walbrixの方がずっと優れているのは、それらの製品よりもたくさんの(新しい|古い)ハードウェアで動作することです。むろんそれは Linuxカーネルデベロッパたちの功績であって、弊社は単に genkernelしているだけですけども。

ちなみに各仮想マシンの実行にはそうとう枯れきった安定版の Linuxカーネル(これを書いている時点では 3.0.x)を使ってるので(※)、新しいハードウェアに対応するために新しいカーネルを使ったらサービスが起動できなくなったっていう事件は起こらないようになってます。そこらへんは技術情報: Walbrixのバージョンについてで図解しています。

※ しばらく2.6.32に stickしてたんだけど、domU側から論理ボリュームへの同期アクセスを保証する部分がうまくいってなかったみたいで XFSがボロボロ壊れていくとう恐ろしい現象がおこり、這々の体で 3.0に逃げたのも今は良い思い出・・・なわけねーよ

カーネルビルド職人

ここでカーネルビルド職人のSさん(37歳、住所不定)にインタビューしてみましょう。

カーネルビルド職人の朝は早い
「まぁ好きではじめた仕事ですから」
最近は ndiswrapperが新しいカーネルについてこないと愚痴をこぼした
まず、ChangeLogの入念なチェックから始まる。
「やっぱり一番うれしいのは redmineからのテスト通過の手紙ね、この仕事やっててよかったなと」
「毎回毎回 stagingの configが違う 機械では出来ない」

手作りサーバの信頼性とか

そんなもん、ないです(きっぱり)。

お客様がメーカー品のサーバ機を導入出来る予算をお持ちで、かつそれにこだわるのであればウチもそれをベースに提案しますよ。

ただですね、デルやHPから買ったぐぉんぐぉんやかましいサーバが絶対に壊れないかっていうともちろんそんなことはありません。絶対いつか壊れます。メーカー製のごっついサーバがすぐに壊れることもあれば、手作りサーバが何年も正常に稼働することもあるわけです。したがって、壊れにくいかどうかもさることながらそれより大事な事は

なんですね。(1分落ちたらン100万の機会損失になるようなECサービスのサーバについて話をしてるわけではないので悪しからず)

1番目に関して。「このサーバ機はRAIDがあるから安心、バックアップは要らないよ」みたいな方は結構いらっしゃいます。それでひどい目に合えば間違いに気付くでしょうが、弊社としてはお客様にひどい目に合ってほしいとは思っていませんので、むしろRAIDのほうを無しにしてでもバックアップの方をきちんと取るようにお勧めしています(そして、保守サービスをご契約いただくことによりきちんとバックアップが取れているかどうか遠隔からチェックさせていただきます)。

もちろん「元データは他の場所にあるから Availabilityのほうが大事」という状況では話は別ですよ。

2番目についてですけれども、巷ですぐに手に入るパーツで復旧できるというのは結構大事だったりします。ハードディスクくらいなら、前面からホットプラグ可能な筐体であれば(弊社がお客様に納品するサーバは必ずそういう形にしています)お客様自身でも交換できますし、マザーボードの故障であっても弊社の誰か(つーか俺だよ)が事務所のストックや秋葉原から部品を集めて同程度以上のマシンをすぐに作って送ります(この時、Walbrixならすぐに動くのでカーネルビルド職人の仕事が活きます)。同じパーツの在庫が無くて違う見た目になってしまうかもしれませんが、お客様的には、早く仕事に復帰できればそれでいいという方が大半だと思います。

さらに2番目に関連しますが、ハードディスクの故障・交換が発生した時にはバックアップから復旧する作業が必要です。これは Walbrixへ弊社からリモートログインして行うことができます(もちろん、あらかじめそのように設定された Walbrix以外ではこれはできません)。弊社とのリモート接続についてはまたのちほど。

ところで、手作りでなくてもスペックにこだわらなければお買い得なサーバが結構あります。おすすめ商品紹介 »

KVMがある以上Xenはオワコンじゃね?

ええい完全仮想化と準仮想化の違いもわからぬ小童が。お前にはこのエラーが出る呪いをかけてやる。

kvm: no hardware support

とはいえ Xenや準仮想化は Linusにとっては面白く無いアーキテクチャだと思うので(Linuxをただのデバイスドライバ集兼POSIX互換レイヤとしての地位に押し下げてしまう構図になるため)、いつディスコンにされてもおかしくないと個人的には思ってます。そういえば Mirage OSみたいなPOSIXへの反逆活動も局所的ながら始まっていますが、大衆の理解を得られそうにはあまりない気がします。

Walbrixの起こりと、看板としての役割

このセクションでは本来(ビジネス的な観点から)外部に公開するような話ではないことをあえて書きます。というのも、どうせここを読んでいるような人は大抵知り合いか、この製品の顧客にはなり得ない同業者の類いだからです(身もふたもないことを)。とはいえシステム自体をライセンス供与してほしいなどの商談につながるのは大歓迎です。

なんで作ったん

弊社の事業のひとつとして、顧客がオンプレミス(イントラ)で利用するためのサービスを開発(又はあり物で構築)してサーバ本体ごとお客様が実際に利用する場所へ提供・設置し、月額保守料金を頂くというのがあります。所帯じみた話をすると、月額でコンスタントに頂ける物があるのと無いのとでは会社の基礎体力に違いが出ますので金額の多寡はともかくとしても重要な事業です。

しかし所謂クラウドと違いオンプレミスのシステムは物理的なサーバが客先に存在するため、システムの稼働保証や更新、障害発生時などの対応コストが頭の痛い問題でした。特に自分本人が日本を離れる機会が増えると、必要になった時には誰か代わりの者をアサインしなければならないためコストは跳ね上がります。

そんな状況で、顧客の所に(また、自分の所にも)安心して置いておけるオンプレミス・サーバの条件というものを考えた結果、下記のような要件を満たすための OS開発に着手しました。

長くなりますがそれぞれ解説します。最初のひとつ。

システムの構築・保守作業が完全にネットワーク経由でリモートから可能なこと

サーバールームでの立ち作業は結構苦痛です。にもかかわらず従来は OSが起動していなければリモートログインも出来ないため OS自体のインストール作業をリモートで行うことは出来ませんでした。それに、システムの稼働開始後も何らかの理由で OSをクラッシュさせてしまうと リモートからのログインができなくなるため現地作業なしには復旧不可能でした。

が、仮想化技術を採用することで状況は変わりました。15分で終わる最低限の物理的なセットアップ(後述)さえ済んでいれば、仮想マシン上にシステムを構築する作業は完全にリモートで出来る上、そのOSがクラッシュしようがどうしようが物理レベルのシステムは無傷なためリモート管理に支障がなく、ほとんどの場合はサーバの設置場所に訪問せずとも復旧作業を行えるのです。

また Xenの準仮想マシンはKVM等による完全仮想マシンと違ってフレームバッファを必要とせず、テキストベースの仮想コンソールだけでシステムの起動プロセスを最初からトレース出来るため、ssh経由でのリモート管理には特に都合が良くなっています。

ちなみに Xenの前には OpenVZを検証していたこともありますが、これはどちらかというと FreeBSDの jailに近いもので、同一カーネルの元でゾーニングによって複数のシステムを稼働させる仕組みのためクラッシュトレラントという面で Xenに及びませんでした。

ふたつめ。

顧客側のネットワーク機器に設定を追加することなく、ファイアウォールを越えて弊社側からアクセス出来ること

先に述べたように、オンプレミスなシステムは当たり前ですが通常プライベートネットワーク内に設置されます。これにどうしてもインターネット経由でアクセスしたければ固定のグローバルIPアドレスが原則必要ですが、多くの顧客はそんなもの持っていませんし、持っていたとしても外部からのアクセスを内部に中継するにはルーターなど通信機器にそれなりの設定が必要です(第一、内部利用のためのシステムをリモート管理のためだけに直接外部に晒すのはナンセンスです)。

顧客側通信機器の設定を変更させることなく内部のシステムに弊社から「のみ」アクセスできるようにするには、顧客内部側から弊社側に向けて何らかの「紐」を通させる必要がありました。これが Walbrixにおける「中央サーバへの接続」であり、そのためには OpenVPNが使われており、シリアルナンバーとされているものは OpenVPNの証明書に記載されるコモンネームです(システムのホスト名としても使われます)。これにより顧客のシステムを外に晒すことなく弊社からのリモート管理を行うことが可能になりました。

もっとも、OpenVPNによる内部からの「紐通し」がそのまま通用するのは顧客側で市販のブロードバンドルーターをそのまま使用したごく単純なインターネット接続が行われている場合のみであり、そうでない場合はそれぞれの技術的・コンプライアンス的要件に合った個別の対応が必要です。

3番目。

必要な場合には顧客自身の手で少なくとも上記の条件を満たす状態までセットアップを行えるだけの対話機能を持つこと。システムの電源断も顧客自身が必要な時に迷わず行えること。

要するに物理レベルのOSインストールと、OpenVPN(とは画面上では呼びませんが)の設定と、システム停止の機能を誰でもわかる平易な用語と操作体系で提供するということです。何か大変なことがあってシステムをまっさらから再構築することになっても、お客様自身の手で最低限弊社からのリモートログインさえ可能にして頂ければその後の事はこちらで引き受けられます。それと、オンプレミスのサーバはお客様の敷地に設置するわけなので「勝手に電源を切るな」という訳にもいきません。顧客が切りたいときに切れるべきです。

自分もオタクの端くれながら言わせてもらえば、一般的に技術オタクという人種はこういうものの提供が一番できません。技術の本質を直視するあまりオタクでない人の視点で物を考えることが出来ない、又は技術の本質ではないことにそもそも時間を割きたくない、価値を見いださないからです。えてしてコミュニティベースのオープンソースプロダクトが人間を迷わせずナビゲートするためのユーザーインターフェイスを持たなかったり、あってもぞんざいだったりするのはそういう理由だと思います。尤も、だからこそ商用製品を開発するソフトウェアメーカーがそこを補完することで食べていけるわけですが。

ともあれ自分は、他の技術オタクが出来なさそうなことを敢えてやることは無駄にならないはずだと考えたのでそれなりに手をかけてこの部分を開発しました。結果として実際にはよほどのことがない限り顧客に自分でサーバをセットアップしてもらうことはありませんが、顧客自身ですら出来るようなことは弊社のアルバイトでも当然出来るわけなので、客先へサーバを納入する際に行う最初のセットアップは代表たる自分がわざわざ時間を割いて行わなくともアルバイトに任せられるようになりました。

また実はWalbrixには(翻訳の品質はともかく)英語版も非公開ながら存在するので、弊社インド支社のスタッフに頼めばあっという間に現地でセットアップして東京本社からアクセス出来るようにしてくれます。あまりにも早くできるので「本当に出来たの?」と聞いてしまうこともありましたがちゃんと出来てました。頼もしい限りです。

予告どおり長くなりましたが、とにかくそういう必要に迫られて出来たのが whitebase というコードネームで開発された Walbrixの原型となるOSでした。人にはよく「Walbrixって、つまり何なのこれ?」と聞かれますが、とてもこんな長さの話をするわけにはいかないので(そこまで興味もないだろうし)、理解されることを放棄して適当に端折って答えていたのですが、やっと文章にまとめました。まとめたところで、やはり理解出来る人はそれなりの経験と知識を持った人に限られるでしょうが・・・。

会社の看板として

せっかく手間暇かけて作ったものなので、プロダクトとして世に晒すことにしました。ところで、弊社のある神田小川町には「顔のワイシャツ」という老舗のワイシャツ屋さんがあって、デカデカと顔の描かれた看板が掲げられているのですが、別に顔のプリントされたシャツを売ってるわけではなく(そんなもの売ってたとしても誰が買うのさ)、普通のオーダーメイドなワイシャツ屋さんです。けどあのインパクトの強いでっかい顔の看板のおかげで小川町といえば皆に思い出してもらえるのです。何が言いたいかっていうと、商売は皆に思い出してもらえてなんぼということです。IT屋のように技術力の差が素人目にわかりにくいサービス業はどんなに技術で頑張ろうが没個性になりがちで、何か目印が無いとすぐに忘れられてしまいます。よって顔のワイシャツほどのインパクトは到底ないにしろ、看板になるものを世に向けて掲げることに損はあるまいと。

しかしこの whitebase(仮称)、掲げようにも

_人人人人人人人人人人人人人人_
> 弊社がリモート管理出来る OSです <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

では何の公共性もありません。簡単に言えば誰得です。むしろ敬遠されかねません(利用者が中央サーバへの接続設定とssh公開鍵の設置をしない限り弊社から勝手に Walbrixへアクセスすることはできませんが、上記のような説明だと当然誤解されますね※)。なので、あらかじめ用意された各種用途向け仮想マシンのイメージをリストから選んで簡単にダウンロードして利用できるという仕組み(つまり仮想アプライアンスです。その概念自体は前からあるものですが)を考えて実装しました。簡単に言えば後付けです。ガンダムUCかよってくらい。

※それに whitebase=木馬だからね

後付けとはいえ、それなりに意義のある仕組みではあります。PHPならまだともかく rubyや javaで書かれた、コマンドでインストールして viで設定しなければならない、ましてやバックエンドにデータベースを必要とするような本格的なアプリケーションを、普通の人は試行錯誤なしには決して運用開始まで持って行けないところを、あっという間に提供してしまうわけですから。用途さえ合えばですけどね。

仮想マシンイメージをダウンロードさせるプラットフォームという意味では Vagrantの開発が(githubの履歴を見る限り)同じ頃から始まっていたようです。あちらは開発者専用のツールですけれど。

こうして建前上一定の公共性を与えられた whitebaseは W と Bを残して Walbrixという名前に改められ世に出る運びとなったわけです。またその後、弊社の社名自体もそれにちなんで変更となります。

もし Walbrixのインストールベースが相当な台数に及べば、オープンソースアプリケーションの無料配布に限らず有償ライセンスのアプリケーションをオンライン販売するためのプラットフォーム(iPhoneでいえば App Storeですな)として機能させることも理屈上は出来るのでしょう。ま、そんな幼稚なアイディアを本気で可能だと思って語るような人を自分は信用しませんけどね。

To be continued...

ネタが出次第追記。(最終更新 2013-10-12)