PowerShell を使用して、特殊化されたアンマネージド ディスクを OS ディスクとして接続して、新しい VM を作成します。 特殊化されたディスクは、元の VM のユーザー アカウント、アプリケーション、およびその他の状態データを保持する既存の VM からの VHD のコピーです。
次の 2 つのオプションがあります。
オプション 1: 特殊化された VHD をアップロードする
HYPER-V などのオンプレミスの仮想化ツールで作成された特殊な VM から VHD をアップロードするか、別のクラウドからエクスポートされた VM から VHD をアップロードできます。
VM を準備する
オンプレミスの VM または別のクラウドからエクスポートされた VHD を使用して作成された特殊化された VHD をアップロードできます。 特殊化された VHD では、元の VM のユーザー アカウント、アプリケーション、およびその他の状態データが保持されます。 VHD as-is を使用して新しい VM を作成する場合は、次の手順が完了していることを確認します。
- AzureにアップロードするためのWindows VHDを準備します。 Sysprep を使用して VM を一般化しないでください。
- VM にインストールされているゲスト仮想化ツールとエージェント (VMware ツールなど) をすべて削除します。
- VM が DHCP 経由で IP アドレスと DNS 設定をプルするように構成されていることを確認します。 これにより、サーバーが起動時に VNet 内の IP アドレスを取得できるようになります。
ストレージ アカウントを取得する
アップロードした VM イメージを格納するには、Azure にストレージ アカウントが必要です。 既存のストレージ アカウントを選択することも、新しいストレージ アカウントを作成することもできます。
使用可能なストレージ アカウントを表示するには、次のように入力します。
Get-AzStorageAccount
既存のストレージ アカウントを使用する場合は、「VM イメージのアップロード」セクションに進みます。
ストレージ アカウントを作成する必要がある場合は、次の手順に従います。
ストレージ アカウントを作成するリソース グループの名前が必要です。 サブスクリプション内のすべてのリソース グループを確認するには、次のように入力します。
Get-AzResourceGroup西米国リージョンにmyResourceGroupという名前のリソースグループを作成するには、次のコマンドを入力します。
New-AzResourceGroup -Name myResourceGroup -Location "West US"New-AzStorageAccount #C3 コマンドレットを使用して、このリソース グループに「mystorageaccount」という名前のストレージ アカウントを作成します。
New-AzStorageAccount -ResourceGroupName myResourceGroup -Name mystorageaccount -Location "West US" ` -SkuName "Standard_LRS" -Kind "Storage"
ストレージ アカウントに VHD をアップロードする
Add-AzVhd コマンドレットを使用して、ストレージアカウント内のコンテナーにイメージをアップロードします。 この例では、myVHD.vhd ファイルを "C:\Users\Public\Documents\Virtual hard disks\" から、myResourceGroup リソース グループ内のmystorageaccountという名前のストレージ アカウントにアップロードします。 ファイルは mycontainer #C1 #B0 名前のコンテナーに配置され、新しいファイル名は myUploadedVHD.vhd #A3 #B2 されます。
$rgName = "myResourceGroup"
$urlOfUploadedImageVhd = "https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd"
Add-AzVhd -ResourceGroupName $rgName -Destination $urlOfUploadedImageVhd `
-LocalFilePath "C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd"
成功した場合は、次のような応答が返されます。
MD5 hash is being calculated for the file C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd.
MD5 hash calculation is completed.
Elapsed time for the operation: 00:03:35
Creating new page blob of size 53687091712...
Elapsed time for upload: 01:12:49
LocalFilePath DestinationUri
------------- --------------
C:\Users\Public\Doc... https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd
ネットワーク接続と VHD ファイルのサイズによっては、このコマンドが完了するまでに時間がかかる場合があります。
オプション 2: 既存の Azure VM から VHD をコピーする
新しい重複する VM を作成するときに使用する別のストレージ アカウントに VHD をコピーできます。
開始する前に
次のことを確認してください。
- ソース ストレージ アカウントと移行先ストレージ アカウントに関する情報を用意します。 ソース VM の場合は、ストレージ アカウントとコンテナー名が必要です。 通常、コンテナー名は vhd になります。 また、宛先ストレージ アカウントも必要です。 まだお持ちでない場合は、ポータル (すべてのサービス> ストレージ アカウント > 追加) または New-AzStorageAccount コマンドレットを使用して作成できます。
- AzCopy ツールをダウンロードしてインストールしました。
VM の割り当てを解除する
VM の割り当てを解除して、コピー可能な状態に VHD を解放します。
- ポータル: 仮想マシン>myVM> を停止するをクリックします。
- Powershell: Stop-AzVM を使用して、リソース グループ myResourceGroup 内の myVM という名前の VM を停止 (割り当て解除) します。
Stop-AzVM -ResourceGroupName myResourceGroup -Name myVM
Azure portal の VM の 状態 は、停止 から Stopped (割り当て解除済み)に変わります。
ストレージ アカウントの URL を取得する
ソース ストレージ アカウントと移行先ストレージ アカウントの URL が必要です。 URL は次のようになります: https://<storageaccount>.blob.core.windows.net/<containerName>/。 ストレージ アカウントとコンテナー名が既にわかっている場合は、角かっこの間の情報を置き換えて URL を作成できます。
Azure portal または Azure Powershell を使用して URL を取得できます。
- ポータル: >で>をクリックし、ストレージ アカウント>ストレージ アカウント>Blobsに進んでから、ソース VHD ファイルが vhds コンテナー内にある可能性があります。 コンテナーの [プロパティ ] をクリックし、 URL というラベルが付いたテキストをコピーします。 ソース コンテナーと移行先コンテナーの両方の URL が必要です。
- Powershell: Get-AzVM を使用して、リソース グループ myResourceGroup 内の myVM という名前の VM の情報を取得します。 結果で、[ ストレージ プロファイル ] セクションで Vhd Uri を探します。 URI の最初の部分はコンテナーの URL であり、最後の部分は VM の OS VHD 名です。
Get-AzVM -ResourceGroupName "myResourceGroup" -Name "myVM"
ストレージ アクセス キーを取得する
ソース ストレージ アカウントと移行先ストレージ アカウントのアクセス キーを検索します。 アクセス キーの詳細については、「 Azure ストレージ アカウントについて」を参照してください。
- ポータル: [ すべてのサービス>アカウント>ストレージ アカウント>アクセス キー] をクリックします。 key1 というラベルの付いたキーをコピーします。
- Powershell: Get-AzStorageAccountKey を使用して、リソース グループ myResourceGroup のストレージ アカウント mystorageaccount のストレージ キーを取得します。 key1 というラベルの付いたキーをコピーします。
Get-AzStorageAccountKey -Name mystorageaccount -ResourceGroupName myResourceGroup
VHD をコピーする
AzCopy を使用して、ストレージ アカウント間でファイルをコピーできます。 宛先コンテナーの場合、指定したコンテナーが存在しない場合は、自動的に作成されます。
AzCopy を使用するには、ローカル コンピューターでコマンド プロンプトを開き、AzCopy がインストールされているフォルダーに移動します。 C:\Program Files (x86)\Microsoft SDK\Azure\AzCopy に似ています。
コンテナー内のすべてのファイルをコピーするには、 /S スイッチを使用します。 これは、OS VHD とすべてのデータ ディスクが同じコンテナー内にある場合にコピーするために使用できます。 この例では、ストレージ アカウント mysourcestorageaccount のコンテナー mysourcecontainer 内のすべてのファイルを、mydestinationstorageaccount ストレージ アカウントのコンテナー mydestinationcontainer にコピーする方法を示します。 ストレージ アカウントとコンテナーの名前を独自の名前に置き換えます。
<sourceStorageAccountKey1>と<destinationStorageAccountKey1>を独自のキーに置き換えます。
AzCopy /Source:https://mysourcestorageaccount.blob.core.windows.net/mysourcecontainer `
/Dest:https://mydestinationatorageaccount.blob.core.windows.net/mydestinationcontainer `
/SourceKey:<sourceStorageAccountKey1> /DestKey:<destinationStorageAccountKey1> /S
複数のファイルを含むコンテナー内の特定の VHD のみをコピーする場合は、/Pattern スイッチを使用してファイル名を指定することもできます。 この例では、 myFileName.vhd という名前のファイルのみがコピーされます。
AzCopy /Source:https://mysourcestorageaccount.blob.core.windows.net/mysourcecontainer `
/Dest:https://mydestinationatorageaccount.blob.core.windows.net/mydestinationcontainer `
/SourceKey:<sourceStorageAccountKey1> /DestKey:<destinationStorageAccountKey1> `
/Pattern:myFileName.vhd
完了すると、次のようなメッセージが表示されます。
Finished 2 of total 2 file(s).
[2016/10/07 17:37:41] Transfer summary:
-----------------
Total files transferred: 2
Transfer successfully: 2
Transfer skipped: 0
Transfer failed: 0
Elapsed time: 00.00:13:07
トラブルシューティング
- AZCopy を使用するときに、"サーバーが要求の認証に失敗しました" というエラーが表示された場合は、Authorization ヘッダーの値が署名を含めて正しく形成されていることを確認します。 キー 2 またはセカンダリ ストレージ キーを使用している場合は、プライマリまたは第 1 のストレージ キーを使用してみてください。
新しい VM を作成する
新しい VM で使用するネットワークやその他の VM リソースを作成する必要があります。
サブネットと vNet を作成する
仮想ネットワークの vNet とサブネットを作成します。
サブネットを作成します。 この例では、リソース グループ myResourceGroup に mySubNet という名前のサブネットを作成し、サブネット アドレス プレフィックスを 10.0.0.0/24 に設定します。
$rgName = "myResourceGroup" $subnetName = "mySubNet" $singleSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24vNet を作成します。 次の使用例は、仮想ネットワーク名を myVnetName、場所を 米国西部、仮想ネットワークのアドレス プレフィックスを 10.0.0.0/16 に設定します。
$location = "West US" $vnetName = "myVnetName" $vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location ` -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnetネットワーク セキュリティ グループと RDP 規則を作成する
RDP を使用して VM にログインできるようにするには、ポート 3389 での RDP アクセスを許可するセキュリティ規則が必要です。 新しい VM の VHD は既存の特殊化された VM から作成されているため、VM の作成後に、RDP を使用してログオンするアクセス許可を持つソース仮想マシンの既存のアカウントを使用できます。 これは、関連付けるネットワーク インターフェイスを作成する前に完了する必要があります。
この例では、NSG 名を myNsg に設定し、RDP ルール名を myRdpRule に設定します。
$nsgName = "myNsg"
$rdpRule = New-AzNetworkSecurityRuleConfig -Name myRdpRule -Description "Allow RDP" `
-Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `
-SourceAddressPrefix Internet -SourcePortRange * `
-DestinationAddressPrefix * -DestinationPortRange 3389
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $rgName -Location $location `
-Name $nsgName -SecurityRules $rdpRule
エンドポイントと NSG ルールの詳細については、「 PowerShell を使用して Azure で VM へのポートを開く」を参照してください。
パブリック IP アドレスと NIC を作成する
仮想ネットワーク内の仮想マシンとの通信を有効にするには、パブリック IP アドレス とネットワーク インターフェイスが必要です。
パブリック IP を作成します。 この例では、パブリック IP アドレス名が myIP に設定されています。
$ipName = "myIP" $pip = New-AzPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location ` -AllocationMethod DynamicNIC を作成します。 この例では、NIC 名が myNicName に設定されています。 この手順では、先ほど作成したネットワーク セキュリティ グループもこの NIC に関連付けます。
$nicName = "myNicName" $nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgName ` -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
VM の名前とサイズを設定する
この例では、VM 名を "myVM" に設定し、VM サイズを "Standard_A2" に設定します。
$vmName = "myVM"
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize "Standard_A2"
NIC を追加する
$vm = Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id
OS ディスクを構成する
アップロードまたはコピーした VHD の URI を設定します。 この例では、myOsDisk.vhd という名前の VHD ファイルは、myContainer という名前のコンテナー内の myStorageAccount という名前のストレージ アカウントに保持されます。
$osDiskUri = "https://myStorageAccount.blob.core.windows.net/myContainer/myOsDisk.vhd"OS ディスクを追加します。 この例では、OS ディスクが作成されるときに、VM 名に "osDisk" という用語が追加され、OS ディスク名が作成されます。 この例では、この Windows ベースの VHD を OS ディスクとして VM に接続することも指定します。
$osDiskName = $vmName + "osDisk" $vm = Set-AzVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -CreateOption attach -Windows
省略可能: VM に接続する必要があるデータ ディスクがある場合は、データ VHD の URL と適切な論理ユニット番号 (Lun) を使用してデータ ディスクを追加します。
$dataDiskName = $vmName + "dataDisk"
$vm = Add-AzVMDataDisk -VM $vm -Name $dataDiskName -VhdUri $dataDiskUri -Lun 1 -CreateOption attach
ストレージ アカウントを使用する場合、データとオペレーティング システムのディスク URL は次のようになります: https://StorageAccountName.blob.core.windows.net/BlobContainerName/DiskName.vhd。 これは、ターゲット ストレージ コンテナーを参照し、コピーされたオペレーティング システムまたはデータ VHD をクリックし、URL の内容をコピーすることで、ポータルで確認できます。
VM を完了する
先ほど作成した構成を使用して VM を作成します。
#Create the new VM
New-AzVM -ResourceGroupName $rgName -Location $location -VM $vm
このコマンドが成功した場合、次のような出力が表示されます。
RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
True OK OK
VM が作成されたことを確認する
新しく作成された VM は、 Azure portal、 すべてのサービス>仮想マシン、または次の PowerShell コマンドを使用して表示されます。
$vmList = Get-AzVM -ResourceGroupName $rgName
$vmList.Name
次のステップ
新しい仮想マシンにサインインします。 詳細については、「 Windows を実行している Azure 仮想マシンに接続してログオンする方法」を参照してください。