Category: Virtualization


Hyper-V サーバー内の 仮想マシンを別の仮想ホストへ移動するためのPowerShell コマンドです

PowerShell を利用するメリットの一つとして、仮想マシンの移動を指定順序で実行することができます。
例えば、移動元仮想ホスト上仮想マシンをすべて移動先仮想ホストへ移動するといったことができます。
この場合、移動元仮想ホストのディスクに重複除去機能を使用している場合は、移動先仮想ホストのディスクの空き容量に注意する必要があります。

$VMname = “移動したい仮想マシン名”
$VMHost = “移動先ホスト名”
$Path = “移動先パス名”
Move-VM $VMname -DestinationHost $Host -DestinationStoragePath $Path

参考:
PowerShell を使って仮想マシンの保存場所を移動する

Hyper-Vの記憶域の移行の機能を利用すると同時に複数台の仮想マシンの保存先を変更することができます。
既定では2台までとなっています。
この同時実行数を変更する場合は、Hyper-Vの設定にある記憶域の移行から行います。

仮想マシンの起動をすると以下のエラーが発生し、起動できないことがあります。

‘Windows Server 2016’ は起動できませんでした。

Microsoft Emulated IDE Controller (インスタンス ID yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy): 電源をオンにできませんでした。エラー ‘エラー: 一般のアクセスが拒否されました’。

IDE/ATAPI アカウントには、アタッチメント ‘E:\Windows Server 2016\Virtual Hard Disks\Disk1.avhdx’ を開くのに十分な特権がありません。エラー: ‘エラー: 一般のアクセスが拒否されました’。

Hyper-V 仮想マシン管理サービス アカウントには、アタッチメント ‘E:\Windows Server 2016\Virtual Hard Disks\Disk1.avhdx’ を開くのに十分な特権がありません。エラー: ‘エラー: 一般のアクセスが拒否されました’。

これは、ファイルをコピーなどしてアクセス権が変更された場合にアクセス権の不整合によるエラーのため起動ができない状況です。
この場合は、正しいアクセス権を付与することで、正常に起動できるようになります。
以下のコマンドで、アクセス権を付与します。

icacls アクセス権を変更したいファイル /grant “NT VIRTUAL MACHINE\仮想マシン ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”:(F)

忘れないようにメモ

Hyper-V サーバー内の 仮想マシンを別の記憶領域へ移動するためのPowerShell コマンドです

PowerShell を利用するメリットの一つとして、仮想マシンの移動を指定順序で実行することができます。

$VMname = “移動したい仮想マシン名”
$Path = “移動先パス名”
Move-VMStorage $VMname –DestinationStoragePath $Path

参考:
PowerShell を使って仮想マシンを移動する

Windows Server 2012 R2から仮想マシンに世代という概念が導入されました。
第1世代である従来の仮想マシンは、古いアーキテクチャーをエミュレーションしていましたが、第2世代では、UEFIなど新しいアーキテクチャーがサポートされるようになりました。

第2世代の仮想マシンに対応しているOSは、今のところ Windows 8、Windows 8.1 、Windows Server 2012 、 Windows Server 2012 R2 となっています。

第1世代のマシンから第2世代のマシンに変換するには、以下のサイトから変換用スクリプトをダウンロードして実行します。
Hyper-V generation 2 VM conversion utility (Convert-VMGeneration)

変換は、以下の手順で行います。
※このスクリプトを実行するとハードディスクの構成が変更されますので、ご注意ください。

1.変換する仮想マシンで、以下のコマンドを実行し、Windows REの構成情報を確認します。
reagentc /info

PS C:\> reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:Windows RE の状態:         Enabled
Windows RE の場所:         \\?\GLOBALROOT\device\harddisk0\partition1\Recovery\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ブート構成データ (BCD) ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
回復イメージの場所:
回復イメージ インデックス: 0
カスタム イメージの場所:
カスタム イメージ インデックス: 0REAGENTC.EXE: 操作は成功しました。

2.以下のコマンドを実行し、Windows REの構成情報を変更します。
reagentc /disable

PS C:\> reagentc /disable
REAGENTC.EXE: 操作は成功しました。

3.再び以下のコマンドを実行し、Windows REの構成情報を確認(Disabled)します。
reagentc /info

PS C:\> reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:Windows RE の状態:         Disabled
Windows RE の場所:
ブート構成データ (BCD) ID: 00000000-0000-0000-0000-000000000000
回復イメージの場所:
回復イメージ インデックス: 0
カスタム イメージの場所:
カスタム イメージ インデックス: 0REAGENTC.EXE: 操作は成功しました。

4.仮想マシンをシャットダウンします。

5.仮想ホストで、ダウンロードしたスクリプトを実行します。
PS> .\Convert-VMGeneration.ps1 -VMName “仮想マシンの名前” -Path 出力先パス -NewVMName 新しい仮想マシンの名前

PS E:\tmp> .\Convert-VMGeneration.ps1 -VMName “Windows 8” -Path D:\VHD -NewVMName “Windows 8(Gen2)”Hyper-V Generation 2 Virtual Machine Conversion Utility. Version 1.04, 6th Dec 2013.
John Howard, Hyper-V Team, Microsoft Corporation (http://blogs.technet.com/jhoward)
http://code.msdn.microsoft.com/ConvertVMGenerationINFO:    Locating virtual machine ‘Windows 8’…
INFO:    Validating virtual machine configuration…
警告: This script has not been validated for VMs with replica enabled. Using the override check is experimental only.
Remember that *IF* the VM is successfully converted, you will need to re-enable replica once complete.
INFO:    Identified boot disk is ‘D:\VHD\Windows 8\Virtual Hard Disks\Windows 8.vhdx’
INFO:    Source drive letters are F G
INFO:    Found Microsoft® Windows® Operating System 6.2.9200.16384 (win8_rtm.120725-1247) x64 at G:\windows
INFO:    Creating ‘D:\VHD\Windows 8(Gen2)\Windows 8 (Generation 2).vhdx’…
INFO:    Disk 3 is mounted. Allocated drive letters are Y: and Z:Warning – Loss of data
CONTENT ON DISK 3 IS ABOUT TO BE DESTROYED.

Verify this maps to ‘D:\VHD\Windows 8(Gen2)\Windows 8 (Generation 2).vhdx’ in disk management (diskmgmt.msc) or
diskpart.exe before confirming.
Your confirmation accepts full liability for accidental data loss due to coding errors or otherwise.
[N] No  [Y] Yes  [?] ヘルプ (既定値は “N”): y
INFO:    Preparing disk…
INFO:    Capturing image. This will take some time…
INFO:    Image captured to C:\Users\Admin\AppData\Local\Temp\TEMP-2014-04-13 03-57-51 captured.wim
INFO:    Applying image. This will take some time…
INFO:    Configuring ‘Windows 8(Gen2)’. Baseline configuration from ‘Windows 8’…
INFO:     – Memory…
INFO:     – Processors…
INFO:     – Storage…
INFO:     – Notes…
INFO:     – Integration Services…
Enable-VMIntegrationService : パラメーターが無効です。指定された統合サービス名が無効です。ワイルドカードを使用するか、
次のいずれかの有効な統合サービス名を指定してください: ‘Time Synchronization’、’Heartbeat’、’Key-Value Pair Exchange’、’
Shutdown’、’VSS’、または ‘Guest Service Interface’。
発生場所 E:\tmp\Convert-VMGeneration.ps1:2001 文字:16
+                Enable-VMIntegrationService -Name $IC.Name -VM $NewVM
+                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (:) [Enable-VMIntegrationService]、VirtualizationInvalidArgumentExceptio
n
+ FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.EnableVMIntegrationServiceCommand

Enable-VMIntegrationService : パラメーターが無効です。指定された統合サービス名が無効です。ワイルドカードを使用するか、
次のいずれかの有効な統合サービス名を指定してください: ‘Time Synchronization’、’Heartbeat’、’Key-Value Pair Exchange’、’
Shutdown’、’VSS’、または ‘Guest Service Interface’。
発生場所 E:\tmp\Convert-VMGeneration.ps1:2001 文字:16
+                Enable-VMIntegrationService -Name $IC.Name -VM $NewVM
+                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (:) [Enable-VMIntegrationService]、VirtualizationInvalidArgumentExceptio
n
+ FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.EnableVMIntegrationServiceCommand

Enable-VMIntegrationService : パラメーターが無効です。指定された統合サービス名が無効です。ワイルドカードを使用するか、
次のいずれかの有効な統合サービス名を指定してください: ‘Time Synchronization’、’Heartbeat’、’Key-Value Pair Exchange’、’
Shutdown’、’VSS’、または ‘Guest Service Interface’。
発生場所 E:\tmp\Convert-VMGeneration.ps1:2001 文字:16
+                Enable-VMIntegrationService -Name $IC.Name -VM $NewVM
+                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (:) [Enable-VMIntegrationService]、VirtualizationInvalidArgumentExceptio
n
+ FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.EnableVMIntegrationServiceCommand

Enable-VMIntegrationService : パラメーターが無効です。指定された統合サービス名が無効です。ワイルドカードを使用するか、
次のいずれかの有効な統合サービス名を指定してください: ‘Time Synchronization’、’Heartbeat’、’Key-Value Pair Exchange’、’
Shutdown’、’VSS’、または ‘Guest Service Interface’。
発生場所 E:\tmp\Convert-VMGeneration.ps1:2001 文字:16
+                Enable-VMIntegrationService -Name $IC.Name -VM $NewVM
+                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (:) [Enable-VMIntegrationService]、VirtualizationInvalidArgumentExceptio
n
+ FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.EnableVMIntegrationServiceCommand

Disable-VMIntegrationService : パラメーターが無効です。指定された統合サービス名が無効です。ワイルドカードを使用するか、
次のいずれかの有効な統合サービス名を指定してください: ‘Time Synchronization’、’Heartbeat’、’Key-Value Pair Exchange’、’
Shutdown’、’VSS’、または ‘Guest Service Interface’。
発生場所 E:\tmp\Convert-VMGeneration.ps1:2005 文字:16
+                Disable-VMIntegrationService -Name $IC.Name -VM $NewVM
+                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (:) [Disable-VMIntegrationService]、VirtualizationInvalidArgumentExcepti
on
+ FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.DisableVMIntegrationServiceCommand

INFO:     – Start/stop actions…
INFO:     – Networking…
INFO:     – Boot order…

SUMMARY:
· Virtual machine ‘Windows 8(Gen2)’ was created.
· Boot disk is ‘D:\VHD\Windows 8(Gen2)\Windows 8 (Generation 2).vhdx’.
· Configuration was cloned from VM ‘Windows 8’.

警告: Completed with 1 warning. Trace status code 1597

6.変換された仮想マシンを起動します。

今までのWindows Small Business Server 2011 Essentials とWindows Server 2012 Essentials には、Hyper-V の役割をインストールすることができませんでしたが、Windows Server 2012 R2 Essentials では、Hyper-Vホストがサポートされました。

製品 Hyper-Vホスト Hyper-Vゲスト
Windows Small Business Server 2011 Essentials ×
Windows Server 2012 Essentials ×
Windows Server 2012 R2 Essentials

ということで、Windows Server 2012 R2 Essentials に Hyper-V の役割をインストール してみました。
WS12R2ESS_Hyper-V_002

インストール後、Hyper-V は正常に機能していますが、ダッシュボード上にアラートが2件表示されました。
・サーバーがインターネットに接続されていません
・ルーターが正しく構成されていません
WS12R2ESS_Hyper-V_003

「サーバーがインターネットに接続されていません」
>右側の個別タスクの「解決を試みる」をクリックするとアラートは消えますが、しばらくすると復活します。

「ルーターが正しく構成されていません」
>右側の個別タスクの「解決を試みる」をクリックしても無反応です。

そこで、ダッシュボードの右上の「設定」からAnywhwere Access の修復ボタンをクリックします。
すると次のエラーが表示されます。
WS12R2ESS_Hyper-V_001

どうやら、IPv6が Anywhwere Accessの構成を邪魔しているようです。

現時点では、以下の設定の場合には、アラートは表示されますが Anywhwere Access は正常に機能しています。
・サーバーのIPアドレスを固定にする。
・ルーターでポート(80と443)をサーバーのIPアドレスにマッピングする

先日、VHDブートからHyper-Vへ移行 の記事を投稿しましたが、VHDファイルにブート情報を書き込んだでもブルースクリーンエラー(0x0000007B )でOSが正しく起動しないことがあります。

これは、Hyper-V がIDEで起動することに関係しています。
このエラーを回避するには、以下のレジストリの値を確認して、必要であれば修正する必要があります。

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\IntelIde]
“Start”=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\PCIIde]
“Start”=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\atapi]
“Start”=dword:00000000

レジストリの修正は自己責任で行ってください。
レジストリの修正によって、コンピュータが起動しなくなる恐れがあります。
バックアップをとった上で、注意して作業をしてください。

Microsoft ダウンロードセンターに「Linux Integration Services Version 3.1 for Hyper-V – 日本語」が登場していました。

マニュアルによると、サポートされるゲストOSは、次の通りです。
This version of Linux Integration Services supports the following guest operating systems and
virtual CPU (vCPU) configurations:
 ・ Red Hat Enterprise Linux 6.0 and 6.1 x86 and x64 (Up to 4 vCPU)
 ・ CentOS 6.0 x86 and x64 (Up to 4 vCPU)

 

CentOS5.5をWindows Server 2008 R2 SP1のHyper-V上で、動かしてみました。
CentOS5.5のインストールです。

1.CentOSのisoファイルをダウンロードします。
   http://www.centos.org/

2.ネットワークは、「レガシネットワークアダプタ」を設定します。
  

3.インストール画面です。ここでは、「ENTER」キーを押します。
  

4.ダウンロードしたisoをチェックします。必要ががない場合は、「Skip」を選択します。
  

5.テストを開始します。
  

6.テストに合格しました。
  

7.「Continue」を選択し、インストールの準備を開始します。
  

8.GUIのインストール画面が表示されますので、「Next」を選択します。
  

9.言語の選択をし、「Next」を選択します。
  

10.キーボードタイプを選択し、「次へ」を選択します。
  

11.パーティションテーブルが読み込めない警告画面が表示されますが、そのまま「はい」を選択します。
  

12.パーティションに関する設定をし、「次へ」を選択します。
  

13.警告画面が表示されますので、そのまま「はい」を選択します。
  

14.ネットワークデバイス、ホスト名などを設定し、「次へ」を選択します。
  

15.地域を選択し、「次へ」を選択します。
  

16.rootのパスワードを設定し、「次へ」を選択します。
  

17.ソフトウエアのインストール設定をし、「次へ」を選択します。
 ここでは、今すぐカスタマイズするを選択しました。
  

18.詳細なアプリケーションを選択します。
  

19.インストールに必要な設定が終わりましたので、インストールを開始します。
  

20.インストールの途中の画面です。
  

21.「再起動」をするとインストールが完了します。
  

22.ログイン画面
  

<Hyper-V 2.0統合サービスのインストール>
 「CentOS5.3 に Hyper-V 2.0統合サービスをインストールしました。」に従って、インストールします。

2011年1月19日に開催された Tech Fielders セミナー のライトニングトークに参加してきました。

セミナーのテーマが「第2 回 あらためて Hyper-V & 少しクラウド」であったので、
仮想ハードディスクについて発表しました。

・仮想ハードディスク(VHD)のあれこれ
・VHDブート環境で失敗しないために

発表に使った資料はTech Fielders セミナーのサイトで公開されています。
 http://www.microsoft.com/japan/powerpro/TF/seminar/LT/default.mspx

次は何のネタを発表しようかな。
今から、ネタ集めです。