Convert-VHDを使ってVHDXファイルをVHDファイルに変換する

AzureにVMをアップロードするために、
VHDXファイルをVHDに変換したので、作業記録残しておきます。

コマンド自体はとても簡単で以下のような感じです。
可変サイズのVHDXを固定サイズのVHDに変換しています。
引数等の情報はこちら

PS C:\> Convert-VHD –Path c:\test\child1vhdx.vhdx –DestinationPath c:\test\child1vhd.vhd –VHDType Fixed 

今回はこちらのディスクを変換しました。
f:id:yomon8:20140127154041p:plain
SSD環境のデスクトップPCで実施したのですが、
18分程度で完了しました。ご参考までに。



もしかしたらエラーが出るかも

今回使った環境はWindows Server 2012R2だったのですが、Convert-VHDのコマンドが見つかりません。
Hyper-Vのコマンドレットがインストールされてないのかと思いインポートコマンド打ってみると、

Import-Module Hyper-V


以下のようなメッセージが出てきてしまいました。

PS > 
Import-Module : モジュール ディレクトリに有効なモジュール ファイルが見つからなかったため、指定されたモジュール 'Hyper-V
' は読み込まれませんでした。
発生場所 行:1 文字:1
+ Import-Module hyper-v
+ ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (hyper-v:String) [Import-Module], FileNotFoundException
    + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

調べてみると役割と機能の追加からモジュールをインストールしてあげる必要があるみたいでした。
以下のパスからインストールできます。

「機能」
 >「リモートサーバー管理ツール」
  >「役割管理ツール」
   >「Hyper-V管理ツール」
    >「Windows PowerShellHyper-Vモジュール」


モジュールインストール後にチェックしてみると、
しっかりモジュールがインポート可能な状態になっているようです。

PS > Get-Module -ListAvailable | Where-Object{$_.Name -contains "Hyper-V"}


ディレクトリ: C:\Windows\system32\WindowsPowerShell\v1.0\Modules


ModuleType Version Name ExportedCommands

                    • ------- ---- ----------------

Binary 1.1 Hyper-V {Add-VMDvdDrive, Add-VMFibreChannelHba, Add-VMHardDiskDriv...

後はインポートしてあげるだけです。

Import-Module Hyper-V

Azureへのアップロード

Azureへのアップロードですが、こちらのページの2-4に詳しく手順が載っています。
Windows Azure 自習書シリーズ - 仮想マシン (IaaS) 編 | MSDN
VHDの最大サイズは127GBなので、120GBのVHDをアップロードしたみたところ、40分~50分程度でアップロードが終わりました。ネットワーク帯域や作業時間によって数値が違いそうですが、参考までに。

インポートされるコマンドリスト

今回利用した環境で使えるようになったHyper-V管理用のコマンドのリストです。
参考までに挙げておきます。

Add-VMDvdDrive
Add-VMFibreChannelHba
Add-VMHardDiskDrive
Add-VMMigrationNetwork
Add-VMNetworkAdapter
Add-VMNetworkAdapterAcl
Add-VMNetworkAdapterExtendedAcl
Add-VmNetworkAdapterRoutingDomainMapping
Add-VMRemoteFx3dVideoAdapter
Add-VMScsiController
Add-VMStoragePath
Add-VMSwitch
Add-VMSwitchExtensionPortFeature
Add-VMSwitchExtensionSwitchFeature
Checkpoint-VM
Compare-VM
Complete-VMFailover
Connect-VMNetworkAdapter
Connect-VMSan
Convert-VHD
Copy-VMFile
Debug-VM
Disable-VMEventing
Disable-VMIntegrationService
Disable-VMMigration
Disable-VMRemoteFXPhysicalVideoAdapter
Disable-VMResourceMetering
Disable-VMSwitchExtension
Disconnect-VMNetworkAdapter
Disconnect-VMSan
Dismount-VHD
Enable-VMEventing
Enable-VMIntegrationService
Enable-VMMigration
Enable-VMRemoteFXPhysicalVideoAdapter
Enable-VMReplication
Enable-VMResourceMetering
Enable-VMSwitchExtension
Export-VM
Export-VMSnapshot
Get-VHD
Get-VM
Get-VMBios
Get-VMComPort
Get-VMConnectAccess
Get-VMDvdDrive
Get-VMFibreChannelHba
Get-VMFirmware
Get-VMFloppyDiskDrive
Get-VMHardDiskDrive
Get-VMHost
Get-VMHostNumaNode
Get-VMHostNumaNodeStatus
Get-VMIdeController
Get-VMIntegrationService
Get-VMMemory
Get-VMMigrationNetwork
Get-VMNetworkAdapter
Get-VMNetworkAdapterAcl
Get-VMNetworkAdapterExtendedAcl
Get-VMNetworkAdapterFailoverConfiguration
Get-VmNetworkAdapterIsolation
Get-VMNetworkAdapterRoutingDomainMapping
Get-VMNetworkAdapterVlan
Get-VMProcessor
Get-VMRemoteFx3dVideoAdapter
Get-VMRemoteFXPhysicalVideoAdapter
Get-VMReplication
Get-VMReplicationAuthorizationEntry
Get-VMReplicationServer
Get-VMResourcePool
Get-VMSan
Get-VMScsiController
Get-VMSnapshot
Get-VMStoragePath
Get-VMSwitch
Get-VMSwitchExtension
Get-VMSwitchExtensionPortData
Get-VMSwitchExtensionPortFeature
Get-VMSwitchExtensionSwitchData
Get-VMSwitchExtensionSwitchFeature
Get-VMSystemSwitchExtension
Get-VMSystemSwitchExtensionPortFeature
Get-VMSystemSwitchExtensionSwitchFeature
Grant-VMConnectAccess
Import-VM
Import-VMInitialReplication
Measure-VM
Measure-VMReplication
Measure-VMResourcePool
Merge-VHD
Mount-VHD
Move-VM
Move-VMStorage
New-VFD
New-VHD
New-VM
New-VMReplicationAuthorizationEntry
New-VMResourcePool
New-VMSan
New-VMSwitch
Optimize-VHD
Remove-VM
Remove-VMDvdDrive
Remove-VMFibreChannelHba
Remove-VMHardDiskDrive
Remove-VMMigrationNetwork
Remove-VMNetworkAdapter
Remove-VMNetworkAdapterAcl
Remove-VMNetworkAdapterExtendedAcl
Remove-VMNetworkAdapterRoutingDomainMapping
Remove-VMRemoteFx3dVideoAdapter
Remove-VMReplication
Remove-VMReplicationAuthorizationEntry
Remove-VMResourcePool
Remove-VMSan
Remove-VMSavedState
Remove-VMScsiController
Remove-VMSnapshot
Remove-VMStoragePath
Remove-VMSwitch
Remove-VMSwitchExtensionPortFeature
Remove-VMSwitchExtensionSwitchFeature
Rename-VM
Rename-VMNetworkAdapter
Rename-VMResourcePool
Rename-VMSan
Rename-VMSnapshot
Rename-VMSwitch
Repair-VM
Reset-VMReplicationStatistics
Reset-VMResourceMetering
Resize-VHD
Restart-VM
Restore-VMSnapshot
Resume-VM
Resume-VMReplication
Revoke-VMConnectAccess
Save-VM
Set-VHD
Set-VM
Set-VMBios
Set-VMComPort
Set-VMDvdDrive
Set-VMFibreChannelHba
Set-VMFirmware
Set-VMFloppyDiskDrive
Set-VMHardDiskDrive
Set-VMHost
Set-VMMemory
Set-VMMigrationNetwork
Set-VMNetworkAdapter
Set-VMNetworkAdapterFailoverConfiguration
Set-VmNetworkAdapterIsolation
Set-VmNetworkAdapterRoutingDomainMapping
Set-VMNetworkAdapterVlan
Set-VMProcessor
Set-VMRemoteFx3dVideoAdapter
Set-VMReplication
Set-VMReplicationAuthorizationEntry
Set-VMReplicationServer
Set-VMResourcePool
Set-VMSan
Set-VMSwitch
Set-VMSwitchExtensionPortFeature
Set-VMSwitchExtensionSwitchFeature
Start-VM
Start-VMFailover
Start-VMInitialReplication
Stop-VM
Stop-VMFailover
Stop-VMInitialReplication
Stop-VMReplication
Suspend-VM
Suspend-VMReplication
Test-VHD
Test-VMNetworkAdapter
Test-VMReplicationConnection