open-vm-toolsを使ったVMware ESX Server 3.5におけるFreeBSDの利用

はてさて、前回「検証が済んだら更新しますね」などと書きつつ、かなり色々な作業で難航したまま遅くなってしまったこの件ですが、一応まとめておく事とします。検証している間、久々にsend-prしたりと、まあいろいろありました(笑)。

で、そんなこんなでVMware自体がvSphere 4.0なんて、ESX Server 3.5の後継を出してしまったりしたのですが、よく読むとこれに関しては嬉しい話が! VMware vSphere 4.0 の新機能を読むと、「互換性とサードパーティの拡張性」の特徴のところに、こんな事が書かれています。

追加ゲスト OS のサポート: ESX/ESXi 4.0 では、以前は ESX プラットフォームでサポートされていなかったゲスト OS のサポートが追加されました。サポートが追加されたゲスト OS は次のとおりです。

  • Asianux 3.0 Server
  • CentOS 4
  • Debian 4
  • Debian 5
  • FreeBSD 6 ←注目!
  • FreeBSD 7 ←注目!
  • OS/2 4、4.5
  • MS-DOS 6.22
  • Windows 3.1
  • Windows 95
  • Windows 98
  • Windows 7 (試験的サポート)
  • Windows Server 2008 R2 (試験的サポート)
  • Windows Preinstallation Environment 2.1
  • SCO OpenServer 5
  • SCO UnixWare 7
  • Solaris 8 (試験的サポート)
  • Solaris 9 (試験的サポート)

「んー、なんで元々あった FreeBSD ゲストのサポート外したのかなー?」と、 VMware方面の方々に会った時に何度かネチネチ言ったのが少しは効果あったのかしら? てなわけで、4.0では純正vmware-toolsがFreeBSDにも提供されるという事で、 せっかく3.5 with open-vm-toolsの内容を書いても無駄なノウハウになるかもしれませんが、 一応約束したので載せておくこととします。

でまあ、最近はESX Server 3.5にはFreeBSD 7.2-RELEASEを入れてます。i386版とamd64版に関しては、基本的にメモリを4G以上使うのでない限り、i386版を入れるようにしています。特に明確な根拠は出せないんですが、「パフォーマンス」タブから見たときのメモリ使用量の振る舞いがi386の方がいい気がする…。これも時と場合に寄るので、よくわからないのですが。

ということで、基本的にはi386版をベースにFreeBSD 7.2-RELEASEを突っ込む場合のノウハウを紹介します。 なお、サーバ利用を想定して、FreeBSDゲストにX11は入れません。GUI設定がないと嫌、という方は、適当にそこら辺を読み替えてください。

  1. まずは新規仮想マシンを作る。この時に、仮想マシンのOSとして、たとえ32ビット版のFreeBSD/i386を使う場合でも「その他 64ビット」(Other 64bit)を選択するのがポイント。 「その他32ビット」を選択すると、ネットワークがちょっとFreeBSDで不安定っぽい「フレキシブル」(lnc)になってしまい、簡単には変更出来ない。 64ビットを選択することで、「e1000」(em)が標準となる。
    ちなみに32ビットを選択してしまった場合、フレキシブルからe1000への変更はGUIからは不可能で、 手動でvmxファイルをデータストアからダウンロードし、テキストエディタで編集した上で再度アップロードする必要がある(手順については前回解説している)。
  2. CD-Rに7.2-RELEASE(i386版)を焼き、VMware Infrastracture Clientのドライブに突っ込んで、仮想マシンに好きな設定でインストールする(ISOイメージを使いたいなら、データストアに適当なディレクトリを掘って、そこを参照すればいい)。 ちなみに、サーバ用なら最近はDeveloper(Xなし)のportsなしで入れるのが私の最近の習慣。
    なお、ntpdを有効化してはいけない。時刻合わせはESX serverをNTPに同期した上で、Vmware Tools(ここではopen-vm-tools)に頼るべき。
  3. ネットワークが使えるようになったら、インストールしたOSをアップデートして、最新のportsを展開する。FreeBSDも一頃に比べて簡単になったなぁ…。
    # freebsd-update fetch
    # freebsd-update install
    # portsnap fetch
    # portsnap extract
    
  4. 再起動する前に、/boot/loader.confにkern.hzの設定を書き込む。VmwareのゲストとしてFreeBSDを使う場合はこの設定があった方が良いようだ(デフォルトは1000)。
    kern.hz=100
    
  5. システムを再起動する。
    # shutdown -r now
    
  6. emulators/open-vm-tools-nox11をportsからインストールする。ESX Serverで動かすのにX11サポートは不要だろ、ということでnox11。 どうしてもGUIサポートが欲しい人は代わりにemulators/open-vm-toolsをどうぞ(使った事ないので、何ができるか知らない)。
    # cd /usr/ports/emulators/open-vm-tools-nox11
    # make install clean
    
  7. /etc/rc.confにopen-vm-toolsの設定を入れる。最低限の設定はこちら。
    vmware_guest_kmod_enable="YES"
    vmware_guestd_enable="YES"
    
    ちなみに、準仮想化NICのvmxnetが使いたければ、こんな感じでvmware_guest_vmxnet_enableを有効化する。
    vmware_guest_vmxnet_enable="YES"
    
    現在、e1000にそこそこ満足して最近vmxnetを使っていないので、動くかどうか知らない。使い方は前回解説したので略。
    あと、共有フォルダのHGFS用マウントに対応するvmware_guest_vmhgfs_enableは、ESX環境では無意味。vmware_guest_vmblockって使った事ないけど、調べてみるとドラッグ&ドロップとかに使うのかな? 無視してよさそう。
  8. ここで再起動(まあ、rc.dスクリプトを走らせてもいいけど、念のためね)。vmware-guestdとカーネルモジュールが組み込まれている事を確認する。
    まずはvmware-guestdのチェック。vmtoolsdプロセスが動いている事を確認。
    % pgrep -lf vmware
    588 /usr/local/bin/vmtoolsd -c /usr/local/share/vmware-tools/tools.conf -p /usr/local/lib/open-vm-tools/plugins/vmsvc
    
    そしてカーネルモジュールのチェック。最低限、vmmemctl.koが組み込まれている事を確認。
    % kldstat
    Id Refs Address    Size     Name
     1    4 0xc0400000 9fab68   kernel
     2    1 0xc0dfb000 6a45c    acpi.ko
     3    1 0xc3397000 4000     vmmemctl.ko
    
    で、最後にVmware Infrastructure Clientの、仮想マシンの「概要」タブから、「Vmware Tools: Ok」となっていることを確認すればOK。

とりあえず、この状態でVMotionによる仮想マシン移動や、VCBによるイメージバックアップは問題なく実行出来る事を確認しました。

ところでバックアップといえば、VMware vSphere 4.0 の新機能で気になるものがいくつかあるんだけど、まずは「VMware Data Recovery」が気になるなぁ。

VMware Data Recovery は、仮想環境の保護における最初の防衛線です。VMware Data Recovery は、バックアップ ジョブを効率的に一元管理できるように、VMware vCenter Server に完全に統合されています。VMware Data Recovery では、仮想マシンのスナップショットを使用して、正確なコピーが短時間で作成されます。

正直なところ、ESX 3.5のVCBによるバックアップって、便利なのは認めるけどかなり遅いのよ…(差分が取れるのはWindowsゲストだけなので、余計遅さが気になる)。この新機能、どうなんだろう?

実は、VCBのバックアップが遅いと思っていたけど、その後実際に調べてみると、バックアップを遅くしている真犯人はARCserveだった。ARCserveを使わずに、vcbMounter.exeやvcbrestoreを使ってバックアップやリストアを行うPerlのスクリプトを自分で書いたところ、5倍ほど高速化された(バックアップ速度が約600MB/min → 約3GB/minとなった)。Windowsのゲストが多いなら差分バックアップを取れるARCserveは便利だろうけれども、そうでなければバックアップにもリストアにも余計な処理と負荷を増やすだけなので、はっきり言って不要だと思う。リストアにもVMware converterサービスなんて実は不要でvcbrestoreを使えばいい。こんなノウハウ、需要ありますかね? あれば書こうかと思うけど…。(2009/08/18 追記)

あとは、性能面で気になるのが「VMware PVSCSI(準仮想化SCSI)」と「VMXNET第3世代」。 作業面で気になるのが「vNetwork Distributed Switch」(とっても気になる!)あたりかなぁ。 ちょっと使ってみたい。

多分、PVSCSIとVMXNET 3GはVmware Toolsとの連携で提供されるだろうから、問題なくFreeBSDでも使える事になるのかな? 楽しみです。