本文說明如何在 Azure 中上傳自定義的虛擬硬盤 (VHD) 或復(fù)制現(xiàn)有 VHD,并從自定義磁盤創(chuàng)建 Linux 虛擬機(jī) (VM)。 可以根據(jù)要求安裝并配置 Linux 分發(fā)版,并使用該 VHD 快速創(chuàng)建新的 Azure 虛擬機(jī)。
如果想要從自定義磁盤創(chuàng)建多個(gè) VM,則應(yīng)該從 VM 或 VHD 創(chuàng)建映像。 有關(guān)詳細(xì)信息,請參閱使用 CLI 創(chuàng)建 Azure VM 的自定義映像。
可以使用兩個(gè)選項(xiàng):
快速命令
Note
在 Azure 中國區(qū)使用 Azure CLI 2.0 之前,請先運(yùn)行az cloud set -n AzureChinaCloud來改變云環(huán)境。如果想切回國際版 Azure,請?jiān)俅芜\(yùn)行az cloud set -n AzureCloud。
使用az vm create從自定義或?qū)S玫拇疟P創(chuàng)建新 VM 時(shí),請附加該磁盤 (--attach-os-disk),而不要指定自定義映像或 Marketplace 映像 (--image)。 以下示例使用從自定義 VHD 創(chuàng)建的、名為myManagedDisk的托管磁盤,創(chuàng)建名為myVM的 VM:
Azure CLI復(fù)制
azvmcreate--resource-groupmyResourceGroup--locationchinaeast--namemyVM \--os-typelinux--attach-os-diskmyManagedDisk
要求
若要完成以下步驟,需要:
已準(zhǔn)備好在 Azure 中使用的 Linux 虛擬機(jī)。 本文的準(zhǔn)備 VM部分介紹了如何查找有關(guān)安裝 Azure Linux 代理 (waagent) 的特定于分發(fā)版的信息。要使 VM 在 Azure 中正常工作,以及要通過 SSH 連接到 VM,需要用到該代理。
用于將Azure 認(rèn)可的 Linux 分發(fā)版(或參閱關(guān)于未認(rèn)可分發(fā)版的信息)安裝到采用 VHD 格式的虛擬磁盤的 VHD 文件。 可使用多種工具創(chuàng)建 VM 和 VHD:
安裝并配置QEMU或KVM,并注意使用 VHD 作為映像格式。 如果需要,可以使用qemu-img convert轉(zhuǎn)換映像。
也可以在Windows 10或Windows Server 2012/2012 R2上使用 Hyper-V。
Note
Azure 不支持更新的 VHDX 格式。 創(chuàng)建 VM 時(shí),請將 VHD 指定為映像格式。 如果需要,可以使用qemu-img convert或Convert-VHDPowerShell cmdlet 將 VHDX 磁盤轉(zhuǎn)換為 VHD。 此外,Azure 不支持上傳動(dòng)態(tài) VHD,因此,上傳之前,需要將此類磁盤轉(zhuǎn)換為靜態(tài) VHD。 可以使用Azure VHD Utilities for GO等工具在上傳到 Azure 的過程中轉(zhuǎn)換動(dòng)態(tài)磁盤。
確保已安裝了最新的Azure CLI 2.0并已使用az login登錄到 Azure 帳戶。
在以下示例中,請將示例參數(shù)名稱替換成自己的值。 示例參數(shù)名稱包括myResourceGroup、mystorageaccount和mydisks。
準(zhǔn)備 VM
Azure 支持各種 Linux 分發(fā)(請參閱認(rèn)可的分發(fā))。 以下文章指導(dǎo)用戶準(zhǔn)備 Azure 上支持的各種 Linux 分發(fā)版:
另請參閱Linux 安裝說明,獲取更多有關(guān)如何為 Azure 準(zhǔn)備 Linux 映像的一般提示。
Note
只有在使用某個(gè)認(rèn)可的分發(fā)的時(shí)候也使用Azure 認(rèn)可的分發(fā)中的 Linux中“支持的版本”下指定的配置詳細(xì)信息時(shí),Azure 平臺(tái) SLA才適用于運(yùn)行 Linux 的 VM。
選項(xiàng) 1:上傳 VHD
可以上傳本地計(jì)算機(jī)上運(yùn)行的或者從另一個(gè)云導(dǎo)出的自定義 VHD。 若要使用 VHD 創(chuàng)建新的 Azure VM,需要將 VHD 上傳到存儲(chǔ)帳戶,并從該 VHD 創(chuàng)建托管磁盤。
創(chuàng)建資源組
在上傳自定義磁盤和創(chuàng)建 VM 之前,首先需要使用az group create創(chuàng)建一個(gè)資源組。
以下示例在chinaeast位置創(chuàng)建名為myResourceGroup的資源組:Azure 托管磁盤概述
Azure CLI復(fù)制
azgroupcreate\--namemyResourceGroup \--locationchinaeast
創(chuàng)建存儲(chǔ)帳戶
可以使用az storage account create為自定義磁盤和 VM 創(chuàng)建存儲(chǔ)帳戶。
以下示例在前面創(chuàng)建的資源組中創(chuàng)建名為mystorageaccount的存儲(chǔ)帳戶:
Azure CLI復(fù)制
azstorageaccountcreate\--resource-groupmyResourceGroup \--locationchinaeast \--namemystorageaccount \--kindStorage \--skuStandard_LRS
列出存儲(chǔ)帳戶密鑰
Azure 為每個(gè)存儲(chǔ)帳戶生成兩個(gè) 512 位的訪問密鑰。 在向存儲(chǔ)帳戶進(jìn)行身份驗(yàn)證以執(zhí)行操作(例如執(zhí)行寫入操作)時(shí),會(huì)使用這些訪問密鑰。 從此處了解有關(guān)管理對存儲(chǔ)的訪問的詳細(xì)信息。 可以使用az storage account keys list查看訪問密鑰。
查看創(chuàng)建的存儲(chǔ)帳戶的訪問密鑰:
Azure CLI復(fù)制
azstorageaccountkeyslist\--resource-groupmyResourceGroup \--account-namemystorageaccount
輸出類似于:
Azure CLI復(fù)制
info:? ? Executing commandstorageaccountkeyslist+ Gettingstorageaccountkeysdata:? ? Name? Key? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Permissionsdata:-------------------------------------------------------------------------------------------------------data:? ? key1? d4XAvZzlGAgWdvhlWfkZ9q4k9bYZkXkuPCJ15NTsQOeDeowCDAdB80r9zA/tUINApdSGQ94H9zkszYyxpe8erw==? Fulldata:? ? key2? Ww0T7g4UyYLaBnLYcxIOTVziGAAHvU+wpwuPvK4ZG0CDFwu/mAxS/YYvAQGHocq1w7/3HcalbnfxtFdqoXOw8g==? Fullinfo:storageaccountkeyslistcommand OK
記下key1,因?yàn)樵诤罄m(xù)步驟中需要使用它來與存儲(chǔ)帳戶交互。
創(chuàng)建存儲(chǔ)容器
在存儲(chǔ)帳戶中創(chuàng)建用于整理磁盤的容器的方式,與創(chuàng)建各種目錄以便有條理地整理本地文件系統(tǒng)的方式相同。 一個(gè)存儲(chǔ)帳戶可以包含任意數(shù)目的容器。 可以使用az storage container create創(chuàng)建容器。
以下示例創(chuàng)建名為mydisks的容器:
Azure CLI復(fù)制
azstoragecontainercreate\--account-namemystorageaccount \--namemydisks
上傳 VHD
現(xiàn)在,使用az storage blob upload上傳自定義磁盤。 可以頁 Blob 的形式上傳和存儲(chǔ)自定義磁盤。
指定訪問密鑰、在上一步中創(chuàng)建的容器,以及自定義磁盤在本地計(jì)算機(jī)上的路徑:
Azure CLI復(fù)制
azstorageblobupload--account-namemystorageaccount \--account-keykey1 \--container-namemydisks \--typepage \--file/path/to/disk/mydisk.vhd \--namemyDisk.vhd
上傳 VHD 可能需要一些時(shí)間。
創(chuàng)建托管磁盤
使用az disk create從 VHD 創(chuàng)建托管磁盤。 以下示例從已上傳到命名存儲(chǔ)帳戶和容器的 VHD 創(chuàng)建名為myManagedDisk的托管磁盤:
Azure CLI復(fù)制
azdiskcreate\--resource-groupmyResourceGroup \--namemyManagedDisk \--sourcehttps://mystorageaccount.blob.core.chinacloudapi.cn/mydisks/myDisk.vhd
選項(xiàng) 2:復(fù)制現(xiàn)有 VM
也可以在 Azure 中創(chuàng)建自定義的 VM,并復(fù)制 OS 磁盤并將其附加到新 VM 以創(chuàng)建另一個(gè)副本。 這種做法在測試中不會(huì)有任何問題,但若要將現(xiàn)有 Azure VM 作為多個(gè)新 VM 的模型,則必須改為創(chuàng)建映像。 有關(guān)從現(xiàn)有 Azure VM 創(chuàng)建映像的詳細(xì)信息,請參閱使用 CLI 創(chuàng)建 Azure VM 的自定義映像
創(chuàng)建快照
此示例在資源組myResourceGroup中創(chuàng)建名為myVM的 VM 的快照,并創(chuàng)建名為osDiskSnapshot的快照。
azure-cli復(fù)制
osDiskId=$(azvmshow-gmyResourceGroup-nmyVM--query"storageProfile.osDisk.managedDisk.id"-otsv)azsnapshotcreate\-gmyResourceGroup \--source"$osDiskId"\--nameosDiskSnapshot
創(chuàng)建托管磁盤
從快照創(chuàng)建新的托管磁盤。
獲取快照的 ID。 在此示例中,快照名為osDiskSnapshot,位于myResourceGroup資源組中。
azure-cli復(fù)制
snapshotId=$(azsnapshotshow--nameosDiskSnapshot--resource-groupmyResourceGroup--query[id]-otsv)
創(chuàng)建托管磁盤。 在此示例中,我們會(huì)在標(biāo)準(zhǔn)存儲(chǔ)中從快照創(chuàng)建大小為 128GB、名為myManagedDisk的托管磁盤。
azure-cli復(fù)制
az disk create \? ? --resource-group myResourceGroup \--name myManagedDisk \--sku Standard_LRS \--size-gb128\--source $snapshotId
創(chuàng)建 VM
現(xiàn)在,使用az vm create創(chuàng)建 VM,并將托管磁盤附加為 OS 磁盤 (--attach-os-disk)。 以下示例使用基于上傳的 VHD 創(chuàng)建的托管磁盤創(chuàng)建名為myNewVM的 VM:
Azure CLI復(fù)制
azvmcreate\--resource-groupmyResourceGroup \--locationchinaeast \--namemyNewVM \--os-typelinux \--attach-os-diskmyManagedDisk
現(xiàn)在,應(yīng)該可以使用憑據(jù)通過 SSH 從源 VM 連接到該 VM。
后續(xù)步驟
準(zhǔn)備好并上傳自定義虛擬磁盤之后,可以閱讀有關(guān)使用 Resource Manager 和模板的詳細(xì)信息。 可能還需要向新 VM添加數(shù)據(jù)磁盤。 如果需要訪問在 VM 上運(yùn)行的應(yīng)用程序,請務(wù)必打開端口和終結(jié)點(diǎn)。
立即訪問http://market.azure.cn