3月 242013
 

VMwareESXi 5.1 の環境で FreeBSD/adm64 9.1-RELEASE がゲスト OS として動作しています。 PCI 接続の内蔵 NIC がもう無いので USB NIC を VMwareESXi が動作している物理サーバに接続したんですけども。

USB NIC ってのはすごいですね。 VMware vSphere Client から FreeBSD に USB デバイスを割り当てたら FreeBSD 側のドライバで NIC を認識しました。

以下のキャプチャは VMware vSphere Client の「仮想マシンの設定の編集」画面から USB デバイスを FreeBSD に追加して上げた状態です。

VMwareESXi_USB_NIC_add_1.JPG

この段階で FreeBSD 側は USB NIC を axe0 として認識して ue0 に割り当てました。

ugen1.2:  at usbus1
axe0:  on usbus1
miibus0:  on axe0
ukphy0:  PHY 16 on miibus0
ukphy0:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto, auto-flow
ue0:  on axe0
ue0: Ethernet address: 00:0e:c6:f0:24:zz
ue0: link state changed to DOWN

 
VMware ESXi で利用する NIC って vSwitch 経由で FreeBSD 的には em0 などに割り当てるという認識があるのですが VMwareESXi もゲスト OS である FreeBSD も起動している状態においては VMware ESXi を経由せずにサクっと FreeBSD 側で認識してしまった。ということですね。

$ ifconfig -a | grep -v "^\s"
em0: flags=8843 metric 0 mtu 1500
lo0: flags=8049 metric 0 mtu 16384
vmx3f0: flags=8843 metric 0 mtu 1500
ue0: flags=8802 metric 0 mtu 1500

 
こんな感じで、em0 と vmx3f0 は vSwitch 経由、 ue0 はダイレクトに接続されている FreeBSD ネーテブなドライバで認識されている NIC ということになります。

VMwareESXi は設定で NIC 一個を vSwitch を介さずにゲスト OS に渡す設定ができるんだっけかな?やったことが無いので解らないのですが。けど、 USB な NIC を利用するとサクっとそれができるようになります;-)。

しかし、このネタって既に一般常識? f(^^;;。

2月 022013
 

VMware ESXi が色々動作して来たのでそれではいよいよ FreeBSD をインストールしましょう。

OS インストール用の iso イメージは以前書いた通り「データストア ブラウザ」を利用して VMware ESXi にアップロードします。

「新規仮想マシンの作成」 からゲスト OS をを作成します。
僕の場合、40GByte の HDD を持つ FreeBSD-default という仮想マシンを作成しました。まず先にここに FreeBSD/amd64 9.1-RELEASE をインストールして環境を整えて必要な ports をインストールしてからタネにしました。

あとは「データストア ブラウザ」からファイルをコピーして新たな FreeBSD をボコボコ量産していきました;-)。

以下はキャプチャですが、左側のフレームでフォルダを作成し、 FreeBSD-default ディレクトリ中の log ファイル以外のデータを新規に作成したディレクトリにコピーしてあげます。



クリックすると大きくなります。

vmdk などのファイル名は仕様により変更できないので、タネのファイル名はいかにも “共通” っぽいファイル名のほうが良いと思います。

新しいディレクトにコピーが完了したら vmx 拡張子のファイルを選択し右クリックで「インベントリへ追加」を選択します。そーすると VMware vSphere Client のインベントリに新しい仮想マシンが登録されます。一番最初の起動時のみコピーしたのか? 移動したのか? と聞かれるので「コピーした。」を選択し、起動すれば良いですね。

起動前に「仮想マシンの設定の編集」画面を開いて色々設定すると良いかもしれません。僕は「イーサネットアダプタ」を追加しています。特にアダプタタイプに “VMXNET 3” を指定したものを一個追加しています。そして、全ての仮想マシンに “VMXNET 3” 用の仮想スイッチを追加し、裏 LAN 用に利用しています。



クリックすると大きくなります。

FreeBSD のインストールが完了したら VMware Tools をインストールしましょう。 freebsd.iso というのがちゃんと用意されているので「CD/DVD ドライブ 1」にそれをマウントします。 VMware ESXi 的には /usr/lib/vmware/isoimages/ の中に色々な OS 用の VMware Tools が用意されています。

まぁ、このディレクトリから freebsd.iso を持ってきて mdconfig を利用して mount して vmware-freebsd-tools.tar.gz を抜き出しても全然問題は無いです;-)。

tar.gz ファイルを展開すると vmware-tools-distrib/ の中に vmware-install.pl というスクリプトがあるのでこれを実行するとインストールが完了します。

# mdconfig -a -t vnode -f freebsd.iso -u 0
# mount_cd9660 /dev/md0 /mnt/
# cd /mnt/
# cp vmware-freebsd-tools.tar.gz /tmp/
# cd /tmp/
# tar xvzfp vmware-freebsd-tools.tar.gz
# cd vmware-tools-distrib/
# ls
FILES           doc/            lib/
INSTALL@        etc/            vmware-install.pl@
bin/            installer/
# ./vmware-install.pl
A previous installation of VMware Tools has been detected.
:

 
僕は FreeBSD/amd64 9.1-RELEASE をインストールしていますが、VMware tools をインストールするには ports から misc/compat6x をインストールする必要があります。あと、 perl も必須になるので lang/perl* の好きなバージョンをインストールしてください。僕の場合は perl-5.16.2 をインストールしました。

VMware Tools のインストールが完了するとメモリ周りが速くなったりするそうです。あと、イーサネットアダプタに “VMXNET 3” を追加したので vmx3f0 というインターフェースが生えてきます。こいつは media: Ethernet 10Gbase-T でリンクアップします;-)。

実際に仮想マシン同士で em0 と vmx3f0 でデータ転送の比較をしてみたのですが em0 は大体 430Mbps 、 vmx3f0 は 440Mbps 程度の転送速度でした。 10Gbps は出ないですねf(^^;;。

VMware Tools をインストールしたら kldstat とか叩いてみると良いかもしれないです。色々 VMware のカーネルモジュールがロードされるようになります。

これで VMware ESXi 対応の FreeBSD の環境が整いました。 jail も良いんだけど OS 単体の FreeBSD がボコボコ作れる状態になりました。思う存分 FreeBSD で遊べそうです;-)。

1月 282013
 

VMware ESXi に対するアクセスは Windows アプリで、 VMware vSphere Client は ESXi のバージョンに引っ張られてそのバージョンに対応したものをインストールしなければならない。と、いうのは以前に書いた通りです。

そもそも、普段から Windows OS を常用しとない人にとって VMware vSphere Client を利用するは非常に億劫です。どーせなら VMware ESXi に ssh ログインしてそこから色々やりたいですね。せっかくだからそーしてしまいましょう。

と、いうことで

1. VMware ESXi に ssh ログイン
VMware vSphere Client からサーバの設定で ssh を有効にします。「構成」タブの左側のメニューの「ソフトウェア」の中の [セキュリティプロファイル] を指定すると右側に表示されるのでプロパティから SSHを 指定し「実行中」にします。
すると root で VMware ESXi に ssh できるようになります。せっかくなのでユーザ登録時に一般ユーザアカウントも作成してしまいましょう。「ローカルユーザ及びグループ」でとりあえずアカウントを作成します。でもってすかさず ssh っ!!

ssh ログインできるようになりましたか?

せっかくなのでホームディレクトリを作成してしまえっ!! ってんで /etc/passwd にホームディレクトリを書き込んであげると次回以降、自分のホームディレクトリにログインできるようになります。ただ、ディレクトリ内の権限は root 権限で作成されるのでイマイチ意味が無いような気がしますが。けど、そこに色々なファイルが置けるのでそれはそれで良いかー;-)。

/etc/group の root グループに一般ユーザのユーザ名を登録してもユーザ権限で動作してくれないようですね。ま。いっか。でもせっかくなので公開鍵/秘密鍵のペアでログインできるようにしましょう。 sshd の設定ファイルは /etc/ssh/sshd_config なのでそのファイルを見ると以下の行が見えます。

AuthorizedKeysFile /etc/ssh/keys-%u/authorized_keys

 
なるほどね。公開鍵は /etc/ssh/keys-takachan/authorized_keys として置けば良いわけね。これでパスフレーズで ssh ログインできるようになります。

2. syslog の転送
VMware ESXi が出力する syslog って美しくないんだけど、まぁ syslog サーバに転送する分には特に問題ないので転送してしまいましょう。

まず、 syslog を受信するのは FreeBSD と想定した場合に /etc/rc.conf の設定は以下のようにして syslogd を再起動します。

syslogd_enable="YES"
#syslogd_flags="-a 192.168.1.0/24:*"
syslogd_flags="-a *:*"

 
コメントアウトしている行は 192.168.1.0/24 のホストからのみ syslog を受信する。って設定です。 *:* ってのは全てからの syslog を受信する。って設定です。こーすると IPv4/IPv6 の syslog が受信できるようになります。 IPv4 と IPv6 のネットワークを同時に指定する方法が解らなかったので・・。

Linux(CentOS) の syslog の受信は /etc/sysconfig/syslog の SYSLOGD_OPTIONS に -r を付けて再起動。ってのは皆さん知ってますよね? 😉

で、続いて VMware ESXi の syslog の転送方法ですが、 /etc/vmsyslog.conf をごっそりと手で直してましいましょう;-)。

[DEFAULT]
size = 1024
logdir_unique = false
loghost = udp://192.168.1.128
rotate = 8
logdir = 
[vmsyslog] loghost = udp://192.168.1.128 rotate = 8 size = 1024

 
[DEFAULT] と [vmsyslog] に loghost = udp://192.168.1.128 を追加します。で、再起動します。簡単ですねぇ。って・・。こんなことばっかり書いていると怒られそうなのでちゃんとコマンド打ってみましょうかf(^^;;。

VMware ESXi 5.1 では esxcli というコマンドを利用します。

# esxcli system syslog config get
Local Log Output: 
Local Logging Default Rotation Size: 1024
Local Logging Default Rotations: 8
Log To Unique Subdirectory: false
#
# esxcli system syslog config set --loghost="udp://192.168.1.128"
#
# esxcli system syslog reload
#

 
config get オプションで表示。 config set オプションに付属のパラメータで追加です。まぁ、設定ファイルを手で直してしまったほうが早いかf(^^;;。リブートしても良いですが、 syslog reload オプションで syslogd を再起動します。

で、VMware ESXi のファイアーウォールを確認し syslog が false であれば true にしてあげます。

# esxcli network firewall ruleset list | grep syslog
syslog                 false
#
# esxcli network firewall ruleset set --ruleset-id=syslog --enabled=true
# esxcli network firewall ruleset list | grep syslog
syslog                 true
#

 
あとは logger test とか打って、syslog サーバに転送されたか確認します。

3. 仮想マシンのコントロール
これは説明なしです。以下のコマンドで色々できます。一覧表です。

1). 仮想マシンの一覧表示

# vim-cmd vmsvc/getallvms

 
一覧を表示しますが、一番左に表示されている数値が VMID になります。以降のコマンド投入時には VMID を利用します。

2). 仮想マシンの起動

# vim-cmd vmsvc/power.on VMID

 
3). 仮想マシンの停止

# vim-cmd vmsvc/power.off VMID

 
「仮想マシンの停止」は多分、 shutdown 打ってくれないです。バチっと電源断だと思います。なので起動時には多分 fsck が走ると思います。けどもまぁ、しょーがないよねぇ・・。

4). 仮想マシンの再起動

# vim-cmd vmsvc/power.reboot VMID

 
こっちは ACPI シャットダウンが走るのかなぁ? だとすると FreeBSD の場合は ACPI S5 ステートが走るので shutdown はしてくれると思いますが、確認はしていません。

5).仮想マシンのサスペンド

# vim-cmd vmsvc/power.suspend VMID

 

4.CIM のことほんの少し
まぁ、こんな感じで。と、いうことで今回もこってり? と VMware ESXi を書いてみました。
snmpd は前回書いたし、あとは CIM かなぁ。 ports の net-mgmt/sblim-wbemcli をインストールして以下のコマンド叩けば良いです。

$ wbemcli ecn -nl -noverify 'https://root@192.168.1.250:5989/root/cimv2'

 
ドドドと一覧表示してくれるのであとは個別の値を取得すればより詳細情報が取得できます。

ここでパスワード入力が回避できるように ssh のパスフレーズ化を試みたのだけど、考えてみたら ssh ではなく https でのアクセスだったので全く意味無かった。と、いうか・・f(^^;;。

と、いうことでいい加減次回は ゲスト OS としての FreeBSD のことについて書いて行きましょう;-)。

1月 072013
 

VMWare ESXi 5.1 を導入中です。今回は環境設定。ってんでしょうかねぇ。

それにしても外部ストレージが作成できたんだけど ISO イメージとかどうやって VMWare ESXi にアップロードするのー? ファイルマネージャとかないの? とか思って色々探したのですが、いやー、わかりにくいところにありますね。

プロビジョニングの VMkernel の [構成] タブの画面で右側のメニューの「ハードウェア」の「ストレージ」を選択します。すると「データストア」に表示されているストレージを選択して左クリックするとプルダウンメニューが現れます。ここから「データストアの参照」を選択すると「データストア ブラウザ」というファイルマネージャのようなものが起動します。

以下はキャプチャです。



クリックすると大きくなります。

画面下側のがデータストレージ内を見渡すことができる「データストア ブラウザ」です。これが表示されると isos とかいうディレクトリを作成できて、そこに ISO イメージなどをアップロードできます。また、作成した ゲスト OS をコピーしたりできるようになります。僕は FreeBSD-default というのを作成し、それをガシガシコピーして三つの FreeBSD をインストールしました。

次に VMkernel (あ。”VMkernel” とは VMWareESXi のハイパーバイザーのことです) の設定を 2,3 行います。上記と同じく [構成] タブの今度は「ソフトウェア」メニューの「セキュリティ プロファイル」を選択します。「サービス」のプロパティで色々起動します。まぁ、 sshd は起動しておいたほうが良いでしょうなぁ;-)。



クリックすると大きくなります。

ssh は起動するんだけど、snmpd がエラーになって起動しない。しょーがないので手動で起動できるようにしましょう。ってか、ハイパーバイザー(VMkernel のことね)に ssh でログインしたら色々中見られるし、大体のことは解ります;-)。snmpd を起動するためには /etc/init.d/snmpd で良いみたいですね。すると snmpd.conf ってのはどこにあるのだ? とか思ったら cat /etc/init.d/snmpd すると解ります。 /etc/vmware/snmp.xml というファイルのようです。このファイルを vi で編集して起動スクリプトのオプションを start として実行してあげれば起動します。

/etc/vmware/snmp.xml ファイルの変更箇所ですが、 以下の二点ですかね。

・<enable> タグに挟まれた文字列を true にします。
・<communities/> タグ を <communities>Public</communities> に変更します。

まぁ、二個目のヤツは communitiey 名なので自分の好きなのにすると良いかと思いますが。

以下は僕の設定です。

<?xml version="1.0"?>
<config>
    <snmpSettings>
        <enable>true</enable>
        <port>161</port>
        <EnvEventSource>indications</EnvEventSource>
        <loglevel>info</loglevel>
        <communities>Public</communities>
        <targets/>
        <engineid>00000063000000a1c0a8011c</engineid>
    </snmpSettings>
</config>

 
当該の snmp.xml ファイルは実は改行コードがないみたいですね。 init.d/snmpd を確認してみると多分一行で書いてある必要があると思います。

これで強引に snmpd も動作するようになりました。後は外部から snmpwalk 叩いて mib を見れば良いと思います。

さてと。次回はいよいよ FreeBSD のインストールだぜー;-)。

1月 062013
 

新年明けましておめでとうございます。今年も宜しくお願いします。今年の第一回目です。

それにしてもほぼ一年前ですね。自宅のサーバを新調したのは。PRIMERGY MX130 S2 ですが CPU は 6Core 、 メモリは 16GB あったので FreeBSD をインストールして Jail を四個、 VirtualBox で FreeBSD 一個に Windows OS を走らせていたのですが、そろそろ VMWare ESXi にでもするかねぇ。と、思い立ち 2T の HDD を買ってきてマシン自体を仮想化することにしました。

いやね。Jail も良いんだけど、親 FreeBSD のバージョンや ports のバージョンを上げると Jail 子がそれに引っ張られて動作しなくなったりするのがイヤになってきて・・。レガシーな環境は Jail 向きではないな。と、痛感しているのと、 FreeBSD 上で VirtualBox 動かすなら VMware ESXi でも良いかー。となり。

今回新しく VMWare ESXi というカテゴリを作成したので今後、このネタがあるごとにこのエントリに追加して行きたいと思います。今回はその第一回目です。

正月休みの最初の日に 2TB の HDD と PQI の 4GB の USB メモリを買ってきました。僕の家にはデスクトップ用の PRIMERGY MX130 S2 と、サーバ用の PRIMERGY MX130 S2 の二台があるので、とりあえずデスクトップ用の HDD を引っこ抜いて 2TB の HDD を装着。でもって USB メモリを接続し 4GB の USB メモリに VMWare ESXi 5.1 をインストールしました。

VMWare ESXi 5.1 のインストールは簡単でサクっと USB メモリにインストールできます。BIOS でブートする順番を変更し USB メモリがブートするように設定すればいとも簡単に VMKernel が起動します。あとはネットワークの設定を行えばとりあえず準備完了。

続いて VMKernel にアクセスするための Windows アプリを他のマシンにインストールします。VMWare vSphere Client 5.1 をインストールします。

ちなみに、 VMWare ESXi 5.0 に VMWare vSphere Client 5.1 でアクセスすると VMWare vSphere Client 5.0 のクライアントを勝手にダウンロードして置き換えようとします。ESXi と Client は同一のバージョンである必要があります。
ってことは、 複数台の VMWare ESXi が動作していたとして 5.0 と 5.1 が混在する環境ではクライアントアプリ用に二台の Windows が必要になるという、恐ろしい状態になります。

「はまり道そのいち」ですかね。VMWare ESXi を複数台用意する場合には全て同じバージョンを利用することをお勧めします。

続いて「はまり道そのに」です。
VMWare vSphere Client 5.1 からいよいよ VMKernel にアクセスし、HDD の追加をします。 ESXi 自体は 4GB の USB からブートしているので新規の 2TB の HDD はまるまるデータストレージとして利用します。
なんか、ダウンロードした VMWare vSphere Client 5.1 はビルド番号によっては日本語環境ではストレージ追加時に「vSphere Clientで内部エラーが発生しました。詳細:入力文字列の形式が正しくありません。」と言われて追加できません。僕がダウンロードしたクライアントは VMware-viclient-all-5.1.0-786111.exe になるんですけども。 このビルド番号のバージョンでは日本語環境ではストレージが追加できません。

DOS のプロンプトからクライアントアプリケーションを起動してオプションに -locale en_US を付加して起動します。英語表示にすると無事に HDD を ESXi のストレージとして認識できるようになります。

ストレージが付いたところで第一回目はここまでにしておきましょうか。次回は 2TB のストレージに FreeBSD をインストールすることにしましょう;-)。