この状況は現在も変わりませんが、YaST 経由で更新された Microsoft Hyper-V drivers (hyper-v-kmp-*) の新しいバージョンで、シャットダウン連携が機能することを確認しました。
SLES 11 SP1 に含まれる GPLv2 版の Hyper-V ゲスト コンポーネント Microsoft Hyper-V drivers (hyper-v-kmp-*) は、初期バージョンが 0_2.6.32.12_0.7-0.6.7 で、hv_vmbus、hv_netvsc、hv_storvsc、hv_blkvsc の 4 つのモジュールが提供されました。それぞれ、Linux ICs v2.0 の vmbus、netvsc、storvsc、blkvsc 相当になります。その後、Microsoft Hyper-V drivers (hyper-v-kmp-*) は 8月初めに 0_2.6.32.13_0.4-0.7.3 に、9月中旬に 0_2.6.32.19_0.2-0.7.11 に更新されました。 0_2.6.32.13_0.4-0.7.3 以降、hv_timesource と hv_utils の 2 つのモジュールが追加されています。hv_timesource は、Linux IS v2.1 にも含まれる、Linux ゲストに対して正確なタイムソースを提供するモジュールです。Linux 開発コミュニティのメーリング リストによると、「Addition of new driver for Hyper-V called hv_utils. This driver is intended to support things like KVP, Timesync, Heartbeat etc.」だそうです。
これらのモジュールは、SLES 11 SP1 では標準でロードされません。まだサポートされていないモジュールなのでしょう。動作の可否は別として、また、次に示す手順が正しいかどうかも別として、これらのモジュールを起動時にロードするように、SLES 11 SP1 ゲストを構成してみましょう。
(1) vi エディターなどを使用して、/etc/modprobe.d/unsupported-modules を開き、allow_unsupported_modules 0 の行を allow_unsupported_modules 1 に書き換えて上書き保存します。これをしておかないと、起動時のロードが許可されません (このことも、まだサポートされていないモジュールだということを示しています)。
(2) モジュールが存在するディレクトリに移動します。
cd /lib/modules/2.6.32-19.0.2-default(←kernelのバージョン)/extra
(3) 次のコマンドラインを実行して、モジュールをインストールします。
insmod hv_timesource.ko
insmod hv_utils.ko
(4) 次のコマンドラインを実行して、モジュールがロードされたことを確認します。
lsmod |grep hv_
(5) depmod コマンドを実行して、モジュールの依存関係を更新します。これで、hv_timesource のほうは起動にロードされるようになります。
depmod -a(6) vi エディターなどで /etc/sysconfig/kernel を開き、INITRD_MODULES="・・・・ hv_bkvsc hv_netvsc hv_storvsc hv_vmbus ・・・" の行を INITRD_MODULES="・・・・ hv_utils hv_bkvsc hv_netvsc hv_storvsc hv_vmbus ・・・" のように書き換えます。また、MODULES_LOADED_ON_BOOT="hv_storvsc hv_netvsc" の行を MODULES_LOADED_ON_BOOT="hv_storvsc hv_netvsc hv_utils" のように書き換えます。このように 2 箇所に hv_utils を追加したら、上書き保存します (INITRD_MODULES の方での指定は不要かもしれません)。
(7) reboot コマンドで Linux ゲストを再起動します。
reboot
(8) Linux ゲストが再起動したら、次のコマンドラインを実行して、モジュールが自動的にロードされたことを確認します。
lsmod |grep hv_
ここまで作業したら、時刻同期、シャットダウン連携、ハートビートについて動作確認してみます。まず、時刻同期ですが、date --set コマンドなどで時刻を変更しても、自動的に Hyper-V ホストと同期されることはありませんでした。
続いて、シャットダウン連携です。 仮想マシン接続 (Vmconnect.exe) の「シャットダウン」ボタンまたは、Hyper-V マネージャーの「シャットダウン」メニューから SLES 11 SP1 ゲストの仮想マシンに対してシャットダウンを指示すると、期待どおりにシャットダウンが開始して、仮想マシンが停止します。こちらは成功です。
最後に、ハートビートですが、hv_utils がロードされていても、「ハートビート: コンタクトなし」 のままです。
ちなみに、SLES 11 SP1 の /usr/src/linux/drivers/staging/hv/ ディレクトリにあるソースコードと、Linux IS v2.1 の src ディレクトリにあるソースコードを簡単に比較してみると、SLES 11 SP1 側に時刻同期やハートビート機能が実装されていないことがわかります。ソースコードを見る限り、SMP 構成については、SLES 11 SP1 のコンポーネントでも既に対応しているようです。
openSUSE 11.3 の状況は?
ちなみに、openSUSE 11.3 は、現時点の最新カーネル 2.6.34.7-0.2 でも状況は変わらず、hv_vmbus、hv_netvsc、hv_storvsc、hv_blkvsc の 4 つの Staging コンポーネントしか存在しませんでした。
過去の投稿
SLES 11 SP1 が Hyper-V サポート ゲスト OS リストに含まれない理由
http://yamanxworld.blogspot.com/2010/08/sles-11-sp1-hyper-v-os.html
Linux Integration Services v2.1 for Windows Server 2008 Hyper-V R2 now on Web !!
http://yamanxworld.blogspot.com/2010/07/linux-integration-services-v21-for.html
SLES 11 SP1 は Hyper-V 仮想マシンにインストールするだけで完了
http://yamanxworld.blogspot.com/2010/07/sles-11-sp1-hyper-v.html
Hyper-V & openSUSE 11.3 & Windows Virtual PC
http://yamanxworld.blogspot.com/2010/07/hyper-v-opensuse-113-windows-virtual-pc.html
Linux kernel 2.6.32 以降には Hyper-V Linux ICs が組み込み済み
http://yamanxworld.blogspot.com/2010/03/linux-kernel-2632-hyper-v-linux-ics.html
(2010/09/22 追記) 9/22 に Microsoft Hyper-V drivers (hyper-v-kmp-*) のバージョンが 0_2.6.32.19_0.3-0.7.12 に更新されました。カーネルのセキュリティ バグ修正に伴う更新のようです。Microsoft Hyper-V drivers の 機能に違いはありません。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。