GTM-MML4VXJ
Skip to main content

まっちーの仮想化講座
第20回:Live Migrationによるゲストドメインの動的な移動

2013年12月24日


 

サーバ仮想化機能の代表的な機能としてLive Migration機能があります。
Live Migration機能とは、ご存知の方も多いと思いますが仮想マシン(ゲストドメイン)を稼働したまま、別の物理サーバへ移動させる機能です。PCサーバの仮想化機能では一般的になってきたと思いますが、SPARC M10の仮想化機能であるOracle VM Server for SPARCにもLive Migration機能があります。
そこで今回はOracle VM Server for SPARCのLive Migration機能と設定方法のポイントなどをご紹介したいと思います。

Live Migration機能の図

事前確認

Live Migrationを実施するには、いくつか条件があります。まずはその条件を確認しましょう。

  • サーバ×2台以上
    なにはともあれ、サーバが2台以上ないことには始まりません。今回はSPARC M10-1を2台用意しました。
  • 外部ストレージ
    Live Migrationで移動するゲストドメインの仮想ディスクの実体(バックエンド)は外部の共有ストレージに配置する必要があります。
    今回はiSCSIの外部ストレージを用意しました。
  • ネットワーク機器
    お互いのサーバがネットワークで疎通している必要があります。

その他、OSやOracle VM Server for SPARCのバージョンにも条件があります。詳しくは、以下のマニュアルをご確認ください。

ドメインの構築

今回は、以下の図のようなドメインを構築しました。
構築の詳細は、今回は省略していますが、過去の連載やマニュアルのほかに、富士通のUNIXサーバ SPARC Servers 技術情報サイトTechnical Parkもご参照ください。
また、ドメイン構成を簡単に構築できるツールも公開していますので、こちらもご活用ください。

ドメイン構築図

Live Migrationを実行するためには、ドメインの構成にいくつかポイントがあります。

  • ターゲットマシン(上の図ではM10-1_2)にも仮想サービスをあらかじめ設定しておく必要があります。
  • ソースマシン(上の図ではM10-1_1)とターゲットマシンの仮想サービスは、同じ名称にする必要があります。
  • ソース/ターゲットマシンで共有ディスク上の同じ仮想ディスクバックエンド(上の図ではvol0)を指定する必要があります。

その他、CPUやメモリ構成についても注意する点がありますので、マニュアルも一度ご確認ください。

今回構築した仮想サービスの設定です。M10-1_1/M10-1_2ともに同じ設定です。

# ldm list-services 
VCC
    NAME             LDOM             PORT-RANGE
    primary-vcc0     primary          5000-5100

VSW
    NAME             LDOM             MAC               NET-DEV   ID   DEVICE     LINKPROP   DEFAULT-VLAN-ID PVID VID                  MTU   MODE   INTER-VNET-LINK
    primary-vsw0     primary          00:14:4f:f8:3e:4a net0      0    switch@0              1               1                         1500         on

VDS
    NAME             LDOM             VOLUME         OPTIONS          MPGROUP        DEVICE
    primary-vds0     primary          ldom1-os       ro                              /ISO/sol-11_1-text-install-sparc.iso
                                      ldom1-vol0                                     /dev/dsk/c0t600144F0B099289A983E528E9C620001d0s2

Live Migrationの実行

準備ができましたので、実際にマイグレーションしてみたいと思います。
まずはドメインの状態を確認します。移動対象のドメイン(今回の場合「ldom1」)のSTATUSが「active」でFLAGSに「n」が表示されていることを確認します。
この状態の場合、ゲストドメインはOSが起動していることになります。

M10-1_1# ldm ls
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  UART    8     8G       6.3%  9d 15h 1m
ldom1            active     -n----  5000    8     8G       0.0%  2d 23h 46m

次にマイグレーションを実行する前に、ターゲットマシンの準備ができているか確認します。
ldm migrate-domainコマンドに-nオプションをつけて実行します。
そのほか引数として、移動するドメイン名、ターゲットマシンのIPアドレス(またはホスト名)、ターゲットマシンユーザアカウントを指定します。指定するユーザアカウントは、root権限かLDoms Management権限が必要です。
コマンドを実行すると、指定したユーザアカウントのパスワードが聞かれますので、パスワードを入力します。

M10-1_1# ldm migrate-domain -n ldom1 root@ <M10-1_2_IP Address>
Target Password:
M10-1_1#

問題がない場合、何も表示されずにプロンプトが返ってきます。
もし、ターゲットマシンの準備ができていない場合には、エラーメッセージが表示されます。

M10-1_1# ldm migrate-domain -n ldom1 root@ <M10-1_2_IP Address>
Target Password: 
Failed to find required volume ldom1-os@primary-vds0 on target machine
Domain Migration of LDom ldom1 would fail if attempted

このメッセージは、仮想ディスクサービスの設定に誤りがあることを表しています。

では、ターゲットマシンの確認ができたら、実際にマイグレーションします。
今度はldm migrate-domainコマンドに-nオプションを付けずに実行します。

M10-1_1# ldm migrate-domain ldom1 root@ <M10-1_2_IP Address>
Target Password:

マイグレーションを実行したら、完了するまで少し時間がかかります。その間の様子をソースマシンとターゲットマシンに分けて見ていきたいと思います。
ターゲットマシン(M10-1_2)のコマンド結果には、オレンジ色の枠をつけています。

マイグレーション実行中

マイグレーション実行中にソースマシン/ターゲットマシンにおいて、それぞれのドメインの状態を確認してみます。

M10-1_1# ldm ls
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  UART    8     8G        16%  10d 17h 35m
ldom1            active     -n---s  5000    8     8G       0.0%  4d 2h 20m

M10-1_2# ldm ls
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  UART    8     8G       5.9%  3d 21h 14m
ldom1            bound      -----t  5000    8     8G

どちらのサーバでも移動中のドメインが表示されますが、FLAGSにはそれぞれ異なる値、「s」と「t」が表示されます。
「s」はsourceであり、ソースマシンであることを表します。「t」はtargetであり、ターゲットマシンであることを表します。

また、マイグレーション中の進捗状況を確認することができます。

M10-1_1# ldm ls -o status ldom1
NAME
ldom1

STATUS
    OPERATION   PROGRESS        TARGET
    migration   22%             <M10-1_2_IP Address>:ldom1

M10-1_2# ldm ls -o status ldom1
NAME
ldom1

STATUS
    OPERATION   PROGRESS        SOURCE
    migration   22%             M10-1_2

マイグレーション完了後

マイグレーションが完了すると、ソースマシンで実行したldm migrate-domainコマンドのプロンプトが返ってきます。メッセージが何も表示されなければ、マイグレーションが完了しています。

M10-1_1# ldm migrate-domain ldom1 root@<M10-1_2_IP Address>
Target Password:
M10-1_1#

では、ソースマシン/ターゲットマシンでドメインの状態を確認しましょう。ソースマシンにあったldom1がターゲットマシンに移動したことが確認できます。

M10-1_1# ldm ls
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  UART    8     8G       6.3%  10d 17h 36m

M10-1_2# ldm ls
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  UART    8     8G       0.6%  3d 21h 15m
ldom1            active     -n----  5000    8     8G       0.4%  4d 2h 21m

また、ゲストドメイン上でも、今どの物理サーバ上にいるのか確認することができます。
ゲストドメインにログイン後、virtinfoコマンドに-cオプションをつけて、制御ドメイン(Control domain)の情報を確認します。

<移動前>

ldom1# virtinfo -c
Control domain: M10-1_1

<移動後>

ldom1# virtinfo -c
Control domain: M10-1_2

Live Migrationはこれで完了ですが、これだけでは本当にゲストドメインが稼働した状態でマイグレーションしたことがお伝えしきれないのが残念です。そこで、次は本当にゲストドメインのOSが稼働した状態でマイグレーションしたのか確認してみたいと思います。

Live Migrationの動作確認

マイグレーション実行時に、以下の図のようにゲストドメインから同一サブネット上のクライアントに対して、FTPでファイルを転送します。
その際、各制御ドメインの物理NICの送信バイト数を1秒間隔で測定し、マイグレーションの様子を確認します。

Live Migrationの動作確認図

切り替わりの前後を拡大したグラフがこちらです。

切り替わりの前後を拡大したグラフ

Live Migration実行中もFTPの転送は継続して行われていますが、ソースマシンからターゲットマシンに切り替わるタイミングで一瞬ですがFTPの転送(ゲストドメイン)が停止します。これらの動きはどの仮想化機能でも同様です。
グラフを見ますと、停止時間は1~2秒程度です。もちろん、この間FTPのセッションは切れることはありません。停止時間はほかの仮想化機能と比べてもほぼ同じ時間で、実際の業務への影響はほとんどないことがわかります。

このように、今では一般的となったLive Migration機能ですが、Oracle VM Server for SPARCでも有効性が確認できたと思います。
業務を物理サーバ上ではなく、ゲストドメイン上に構築することで、サーバ保守時に業務を止めることなく保守ができたり、業務負荷が高くなったときに簡単に複数の物理サーバにドメインを分散したりできます。
SPARC M10をお使いの際には、Live Migration機能もぜひご活用ください。


応援メッセージはtwitterにて、ハッシュタグ #fjsparcOpen a new window までお願いします。