連載
» 2011年04月01日 00時00分 公開

VMware vSphere 4.1の進化を探る(5):仮想シリアルポートとUSBパススルー (1/2)

シリアルポートやUSBデバイス利用を、サーバ仮想化環境に移行するには、一定の考慮や工夫が必要とされてきた。VMware vSphere 4.1では仮想シリアルポート機能、仮想USB機能に関する機能強化が行われた。vMoitonにも対応しており、サーバ仮想化技術の適用範囲を広げる重要な要素ともなっている。

[齋藤康成,ヴイエムウェア株式会社]

仮想シリアルポート機能の強化

 物理マシンから仮想マシンにプラットフォームを移行する際、従来の方式からの変更点を極力小さく抑えたいと考えるユーザーは多いことだろう。ネットワークアダプタやストレージデバイスなどは仮想化後も透過的に利用可能であるが、シリアルポートやUSBデバイスに依存しているマシンをVMware Infrastructure 3やVMware vSphere 4上に移行する場合は一定の考慮や工夫が必要とされてきた。

 vSphere 4.1では仮想シリアルポート機能、仮想USB機能に関するエンハンスメントが行われた。どちらもvMotionの利用と両立できる形で実装されており、仮想化の適用範囲の拡大に寄与するものである。

仮想シリアルポート機能の強化点

 現在でもシリアルポートを搭載している物理マシンは多い。x86プラットフォームではCOM1、COM2といった名称で管理されているはずだ。エンドユーザーのシリアルポートへの依存度は二極化しており、まったく必要としていないというユーザーもいれば、必須としているユーザーもいる。マシンのコンソールへのアクセスをシリアルポート経由で一本化しているというユーザーもいるだろうし、ドライバやカーネルモジュールの開発・デバッグにシリアルポートを用いているというユーザーもいることだろう。

 VMware ESXでは以前のリリースにおいても、幾通りかの仮想シリアルポートの利用形態を提供していた。物理ホストのシリアルポートを用いる方法、シリアルポートからの出力をファイルに書き出す方法、名前付きパイプを用いる方法が提供されていた。

 vSphere 4.1では上記に加えて「ネットワーク経由で仮想マシンのシリアルポートを利用する」という構成方法がサポートされた。シリアルポートで用いられる制御信号をネットワーク上で取り扱う際の規約として RFC2217 (http://www.ietf.org/rfc/rfc2217.txt) がある。vSphere 4.1では、RFC2217の方式を用いて仮想マシンのシリアルポートにアクセスすることができるようになった。なお、この機能を利用するには、ESX/ESXiホストはAdvanced、Enterprise、Enterprise Plusのいずれかのライセンスを保有している必要がある。

ネットワーク経由で仮想マシンのシリアルポートにアクセスする

 それでは実際に仮想シリアルポート機能を利用してみよう。従来型ESX(サービスコンソールありのESX)を利用している場合は、esxcfg-firewallコマンドを用いてネットワークアクセスする際のポートを事前にオープンしておく必要がある。以下の例ではポート8008に対するTCPアクセスを許可するよう設定している。

# esxcfg-firewall -o 8008,tcp,in,"vSerialVM08"

 なお、ESXi 4.1の管理ネットワークインターフェイスはファイアウォール機能を保有していないため、上記の設定は不要である。

 次に仮想マシンに仮想シリアルポートを構成する。パワーオフ状態の仮想マシンに対して「設定の編集」を選択し、「ハードウェアの追加」を実行する。デバイスタイプとして「シリアルポート」を選択すると「シリアルポートタイプ」を選択する画面が表示されるため、ここで「ネットワーク経由で接続」を選択する。

図1 シリアルポートの構成方法としてネットワークを利用する方法が利用可能になった 図1 シリアルポートの構成方法としてネットワークを利用する方法が利用可能になった

 構成ウィザードを進めると、「ネットワークバッキング」という構成項目が出現する。ここでは以下の書式でネットワークバッキングのポートURIを記述する。

telnet://<ESX-Management-Network>:<PortNumber>/

 ここで、

<ESX-Management-Network>

には ESX もしくは ESXi の管理用IPアドレスを指定する。

<PortNumber>

にはこの仮想マシンのシリアルポートにアクセスする際に用いるTCPポート番号を指定する。

図2 仮想シリアルポートにネットワーク経由でアクセスする際のポートURIを設定する 図2 仮想シリアルポートにネットワーク経由でアクセスする際のポートURIを設定する

 ハードウェアの追加ウィザードを完了すると、仮想マシンのプロパティ画面で作成中の仮想シリアルポートの情報が確認できる。「パワーオン時に接続」を有効化して構成作業を完了する。

図3  「パワーオン時に接続」を有効化後、構成作業を実行 図3  「パワーオン時に接続」を有効化後、構成作業を実行

 上記構成が行われている仮想マシンを、Advanced以上のライセンスを保有しているESXホスト上でパワーオンする。これにより、設定したTCPポート(上記の例では8080)でtelnetセッションをListenする状態になり、ネットワーク経由で仮想シリアルポートにアクセスして利用可能な状態になる。なおESXホストが適合するvSphereのライセンスを有していない場合でも、同構成作業と仮想マシンのパワーオンを行うことはできるが、パワーオンのタイミングで仮想シリアルポートとネットワークバッキングの間の接続が強制的に切断状態になるため、結果としてネットワーク経由で仮想シリアルポートを利用することはできないようになっている。

 TCPのポート番号は、仮想シリアルポートに構成したポート番号と1対1で対応する。このため、複数個の仮想マシンで本機能を利用する場合は、それぞれに対してポート番号を割り当てることになる。またファイアウォールのルールもそれに合わせて設定する必要がある。

 構成した仮想シリアルポートにはTELNETプロトコルでアクセスする。設定したTCPポートに対してTELNETクライアントから接続することで利用できる。例えばUNIX/Linux上のtelnetコマンドでは以下のようにポート番号を指定して接続する。

% telnet 10.10.10.10 8008

 Tera TermやPuttyのようなtelnet/sshクライアントからアクセスする場合も同様で、設定したTCPポートにTELNETプロトコルで接続することで利用できる。

図4 Tera Termから接続するときの例。一般的なTELNETクライアントから利用できる  図4 Tera Termから接続するときの例。一般的なTELNETクライアントから利用できる

 シリアルポートの用途は利用者によってさまざまであると思われるが、典型的な例としてはLinux系OS利用時のシリアルコンソールとしての利用があるだろう。ゲストOS側でCOM1(ttyS0)をコンソールとして利用するための設定を行えば、仮想シリアルポートをコンソールアクセスに利用することができる。ゲストOS側のTCP/IPスタックが正常に動作している状況では、マシンコンソールへのアクセスはそれ程多用されないが、保守やトラブルシューティング時の操作手段としてシリアルポートは現在もなお活用されている場面がある。vSphere 4.1では、ESXの管理ネットワークを介して仮想マシンのシリアルポートにアクセスする手段が提供されたため、仮想マシンの適用範囲がより拡大できるものと期待されている。

仮想シリアルポートとvMotionの併用

 多くの管理者は、ネットワーク経由で仮想マシンのシリアルポートにアクセスする方法を常用する場合であっても、vMotionをはじめとするさまざまな仮想マシンのメリットをそのまま享受したいと考えるはずだ。先述の方法で構成してしまうと、仮想シリアルポートへのアクセスはESXホスト、ESXiホストの管理ネットワークと固定的に結び付けられてしまうためvMotionを行うことができなくなってしまう。この問題を解決するため、サードパーティ・ベンダが提供している「仮想シリアルポートコンセントレータ」を併用する構成をとることもできるようになっている。仮想シリアルポートコンセントレータを用いると、vMotionに対して透過的に仮想シリアルポートを利用することができるようになる。

図5 仮想シリアルポートコンセントレータの利用 図5 仮想シリアルポートコンセントレータの利用

 シリアルポートコンセントレータは、複数のシリアルポートセッションを一箇所で集約し、利用者に一元的なアクセス手段を提供するための装置である。仮想マシンに特化した製品も市場には存在しており、ネットワーク経由で仮想マシンのシリアルポートと接続することができる。vSphere 4.1ではAvocentのACS v6000との接続をサポートしている。Avocent ACS v6000は仮想アプライアンスとして動作する、ソフトウェアによるシリアルポートコンセントレータである。

 Avocent ACS v6000を利用する場合は、仮想マシンのシリアルポートの構成時にその内容も含めて設定する。仮想マシンはネットワークコネクションをイニシエート(アクティブ・オープン)する側、仮想ターミナルコンセントレータはネットワークコネクションのターゲット側(パッシブ・オープンする側)となるため、ネットワークバッキングの構成で「クライアント(仮想マシンで接続を開始)」を選択しておく。ポートURIにはACSID://ttySxxという文字列(ここでxxはACS v6000側の仮想シリアルポート番号で、1〜48までの整数)を記入する。「仮想シリアルポートコンセントレータの使用」のチェックボックスを有効化し、vSPC URIは以下の書式で記述する。

telnet://<Concentrator-IP-Address>:<PortNumber>
図6 仮想ターミナルコンセントレータを用いる場合の設定例 図6 仮想ターミナルコンセントレータを用いる場合の設定例

 ESXを利用している場合は、同様にファイアウォールの構成を行っておく。上記の例では仮想ターミナルコンセントレータ上のポート8801に対して接続することになるため、以下のコマンドでポート8801に関するTCP出力トラフィックを許可するよう設定する。

# esxcfg-firewall -o 8801,tcp,out,"vSPCOUT"

 以上でvSphere側の設定は完了である。仮想ターミナルコンセントレータの設定が完了していれば、利用者は仮想ターミナルコンセントレータ経由で仮想マシンにアクセスでき、またvMotionなどの仮想マシンの移行に対して透過的に利用することができる。またAvocent ACS v6000を用いた仮想シリアルポートコンセントレータの構成手順は下記のKnowledge Baseで公開されている。

http://kb.vmware.com/kb/1022303

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。