Создание виртуальной машины на основе специализированного VHD в учетной записи хранения
Создайте виртуальную машину, подключив специализированный неуправляемый диск в качестве диска ОС с помощью PowerShell. Специализированный диск — это копия виртуального жесткого диска виртуальной машины, в которой сохраняются учетные записи пользователей, приложения и другие данные о состоянии исходной виртуальной машины.
Имеются две возможности.
Вариант 1. Передача специализированного VHD
Вы можете передать VHD из специализированной виртуальной машины, созданной с помощью локального средства виртуализации, например, Hyper-V или виртуальная машина, экспортированная из другого облака.
Подготовка виртуальной машины
Вы можете передать специализированный VHD, созданный с помощью локальной виртуальной машины, или VHD, экспортированный из другого облака. На специализированном VHD сохраняются учетные записи пользователей, приложения и другие данные о состоянии исходной виртуальной машины. Если вы планируете использовать виртуальный жесткий диск "как есть" для создания виртуальной машины, то необходимо выполнить следующие действия:
- Подготовьте виртуальный жесткий диск Windows к передаче в Azure. Не выполняйте подготовку виртуальной машины к использованию с помощью Sysprep.
- Удалите все гостевые инструменты и агенты виртуализации, которые установлены на виртуальной машине (т. е. инструменты VMware).
- Убедитесь, что виртуальная машина настроена на получение IP-адреса и параметров DNS через DHCP. Таким образом, сервер будет получать IP-адрес в виртуальной сети при запуске.
Получение учетной записи хранения
Вам необходима учетная запись хранения Azure для хранения переданного образа виртуальной машины. Можно использовать существующую учетную запись хранения или создать новую.
Чтобы отобразить список доступных учетных записей хранения, введите:
Get-AzStorageAccount
Если вы хотите использовать существующую учетную запись хранения, перейдите к разделу "Отправка образа виртуальной машины".
Если требуется создать учетную запись хранения, то выполните описанные ниже действия.
Необходимо указать имя группы ресурсов, в которой будет создана учетная запись хранения. Чтобы найти все группы ресурсов, существующие в вашей подписке, введите:
Get-AzResourceGroup
Чтобы создать группу ресурсов с именем myResourceGroup в регионе Западная часть США, введите:
New-AzResourceGroup -Name myResourceGroup -Location "West US"
С помощью командлета New-AzStorageAccount создайте в этой группе ресурсов учетную запись хранения с именем mystorageaccount:
New-AzStorageAccount -ResourceGroupName myResourceGroup -Name mystorageaccount -Location "West US" ` -SkuName "Standard_LRS" -Kind "Storage"
Передача виртуального жесткого диска в учетную запись хранения
Используйте командлет Add-AzVhd, чтобы передать образ в контейнер в учетной записи хранения. В этом примере файл myVHD.vhd передается из расположения "C:\Users\Public\Documents\Virtual hard disks\"
в учетную запись хранения mystorageaccount, входящую в группу ресурсов myResourceGroup. Файл будет помещен в контейнер с именем mycontainer; новое имя файла — myUploadedVHD.vhd.
$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. Копирование VHD из имеющейся виртуальной машины Azure
Вы можете скопировать VHD в другую учетную запись хранения, чтобы использовать его при создании дублируемых виртуальных машин.
Перед началом
Убедитесь, что выполнены следующие условия.
- У вас есть сведения об исходной и целевой учетных записях хранения. Для исходной виртуальной машины необходимы имена учетной записи хранения и контейнера. Как правило, имя контейнера — vhds. Необходимо также иметь целевую учетную запись хранения. если у вас его еще нет, можно создать его с помощью портала (все службы> служба хранилища учетные записи > ) или с помощью командлета New-азсторажеаккаунт .
- Вы скачали и установили инструмент AzCopy.
Освобождение виртуальной машины
Освободите виртуальную машину, что позволит скопировать VHD.
- Портал: щелкните виртуальные машины>myVM>
- PowerShell. Выполните командлет Stop-AzVM, чтобы остановить виртуальную машину myVM или отменить ее подготовку в группе ресурсов myResourceGroup.
Stop-AzVM -ResourceGroupName myResourceGroup -Name myVM
Состояние виртуальной машины на портале Azure изменится с Остановлено на Остановлено (освобождено) .
Получение URL-адресов учетной записи хранения
Необходимо получить URL-адреса исходной и целевой учетных записей хранения. URL-адреса выглядят следующим образом: https://<storageaccount>.blob.core.windows.net/<containerName>/
. Если вы уже знаете имена учетной записи хранения и контейнера, то можете просто подставить эти данные в скобки, чтобы создать URL-адрес.
Для получения URL-адреса можно использовать портал Azure или Azure PowerShell:
- Портал. Щелкните >Все службы>Учетные записи хранения>учетная запись хранения>Большие двоичные объекты. Ваш исходный VHD-файл скорее всего будет находиться в контейнере vhds. Щелкните Свойства контейнера и скопируйте текст с пометкой URL-адрес. Вам понадобятся URL-адреса исходного и целевого контейнеров.
- PowerShell. Выполните командлет Get-AzVM, чтобы получить сведения о виртуальной машине myVM в группе ресурсов myResourceGroup. В результатах просмотрите раздел Storage profile (Профиль хранилища) и найдите в нем URI VHD. Первая часть URI является URL-адресом контейнера, а последняя часть — именем VHD операционной системы для виртуальной машины.
Get-AzVM -ResourceGroupName "myResourceGroup" -Name "myVM"
Получение ключей доступа к хранилищу
Найдите ключи доступа для исходной и целевой учетных записей хранения. Дополнительные сведения о ключах доступа см. в статье Об учетных записях хранения Azure.
- Портал. Щелкните Все службы>Учетные записи хранения>учетная запись хранения>Ключи доступа. Скопируйте ключ с пометкой key1.
- PowerShell. Выполните командлет Get-AzStorageAccountKey, чтобы получить сведения о ключе к хранилищу данных для учетной записи хранения mystorageaccount в группе ресурсов myResourceGroup. Скопируйте ключ с пометкой key1.
Get-AzStorageAccountKey -Name mystorageaccount -ResourceGroupName myResourceGroup
Копирование виртуального жесткого диска
С помощью AzCopy можно копировать файлы между учетными записями хранения. Если у вас нет указанного целевого контейнера, то он будет создан для вас.
Чтобы воспользоваться AzCopy, откройте окно командной строки на локальном компьютере и перейдите к папке, в которой установлен инструмент AzCopy. Это будет папка вида C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy.
Чтобы скопировать все файлы внутри контейнера, используйте параметр /S. Это действие можно использовать для копирования VHD операционной системы и всех дисков данных, если они находятся в одном контейнере. В этом примере показано, как скопировать все файлы из контейнера mysourcecontainer в учетной записи хранения mysourcestorageaccount в контейнер mydestinationcontainer в учетной записи хранения mydestinationstorageaccount. Замените имена учетных записей хранения и контейнеров своими собственными. Замените ключи <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 отображается сообщение об ошибке "Серверу не удалось проверить подлинность этого запроса", убедитесь, что значение заголовка авторизации составлено правильно (содержит подпись). Если используется ключ key2 или вторичный ключ к хранилищу данных, попробуйте воспользоваться первичным ключом или первым ключом к хранилищу данных.
Создание виртуальной машины
Необходимо создать сетевые ресурсы и другие ресурсы виртуальной машины, которые будет использовать новая виртуальная машина.
Создание виртуальной сети и подсети
Создайте виртуальную сеть и подсеть виртуальной сети.
Создайте подсеть. В этом примере создается подсеть с именем mySubnet в группе ресурсов myResourceGroup и задается префикс адреса подсети 10.0.0.0/24.
$rgName = "myResourceGroup" $subnetName = "mySubNet" $singleSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
Создайте виртуальную сеть. В этом примере задается имя виртуальной сети 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
Чтобы войти на виртуальную машину по протоколу удаленного рабочего стола, необходимо настроить правило безопасности, которое разрешает доступ по этому протоколу через порт 3389. Так как VHD для новой виртуальной машины создан на основе имеющейся специализированной виртуальной машины, то и существующую учетную запись (у которой есть разрешение на вход по протоколу удаленного рабочего стола) можно использовать для обеих этих виртуальных машин. Это нужно сделать до создания сетевого интерфейса, с которым он будет связан.
В этом примере для NSG задается имя myNsg, а для правила протокола удаленного рабочего стола — имя 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 см. в статье Открытие портов для виртуальной машины в Azure с помощью PowerShell.
Создание общедоступного IP-адреса и сетевой карты
Чтобы обеспечить обмен данными с виртуальной машиной в виртуальной сети, требуются общедоступный IP-адрес и сетевой интерфейс.
Создайте общедоступный IP-адрес. В этом примере открытому IP-адресу присвоено имя myIP.
$ipName = "myIP" $pip = New-AzPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location ` -AllocationMethod Dynamic
Создание сетевой карты. В этом примере сетевой карте присвоено имя myNicName. На этом шаге группа безопасности сети, созданная ранее, также связывается с этой сетевой картой.
$nicName = "myNicName" $nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $rgName ` -Location $location -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
Задание имени и размера виртуальной машины
В этом примере для имени виртуальной машины задается значение myVM, а для ее размера — Standard_A2.
$vmName = "myVM"
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize "Standard_A2"
Добавление сетевой карты
$vm = Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id
Настройка диска операционной системы
Задайте универсальный код ресурса (URI) VHD, который вы передали или скопировали. В этом примере VHD-файл myOsDisk.vhd хранится в учетной записи myStorageAccount в контейнере myContainer.
$osDiskUri = "https://myStorageAccount.blob.core.windows.net/myContainer/myOsDisk.vhd"
Добавьте диск операционной системы. В этом примере при создании диска ОС к имени виртуальной машины добавляется термин osDisk, формируя таким образом имя диска ОС. В этом примере также указывается, что этот виртуальный жесткий диск на платформе Windows должен быть подключен к виртуальной машине в качестве диска ОС.
$osDiskName = $vmName + "osDisk" $vm = Set-AzVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -CreateOption attach -Windows
Необязательное действие: при наличии дисков данных, которые необходимо подключить к виртуальной машине, добавьте их, используя 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
. Их можно узнать на портале. Для этого найдите целевой контейнер хранилища, щелкните скопированный виртуальный жесткий диск операционной системы или данных, а затем скопируйте содержимое URL-адреса.
Завершение процесса подготовки виртуальной машины
Создайте виртуальную машину, используя созданную конфигурацию.
#Create the new VM
New-AzVM -ResourceGroupName $rgName -Location $location -VM $vm
Если команда будет выполнена успешно, вы увидите примерно такой результат.
RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
True OK OK
Проверка создания виртуальной машины
Созданная виртуальная машина должна отображаться на портале Azure (выберите Все службы>Виртуальные машины). Ее можно также увидеть, выполнив следующие команды PowerShell.
$vmList = Get-AzVM -ResourceGroupName $rgName
$vmList.Name
Дальнейшие действия
Войдите на свою новую виртуальную машину. Дополнительные сведения см. в статье Как подключиться к виртуальной машине Azure под управлением Windows и войти на нее.