4.4. 仮想マシンの管理

それぞれの仮想マシン(VM)は、独立した一連の仮想ハードウェアを持つ独立したシステムです。主な特色を以下にまとめます。

  • 仮想マシンは通常のコンピューターによく似ていて、同じように動作します。独自の仮想ハードウェアを持っています。仮想マシンでは、ソフトウェアアプリケーションを変更も調整も行わないで実行できます。

  • 仮想マシンの設定は、新しい仮想ディスクや仮想メモリを追加するなどして簡単に変更できます。

  • 仮想マシンは、互い同士の間で物理ハードウェアリソースを共有しますが、ファイルシステムもプロセスもsysctl変数もそれぞれの間で完全に独立していて、計算ノードからも独立しています。

  • 仮想マシンは、サポートされているどのゲストオペレーティングシステムでも実行できます。

仮想マシンの設定に関する現時点の上限値を以下の表にまとめます。

表 4.4.1 仮想マシンのハードウェア

リソース

上限

RAM

1 TiB

CPU

48論理CPU

ストレージ

15ボリューム(各512 TiB)

ネットワーク

15 NIC

論理CPUはマルチコア(マルチスレッド)プロセッサのコア(スレッド)です。

4.4.1. サポートされているゲストオペレーティングシステム

仮想マシンでの動作確認が済んでいてサポートされているゲストオペレーティングシステムを以下にまとめます。

表 4.4.1.1 Windowsゲストオペレーティングシステム

オペレーティング システム

Edition

アーキテクチャ

Windows Server 2019

Essentials、Standard、Datacenter

x64

Windows Server 2016

Essentials、Standard、Datacenter

x64

Windows Server 2012 R2

Essentials、Standard、Datacenter

x64

Windows Server 2012

Standard、Datacenter

x64

Windows Server 2008 R2

Standard、Datacenter

x64

Windows Server 2008

Standard、Datacenter

x64

Windows 10

Home、Professional、Enterprise、Enterprise 2016 LTSB

x64

Windows 8.1

Home、Professional、Enterprise

x64

Windows 7

Home、Professional、Enterprise

x64

表 4.4.1.2 Linuxゲストオペレーティングシステム

オペレーティング システム

アーキテクチャ

CentOS 8.x

x64

CentOS 7.x

x64

CentOS 6.x

x64

RHEL 8.x

x64

RHEL 7.x

x64

Debian 9.x

x64

Ubuntu 20.04.x

x64

Ubuntu 18.04.x

x64

Ubuntu 16.04.x

x64

4.4.2. 仮想マシンの作成

VMの作成作業を進める前に、以下のものがそろっていることを確認してください。

  • 以下のいずれかのゲストOSソース(イメージの管理を参照):

    • VMにインストールするゲストOSの配布用ISOイメージ

    • QCOW2形式のブートボリュームであるテンプレート、または

    • ブートボリューム

      注釈

      ブートボリュームを入手するには、計算ボリュームの管理の説明に従ってボリュームを作成し、そのボリュームをVMに接続し、そこにオペレーティングシステムをインストールしてから、VMを削除します。

  • ボリュームのストレージポリシー(ストレージポリシーの管理を参照)

  • フレーバー(フレーバーの管理を参照)

  • 1つ以上の仮想ネットワーク(計算ネットワークの管理を参照)

  • SSHキー(SSHキーの管理を参照)

    注釈

    SSHキーを指定できるのは、テンプレートかブートボリュームからVMを作成する場合に限られます。

注釈

デフォルトでは、ホストのCPUモデルで仮想マシンが作成されます。各計算ノードのCPUが別々になっていると、ライブ移行で問題が発生する可能性があります。その問題を避けるために、すべての新しいVMでCPUモデルを手動で設定することもできます(Setting Virtual Machines CPU Modelを参照)。

VMを作成するには、以下の手順を実行します。

  1. COMPUTE > Virtual machines > VIRTUAL MACHINES tabで [仮想マシンを作成] をクリックします。VMのパラメータを指定するためのウィンドウが表示されます。

    ../_images/stor_image70_ac.png
  2. 新しいVMの名前を指定します。

  3. [配置元] で、ブートボリュームがある場合やブートボリュームを作成する場合は [ボリューム] を選択します。そうでない場合は [イメージ] を選択します。

  4. どちらを選択したかに応じて、[ボリューム] セクションか [イメージ] セクションにある鉛筆のアイコンをクリックし、以下のいずれかの操作を実行します。

    • [イメージ] ウィンドウで、ISOイメージまたはテンプレートを選択し、[完了] をクリックします。

    ../_images/stor_image71_ac.png
    • [ボリューム] ウィンドウで以下のいずれかの操作を実行します。

      • インストールしたゲストOSですでにボリュームを作成していた場合は、[接続] をクリックし、対象のボリュームを見つけて選択し、[完了] をクリックします。

    ../_images/stor_image72_ac.png ../_images/stor_image73_ac.png
  5. 必要に応じて、[ボリューム] ウィンドウで [追加] または [接続] をクリックして、他のボリュームを作成したり接続したりすることもできます。ボリュームをブータブルとして選択するには、そのボリュームの横にある上矢印ボタンをクリックして、そのボリュームをリストの先頭に配置します。

  6. イメージまたはボリュームを選択すると、[プレースメント] ドロップダウンリストが表示されます。プレースメントは、特定の機能(特殊なライセンスなど)を共有するノードやVMをグループ化するために管理者が作成します。VMの特徴に合わせてプレースメントを選択してください。詳細については、プレースメントの管理を参照してください。

  7. [フレーバー] ウィンドウでフレーバーを選択して [完了] をクリックします。

    ../_images/stor_image74_ac.png
  8. ネットワークウィンドウで [追加] をクリックし、仮想ネットワークインターフェースを選択し、[追加] をクリックします。そのインターフェースが [ネットワークインターフェース] リストに表示されます。

    ../_images/stor_image75_ac.png

    新しく追加したネットワークインターフェースの追加のパラメータ(IPアドレスやMACアドレスやなりすまし保護など)を設定できます。そのためには、インターフェースの省略記号のアイコンをクリックし、[編集] をクリックし、[ネットワークインターフェースを編集] ウィンドウでパラメータを設定します。

    ../_images/stor_image75_1_ac.png

    それらのパラメータを後から編集することはできません。ただし、古いネットワークインターフェースを削除して、新しいネットワークインターフェースに置き換えることは可能です。

    ../_images/stor_image75_2_ac.png

    [完了] をクリックします。

  9. (オプション)ISOイメージではなくテンプレートかブートボリュームからVMをデプロイする場合は、以下の項目も指定できます。

    • VMに追加するSSHキー。そのためには、[SSHキーを選択] ウィンドウでSSHキーを選択して [完了] をクリックします。

      ../_images/stor_image76_ac.png

      注釈

      SSHでVMに接続できるようにするために、VMのテンプレートまたはブートボリュームにcloud-initとOpenSSHがインストールされていることを確認してください(テンプレートの準備を参照)。

    • 起動後にVMをカスタマイズするためのユーザーデータ。ユーザーデータは、cloud-configまたはシェルスクリプトのどちらかの形式で指定できます。そのためには、[カスタマイズスクリプト] フィールドでスクリプトを作成するか、スクリプトをロードするためのファイルをローカルサーバーで見つけて選択します。

      ../_images/stor_image77_ac.png

      注釈

      ゲストOSのカスタマイズを可能にするために、VMのテンプレートまたはブートボリュームにcloud-initがインストールされていることを確認してください(テンプレートの準備を参照)。

      Windows VMにスクリプトを追加する方法については、Cloudbase-Initの資料を参照してください。たとえば、次のスクリプトを使用してアカウントに新しいパスワードを設定できます。

      #ps1
      net user <username> <new_password>
      
  10. [仮想マシンを作成] ウィンドウに戻り、[デプロイ] をクリックして、VMを作成して起動します。

  11. ゲストOSがあらかじめインストールされているブートボリュームやテンプレートではなくISOイメージからVMをデプロイする場合は、VMを選択し、[コンソール] をクリックし、ビルトインVNCコンソールを使用してゲストOSをインストールします。

  12. (オプション)SSHキーを追加したテンプレートからVMをデプロイする場合は、ユーザー名とVMのIPアドレスを使用してSSHでVMに接続できます。

    • Linuxテンプレートの場合は、クラウドイメージOSのデフォルトのユーザー名を入力します(たとえば、CentOSクラウドイメージなら、デフォルトのログインはcentosです)。

    • Windowsテンプレートの場合は、Cloudbase-Initのインストール時に指定したユーザー名を入力します。

    たとえば、次のようになります。

    # ssh myuser@10.10.10.10
    

4.4.3. 仮想マシンの操作の概要

仮想マシンを作成したら、現在の状態で実行できる操作を使用して仮想マシンを管理できます。実行できる操作の完全なリストを確認するには、VMの横かVMパネルの上部にある省略記号のアイコンをクリックします。以下の操作があります。

  • [実行]: VMを起動します。

  • [コンソール]:ビルトインVNCコンソールを使用して、稼働中のVMに接続します。コンソールブラウザウィンドウでは、キーの組み合わせをVMに送信したり、コンソールウィンドウのスクリーンショットを取得したり、コンソールログをダウンロードしたりできます。

  • [再起動]: 稼働中のVMをソフトリブートします。

  • [シャットダウン]: 稼働中のVMをシャットダウンします。

  • [ハードリブート]: 電源をいったん切ってから電源を入れ直し、それからVMを起動します。

  • [電源オフ]: VMの電源を強制的にオフにします。

  • [棚上げ] 停止中のVMをホストノードからアンバインドして、予約済みのリソース(CPUやRAMなど)をリリースします。棚上げしたVMは依然ブート可能なまま、IPアドレスなどの構成が保持されます。

    他の状態になっている仮想マシンを棚上げするには、[シャットダウン] または [電源オフ] をクリックし、確認ウィンドウの [仮想マシンを棚上げ] チェックボックスを選択します。

  • [棚上げ解除]: VMの棚上げの状態を、十分なリソースがあるホストノードで解除します。

  • [一時停止]: 現在のVMの状態をファイルに保存します。

    ホストを再起動する必要があるにもかかわらず、VMで稼働しているアプリケーションを停止したくない場合や、ゲストOSを再起動する場合などに、一時停止を行うと便利です。

  • [再開]: 一時停止の状態のVMを再開します。

  • [コンソールログをダウンロード]:コンソールログをダウンロードします。VM内部でログを有効にしてください。そうしないと、ログは空のままになります(詳細については、仮想マシン内のログの有効化を参照)。

    障害が発生した仮想マシンのトラブルシューティングを行うときに、コンソールログを調べると役立ちます。

  • [状態をリセット]: 障害の状態や一時的な状態になっているVMを直近の安定状態(アクティブ、シャットダウン、棚上げ)にリセットします。

  • [削除]: 計算クラスターからVMを削除します。

  • [移行]: VMを計算クラスター内の別のノードに移します(詳細については、仮想マシンの移行を参照)。

4.4.4. 仮想マシン内のログの有効化

VMのコンソールログにログメッセージが書き込まれるのは、TTY1とTTYS0のログのレベルがVM内部で有効になっている場合に限られます。たとえば、Linux VMであれば、以下のようにしてログを有効にできます。

  1. /etc/default/grubファイルにGRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0"という行を追加します。

  2. ブートローダーに応じて、以下のいずれかを実行します。

    # grub-mkconfig -o /boot/grub/grub.cfg
    

    または、

    # grub2-mkconfig -o /boot/grub2/grub.cfg
    
  3. VMを再起動します。

Windows VMでは、その目的のためにEmergency Management Services(EMS)コンソールリダイレクトを有効にできます。以下の手順を実行します。

  1. 管理者権限でWindows PowerShellを実行します。

  2. PowerShellコンソールで、EMSコンソールリダイレクトのCOMポートと通信速度を設定します。Windows VMの場合は、通信速度が9600 bpsのCOM1ポートしかないので、以下の手順を実行します。

    bcdedit /emssettings EMSPORT:1
    
  3. 現在のブートエントリでEMSを有効にします。

    bcdedit /ems on
    

ドライバステータスログを有効にして、ロード済みのドライバのリストを確認することもできます。そのリストは、ドライバで障害が発生している場合やブートプロセスに長い時間がかかっている場合のトラブルシューティングに活用できます。そのためには、以下の手順を実行します。

  1. 管理者権限で [システム設定] を開始します。

  2. [システム設定] ウィンドウで、[ブート] タブを開き、[OSブート情報][すべてのブート設定を保存する] のチェックボックスを選択します。

  3. 変更内容を確認し、システムを再起動します。

4.4.5. 仮想マシンの移行

VMの移行は、クラスターをアップグレードするときや、計算ノードの間でワークロードのバランス調整を行うときに役立ちます。Acronis Cyber Infrastructureでは、2つのタイプの移行が可能です。

  • コールドマイグレーション(停止した仮想マシンや一時停止した仮想マシンの移行)

  • ホットマイグレーション(稼働中の仮想マシンの移行なので、VMのダウンタイムを回避できます)

どちらの移行タイプでも、仮想マシンが計算ノード間で移行するときに共有ストレージが使用されるので、ブロックデバイスは移行しません。

ホットマイグレーションは、以下の流れで進んでいきます。

  1. 仮想マシンがソースノードで稼働している間に、すべてのVMメモリがターゲットノードにコピーされます。VMのメモリページが変更されると、そのページが再びコピーされます。

  2. コピーの必要なメモリページが残りわずかになると、ソースノードでVMが停止し、残りのページが転送され、ターゲットノートでVMが再起動します。

書き込みのワークロードが集中的に発生する大きな仮想マシンでは、メモリの変更がターゲットノードに転送される速度よりも、メモリへの書き込みの速度の方が上回ってしまうので、移行が収束しません。そのようなVMでは、自動収束メカニズムが使用されます。ライブ移行中に収束しない状況が検出されると、VMのvCPUの実行速度を抑えるよう調整が行われ、VMのメモリへの書き込み速度が低下します。仮想マシンのvCPUの当初の調整は20%ですが、その後のイテレーションでは10%ずつになります。VMのメモリへの書き込み速度を落とす調整プロセスは、最終的に移行が完了するか、VM vCPUの調整が99%になるまで続きます。

注釈

デフォルトでは、ホストのCPUモデルで仮想マシンが作成されます。各計算ノードのCPUが別々になっていると、ライブ移行で問題が発生する可能性があります。その問題を避けるために、すべての新しいVMでCPUモデルを手動で設定することもできます(Setting Virtual Machines CPU Modelを参照)。

VMを移行するには、以下の手順を実行します。

  1. [計算] > [仮想マシン] > [仮想マシン] タブで、移行するVMをクリックし、省略記号のボタンをクリックし、[移行] を選択します。

    ../_images/stor_image104_ac.png
  2. 新しいウィンドウでターゲットノードを指定します。

    • [自動]。使用可能なCPUリソースとRAMリソースに基づいて、クラスターノードの中から最適なターゲットを自動的に選択します。

    • ドロップダウンリストからターゲットノードを手動で選択します。

    ../_images/stor_image105_ac.png
  3. デフォルトでは、稼働中のVMはライブで移行します。[コールドマイグレーション] チェックボックスにチェックマークを付けることによって、移行モードをオフラインに変更できます。移行後に、ターゲットノードでVMがいったん停止してから再起動します。

  4. [移行] をクリックして、ターゲットノードのリソースを確保し、移行を開始します。

管理者パネルに移行の進行状況が表示されます。

4.4.6. 仮想マシンの再設定と監視

仮想マシンのCPU、ストレージ、およびネットワークの使用量を監視するには、VMを選択し、[監視] タブを開きます。

チャートのデフォルトの時間間隔は12時間です。特定の時間間隔を拡大するには、マウスでその間隔を選択します。拡大をリセットするには、任意のチャートをダブルクリックします。

次のパフォーマンスチャートを利用できます。

CPU/RAM

VMによるCPUとRAMの使用量。

ネットワーク

受信と送信のネットワークトラフィック。

ストレージの読み取り/書き込み

VMによって読み書きされたデータの量。

読み取り/書き込み遅延

読み取りと書き込みの遅延。チャートの特定の時点にマウスカーソルを合わせると、その時点の平均遅延と最大遅延、95パーセンタイルと99パーセンタイルも確認できます。

VMを再設定するには、対象のVMを選択し、[概要] タブで変更するパラメータの横にある鉛筆のアイコンをクリックします。以下を行うことはできません。

  • ブートボリュームの変更、切断、または削除

  • ブート以外のボリュームの管理(接続と切断を除く)

  • 以前追加したネットワークインターフェースの変更

  • 棚上げしたVMのネットワークインターフェースの接続および切断

  • 実行中のVMと棚上げしたVMのフレーバーの変更

4.4.7. 仮想マシンの高可用性の設定

仮想マシンが配置されているノードでカーネルのクラッシュ、停電などが原因で障害が発生した場合や、ネットワークからノードにアクセスできなくなった場合に、高可用性により仮想マシンの稼働が維持されます。グレースフルシャットダウンは障害イベントと見なされません。

重要

計算クラスターは1つのノードの障害にのみ耐えることができます。

障害が発生すると、システムは影響を受けるVMを自動的に退避しようとします。つまり、自動スケジュール設定を使用してオフラインで他の正常な計算ノードに次の順序で移行します。

  • 「アクティブ」ステータスのVMが最初に退避され、自動的に開始されます。

  • 「シャットダウン」ステータスのVMが次に退避され、停止したままになります。

  • 他のすべてのVMは無視され、障害が発生したノードに残されます。

退避先の計算ノードに、影響を受けるVMをホストするだけのリソースがないなど、退避を阻止する何らかの要因がある場合、これらのVMは障害が発生したノードに留まり、「エラー」ステータスを受け取ります。問題を解決した後で(十分なリソースを用意する、新しいノードをクラスターに追加するなど)、手動で退避できます。手動で退避するには、対象のVMの横にある省略記号ボタンをクリックするかそのパネルを開き、[退避] をクリックします。

../_images/stor_image155_ac.png

障害が発生したノードが再び利用可能な状態になると、そのノードで新しいVMのスケジュール設定ができなくなり、手動で稼働中に戻すことができます。稼働中に戻すには、フェンス済みノードの横にある省略記号ボタンをクリックするかそのパネルを開き、[稼働中に戻す] をクリックします。

../_images/stor_image154_ac.png

デフォルトでは、仮想マシンの高可用性は、計算クラスターを作成した後に自動的に有効になります。必要に応じて、次の手順を実行して手動で無効にすることができます。

  1. HAを無効にするVMをクリックします。

  2. VMパネルで、[高可用性] パラメータの横にある鉛筆のアイコンをクリックします。

  3. [高可用性] ウィンドウでVMのHAを無効にし、[保存] をクリックします。

../_images/stor_image156_ac.png

HAが無効の仮想マシンはフェールオーバー時に正常なノードに退避されません。

4.4.8. ゲストツールの管理

このセクションではゲストツールのインストール方法とアンインストール方法を説明します。この機能にはRunning Commands in Virtual Machines without Network Connectivityが必要です。また、実行中のVMディスクの一貫性のあるスナップショットを作成する(ボリュームスナップショットの管理を参照)必要があります。

4.4.8.1. ゲストツールのインストール

仮想マシン内でゲストツールをインストールする手順には、ユーザーがシステム管理者のロールで行うものとVMユーザーのロールで行うものがあります。

システム管理者としては、次の手順を実行する必要があります。

  1. 任意の計算ノードの/usr/share/vz-guest-tools/ディレクトリにあるゲストツールのISOファイルをネットワーク共有またはFTPサーバーにアップロードします。

    • Windowsゲストの場合、vz-guest-tools-win.isoをアップロードします。

    • Linuxゲストの場合、vz-guest-tools-lin.isoをアップロードします。

  2. VMユーザーにアップロードしたISOファイルへのアクセス権限を付与します。

VMユーザーとして仮想マシンにログインして、以下の手順を実行します。

  • Windows VM内:

    1. システム管理者から提供されたWindowsゲストツールのISOイメージをダウンロードします。

    2. VM内にイメージをマウントします。

      • Windows8またはWindows Server 2012以降では、ISOイメージをネイティブにマウントできます。これを行うには、ゲストツールのISOイメージを右クリックし、 [マウント] を選択します。

      • Windows 7とWindows Server 2008の場合、ISOイメージのマウントにはサードパーティーのアプリケーションが必要です。

    3. エクスプローラーでマウントした光学式ドライブに移動し、setup.exeを実行してゲストツールをインストールします。

    4. インストールが完了したら、VMを再起動します。

  • Linux VM内:

    1. システム管理者から提供されたLinuxゲストツールのISO イメージをダウンロードします。

    2. ゲストツールのイメージがある光学式ドライブのマウントポイントを作成し、インストーラを実行します。

      # mkdir /mnt/cdrom
      # mount <path_to_guest_tools_iso> /mnt/cdrom
      # bash /mnt/cdrom/install
      

注釈

ゲストツールは、ツールと共にインストールされるQEMUゲストエージェントに依拠します。ツールを動作させるにはエージェントサービスを実行する必要があります。

4.4.8.2. ゲストツールのアンインストール

ゲストツールに仮想マシン内の他のソフトウェアとの互換性がないことが判明した場合は、次の手順によりゲストツールをアンインストールできます。

  • Windows VM内:

    1. デバイスマネージャーからQEMUデバイスドライバを削除します。

      重要

      VirtIO/SCSIハードディスクドライバとNetKVMネットワークドライバは削除しないでください。VirtIO/SCSIハードディスクドライバがないとVMは起動せず、NetKVMネットワークドライバがないとネットワーク接続が失われます。

    2. インストールされているアプリケーションの一覧から、QEMUゲストエージェントとゲストツールをアンインストールします。

    3. ゲストツールモニターを停止して削除します。

      > sc stop VzGuestToolsMonitor
      > sc delete VzGuestToolsMonitor
      
    4. イベントログからゲストツールモニターの登録を解除します。

      > reg delete HKLM\SYSTEM\CurrentControlSet\services\eventlog\Application\\
      VzGuestToolsMonitor
      
    5. RebootNotifierのautorunレジストリキーを削除します。

      > reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v \
      VzRebootNotifier
      
    6. C:\Program Files\Qemu-ga\ディレクトリを削除します。

      VzGuestToolsMonitor.exeがロックされている場合は、すべてのEvent Viewerウィンドウを閉じます。閉じた後もロックが続く場合は、eventlogサービスを再起動します。

      > sc stop eventlog
      > sc start eventlog
      

    ゲストツールを削除したら、仮想マシンを再起動します。

  • Linux VM内:

    1. パッケージの削除:

      1. RPMベースのシステム(CentOSなど):

        # yum remove dkms-vzvirtio_balloon prl_nettool qemu-guest-agent-vz vz-guest-udev
        
      2. DEBベースのシステム(DebianおよびUbuntu):

        # apt-get remove vzvirtio-balloon-dkms prl-nettool qemu-guest-agent-vz vz-guest-udev
        

        システムに上記のパッケージのいずれかがインストールされていない場合、コマンドは失敗します。その場合は、インストールされていないパッケージをコマンドから除外して、再度実行します。

    2. ファイルの削除:

      # rm -f /usr/bin/prl_backup /usr/share/qemu-ga/VERSION /usr/bin/install-tools \
      /etc/udev/rules.d/90-guest_iso.rules /usr/local/bin/fstrim-static /etc/cron.weekly/fstrim
      
    3. udevルールを再読み込みします。

      # udevadm control --reload
      

    ゲストツールの削除後、仮想マシンを再起動します。