インプレースアップグレードに頼らない、最新Hyper-V Server 2019への移行その知識、ホントに正しい? Windowsにまつわる都市伝説(139)

前回は「Hyper-V Server 2019」の大幅に遅れての再リリースに合わせ、Hyper-V Server 2016からインプレースアップグレードがサポートされず、実際に不可能であることを紹介しました。今回は、スタンドアロンのHyper-V Server 2016を最新バージョンに移行する方法について、筆者が実際に試してみた結果のレポートです。

» 2019年07月09日 05時00分 公開
[山市良テクニカルライター]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Windowsにまつわる都市伝説」のインデックス

Windowsにまつわる都市伝説

最新バージョンに移行したい。でも、大容量データのコピーは避けたい

 前回は、サポートされるアップグレード方法である「クラスタOSローリングアップグレード(Cluster Operating System Rolling Upgrade)」以外の方法で「Hyper-V Server 2016」以前を「Hyper-V Server 2019」に移行する方法として、仮想マシンを別の場所にエクスポート(またはファイルをコピー)し、Hyper-V Server 2019をクリーンインストールしてから、仮想マシンをインポートして、その後、仮想マシンの構成バージョンをアップグレードするという手順を紹介しました。

 しかし、上記の記事で示した手順は筆者が頭の中で想像したシミュレーションにすぎず、実際に試したわけではありませんでした。それでは少し無責任だと思ったので、次の3つのパターンを想定し、Hyper-V Server 2016からHyper-V Server 2019への移行作業を実際に行ってみました。

  • パターン1――仮想マシンのデータがC:ドライブにある場合
  • パターン2――仮想マシンのデータが既定のパスにある場合
  • パターン3――仮想マシンのデータが別ドライブにある場合

 結論から言うと、仮想マシンのデータを外部記憶装置にエクスポート(またはコピー)することなく、最新バージョンのOS環境に既存の仮想マシンを移行することができました。同じ方法で、Hyper-V Server 2012 R2以降からの移行が可能なはずです。

 今回試す3つのパターンは、いずれもローカルディスクに仮想マシンのデータ(仮想マシン構成ファイル、仮想ハードディスクファイル、チェックポイントファイルなど)が格納されているスタンドアロン環境を想定しています。

 FC SAN(Fibre Channel Storage Area Network)やiSCSI SAN、SMB(Server Message Block)共有など、仮想マシンのデータがSANやファイルサーバに格納されている場合は、「パターン3」とほぼ同じ手順で行えるでしょう(データディスクの再接続をSANやファイルサーバとの再接続に置き換えてください)。移行前に仮想マシンのバックアップを作成していませんが、運用環境ではバックアップしておくことを強く推奨します。

パターン1――仮想マシンのデータがC:ドライブにある場合

 Windows ServerやWindows 10、Hyper-V ServerのHyper-Vの仮想マシンデータを格納するための既定のパスは分かりにくい場所にあるため(パターン2で説明します)、「Hyper-Vマネージャー」の「Hyper-Vの設定」ウィンドウで既定のパスを変更したり、仮想マシンを作成するごとに既定とは別のパスを指定して保存したりしているユーザーは多いと思います。

 パフォーマンスや管理性の点からは、「パターン3」で想定するように別ボリュームに仮想マシンのデータを保存するのがお勧めです(同じディスクの別パーティションのボリュームではなく、別ディスクのパーティションのボリュームを推奨)。

 さまざまな理由があって、OSディスク用のボリューム(C:ドライブ)にある既定のパスや専用ディレクトリを作成して、その場所を利用している場合もあるでしょう。

 前回に説明したように、Hyper-V Serverは、設定やデータを維持したままの「インプレースアップグレード」ができません。しかしながら、OSディスク用のボリューム上の専用ディレクトリを利用している場合は、本稿で示す方法で仮想マシンのデータをその場所に維持したまま、最新バージョンに移行することが可能です。ここでは、「C:\VM」ディレクトリに仮想マシンのデータを格納しているものとして、実際に移行してみます(画面1)。

画面1 画面1 パターン1のHyper-V環境。OSはHyper-V Server 2016、仮想マシンのデータは「C:\VM」ディレクトリに格納されている。画面左はWindows 10の「Hyper-Vマネージャー」をHyper-V Serverにリモート接続した管理環境、画面右はHyper-V Serverのローカルコンソール

 現在の仮想マシンのデータは「C:\VM」ディレクトリに置いたまま、再リリース版のHyper-V Server 2019のインストールメディアを使用してサーバを起動し、新規インストールを開始します。インストール先としては、現在Hyper-V Server 2016がインストールされているプライマリーパーティションを選択します(画面2)。

画面2 画面2 新規インストールのために「カスタム:新しいバージョンのHyper-V Serverのインストールのみを行う」をクリックし、インストール先としてHyper-V ServerのOS用ボリュームのパーティションを選択する

 すると、現在のHyper-V Serverのシステム用ディレクトリ(\Windows、\Program Files、\Program Files《x86》、\ProgramData、\Usersなど)が「Windows.old」に移動されるという注意メッセージが表示されるので、「OK」をクリックして続行します。

 OS用ボリュームのルートに作成した仮想マシン用ディレクトリ「\VM」が削除されることなく維持されることは、この後の作業で確認できるでしょう。なお、OS用のボリュームのパーティションが分からない場合は、[Shift]+[F10]キーを押してコマンドプロンプトを開き、「DISKPART」コマンドを実行して確認してください。

 ビルトインAdministratorのパスワードを設定し、Hyper-V Server 2019の新規インストールが完了したら、コンピュータ名やネットワークの設定を手作業で再現し、リモート管理が可能なように構成します。インプレースアップグレードではなく、新規インストールなので、システム設定やアプリケーション(例えば、管理エージェントなど)は全て自分で設定する必要があります。

 その後、リモートの「Hyper-Vマネージャー」を接続して、移行前と同じ名前と構成で仮想スイッチを作成します。なお、仮想スイッチの名前が異なっていても、仮想マシンをインポートする際に仮想スイッチを指定するように求められるので、1つ手間は増えますが問題ありません。

 仮想マシン用の「C:\VM」ディレクトリは同じ場所に維持されていますが、新規インストールのため、当然のことながらHyper-Vには未登録であり、「Hyper-Vマネージャー」の仮想マシンのリストは空の状態です。

 ここで「操作」ペインの「仮想マシンのインポート」を選択し、「C:\VM」ディレクトリ内にある各仮想マシンの「Virtual Machines」ディレクトリがある1つ上のパスを指定し、「仮想マシンをインプレースで登録する」を選択してインポートします(画面3)。「仮想マシンをインプレースで登録する」を選択すると、仮想マシンの現在の場所と仮想マシンIDを変更することなく、仮想マシンとして復元することが可能です。

画面3 画面3 Hyper-V Server 2016の仮想マシンが格納されていた「C:\VM」ディレクトリ内のパスを指定し、Hyper-V Server 2019に仮想マシンをインプレースでインポートする

 仮想マシンを開始して、問題がないことを確認したら、仮想マシンの構成バージョンをHyper-V Server 2019の「9.0」にアップグレードします(画面4)。

画面4 画面4 仮想マシンの動作に問題がないことを確認したら、構成バージョンをHyper-V Server 2019の「9.0」にアップグレードする

 このとき、以前の構成バージョンで作成された既存のチェックポイントは、全て破棄されることに注意してください。チェックポイントをしばらく利用可能にしておきたい場合は、無理して構成バージョンをアップグレードする必要はありません。ただしその場合、Hyper-Vの新機能の利用ができないなど制約が残ります。

 最後に、以下のコマンドラインを実行して「C:\Windows.old」ディレクトリを削除します(画面5)。

RD C:\Windows.old /S
画面5 画面5 「Windows.old」に重要なデータがないことを確認したら、「RD C:\Windows.old /S」コマンドで単純に削除する

 通常のインプレースアップグレードの場合、「C:\Windows.old」ディレクトリは「設定」→「システム」→「ストレージ」や、「ディスククリーンアップ」(Cleanmgr.exe)を利用して削除しますが、Server CoreであるHyper-V Serverではこれらの方法は利用できません。

 アクセス許可の問題があって、コマンドラインで「C:\Windows.old」ディレクトリを削除するのは難しい作業です。しかしながら、新規インストールで作成された「C:\Windows.old」ディレクトリについては、単純に削除することができました。

パターン2――仮想マシンのデータが既定のパスにある場合

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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