本文说明如何在 Azure 中上传自定义的虚拟硬盘 (VHD) 或复制现有 VHD,并从自定义磁盘创建 Linux 虚拟机 (VM)。 可以根据要求安装并配置 Linux 分发版,并使用该 VHD 快速创建新的 Azure 虚拟机。

如果想要从自定义磁盘创建多个 VM,则应该从 VM 或 VHD 创建映像。 有关详细信息,请参阅使用 CLI 创建 Azure VM 的自定义映像

可以使用两个选项:

快速命令

Note

在 Azure 中国区使用 Azure CLI 2.0 之前,请先运行 az cloud set -n AzureChinaCloud 来改变云环境。如果想切回国际版 Azure,请再次运行 az cloud set -n AzureCloud

使用 az vm create 从自定义或专用的磁盘创建新 VM 时,请附加该磁盘 (--attach-os-disk),而不要指定自定义映像或 Marketplace 映像 (--image)。 以下示例使用从自定义 VHD 创建的、名为 myManagedDisk 的托管磁盘,创建名为 myVM 的 VM:

Azure CLI复制
az vm create --resource-group myResourceGroup --location chinaeast --name myVM \
--os-type linux --attach-os-disk myManagedDisk

要求

若要完成以下步骤,需要:

  • 已准备好在 Azure 中使用的 Linux 虚拟机。 本文的准备 VM 部分介绍了如何查找有关安装 Azure Linux 代理 (waagent) 的特定于分发版的信息。要使 VM 在 Azure 中正常工作,以及要通过 SSH 连接到 VM,需要用到该代理。
  • 用于将 Azure 认可的 Linux 分发版(或参阅关于未认可分发版的信息)安装到采用 VHD 格式的虚拟磁盘的 VHD 文件。 可使用多种工具创建 VM 和 VHD:

Note

Azure 不支持更新的 VHDX 格式。 创建 VM 时,请将 VHD 指定为映像格式。 如果需要,可以使用 qemu-img convert 或 Convert-VHD PowerShell cmdlet 将 VHDX 磁盘转换为 VHD。 此外,Azure 不支持上传动态 VHD,因此,上传之前,需要将此类磁盘转换为静态 VHD。 可以使用 Azure VHD Utilities for GO 等工具在上传到 Azure 的过程中转换动态磁盘。

在以下示例中,请将示例参数名称替换成自己的值。 示例参数名称包括 myResourceGroupmystorageaccount 和 mydisks

准备 VM

Azure 支持各种 Linux 分发(请参阅认可的分发)。 以下文章指导用户准备 Azure 上支持的各种 Linux 分发版:

另请参阅 Linux 安装说明,获取更多有关如何为 Azure 准备 Linux 映像的一般提示。

Note

只有在使用某个认可的分发的时候也使用 Azure 认可的分发中的 Linux 中“支持的版本”下指定的配置详细信息时,Azure 平台 SLA 才适用于运行 Linux 的 VM。

选项 1:上传 VHD

可以上传本地计算机上运行的或者从另一个云导出的自定义 VHD。 若要使用 VHD 创建新的 Azure VM,需要将 VHD 上传到存储帐户,并从该 VHD 创建托管磁盘。

创建资源组

在上传自定义磁盘和创建 VM 之前,首先需要使用 az group create 创建一个资源组。

以下示例在 chinaeast 位置创建名为 myResourceGroup 的资源组:Azure 托管磁盘概述

Azure CLI复制
az group create \
--name myResourceGroup \
--location chinaeast

创建存储帐户

可以使用 az storage account create为自定义磁盘和 VM 创建存储帐户。

以下示例在前面创建的资源组中创建名为 mystorageaccount 的存储帐户:

Azure CLI复制
az storage account create \
--resource-group myResourceGroup \
--location chinaeast \
--name mystorageaccount \
--kind Storage \
--sku Standard_LRS

列出存储帐户密钥

Azure 为每个存储帐户生成两个 512 位的访问密钥。 在向存储帐户进行身份验证以执行操作(例如执行写入操作)时,会使用这些访问密钥。 从此处了解有关管理对存储的访问的详细信息。 可以使用 az storage account keys list查看访问密钥。

查看创建的存储帐户的访问密钥:

Azure CLI复制
az storage account keys list \
--resource-group myResourceGroup \
--account-name mystorageaccount

输出类似于:

Azure CLI复制
info:    Executing command storage account keys list
+ Getting storage account keys
data: Name Key Permissions
data: ---- ---------------------------------------------------------------------------------------- -----------
data: key1 d4XAvZzlGAgWdvhlWfkZ9q4k9bYZkXkuPCJ15NTsQOeDeowCDAdB80r9zA/tUINApdSGQ94H9zkszYyxpe8erw== Full
data: key2 Ww0T7g4UyYLaBnLYcxIOTVziGAAHvU+wpwuPvK4ZG0CDFwu/mAxS/YYvAQGHocq1w7/3HcalbnfxtFdqoXOw8g== Full
info: storage account keys list command OK

记下 key1,因为在后续步骤中需要使用它来与存储帐户交互。

创建存储容器

在存储帐户中创建用于整理磁盘的容器的方式,与创建各种目录以便有条理地整理本地文件系统的方式相同。 一个存储帐户可以包含任意数目的容器。 可以使用 az storage container create 创建容器。

以下示例创建名为 mydisks 的容器:

Azure CLI复制
az storage container create \
--account-name mystorageaccount \
--name mydisks

上传 VHD

现在,使用 az storage blob upload上传自定义磁盘。 可以页 Blob 的形式上传和存储自定义磁盘。

指定访问密钥、在上一步中创建的容器,以及自定义磁盘在本地计算机上的路径:

Azure CLI复制
az storage blob upload --account-name mystorageaccount \
--account-key key1 \
--container-name mydisks \
--type page \
--file /path/to/disk/mydisk.vhd \
--name myDisk.vhd

上传 VHD 可能需要一些时间。

创建托管磁盘

使用 az disk create 从 VHD 创建托管磁盘。 以下示例从已上传到命名存储帐户和容器的 VHD 创建名为 myManagedDisk 的托管磁盘:

Azure CLI复制
az disk create \
--resource-group myResourceGroup \
--name myManagedDisk \
--source https://mystorageaccount.blob.core.chinacloudapi.cn/mydisks/myDisk.vhd

选项 2:复制现有 VM

也可以在 Azure 中创建自定义的 VM,并复制 OS 磁盘并将其附加到新 VM 以创建另一个副本。 这种做法在测试中不会有任何问题,但若要将现有 Azure VM 作为多个新 VM 的模型,则必须改为创建映像。 有关从现有 Azure VM 创建映像的详细信息,请参阅使用 CLI 创建 Azure VM 的自定义映像

创建快照

此示例在资源组 myResourceGroup 中创建名为 myVM 的 VM 的快照,并创建名为 osDiskSnapshot 的快照。

azure-cli复制
osDiskId=$(az vm show -g myResourceGroup -n myVM --query "storageProfile.osDisk.managedDisk.id" -o tsv)
az snapshot create \
-g myResourceGroup \
--source "$osDiskId" \
--name osDiskSnapshot

创建托管磁盘

从快照创建新的托管磁盘。

获取快照的 ID。 在此示例中,快照名为 osDiskSnapshot,位于 myResourceGroup 资源组中。

azure-cli复制
snapshotId=$(az snapshot show --name osDiskSnapshot --resource-group myResourceGroup --query [id] -o tsv)

创建托管磁盘。 在此示例中,我们会在标准存储中从快照创建大小为 128GB、名为 myManagedDisk 的托管磁盘。

azure-cli复制
az disk create \
--resource-group myResourceGroup \
--name myManagedDisk \
--sku Standard_LRS \
--size-gb 128 \
--source $snapshotId

创建 VM

现在,使用 az vm create 创建 VM,并将托管磁盘附加为 OS 磁盘 (--attach-os-disk)。 以下示例使用基于上传的 VHD 创建的托管磁盘创建名为 myNewVM 的 VM:

Azure CLI复制
az vm create \
--resource-group myResourceGroup \
--location chinaeast \
--name myNewVM \
--os-type linux \
--attach-os-disk myManagedDisk

现在,应该可以使用凭据通过 SSH 从源 VM 连接到该 VM。

后续步骤

准备好并上传自定义虚拟磁盘之后,可以阅读有关使用 Resource Manager 和模板的详细信息。 可能还需要向新 VM 添加数据磁盘。 如果需要访问在 VM 上运行的应用程序,请务必打开端口和终结点。立即访问http://market.azure.cn

使用 Azure CLI 2.0 从自定义磁盘创建 Linux VM的更多相关文章

  1. 如何使用@vue/cli 3.0在npm上创建,发布和使用你自己的Vue.js组件库

    译者按: 你可能npm人家的包过成千上万次,但你是否有创建,发布和使用过自己的npm包? 原文: How to create, publish and use your own VueJS Compo ...

  2. 从专用磁盘创建 Windows VM

    通过使用 Powershell 将专用托管磁盘附加为 OS 磁盘来创建新 VM. 专用磁盘是保留原始 VM 中的用户帐户.应用程序和其他状态数据的现有 VM 中虚拟硬盘 (VHD) 的副本. 使用专用 ...

  3. 【Microsoft Azure 的1024种玩法】五、基于Azure Cloud Shell 一站式创建Linux VM

    [文章简介] Azure Cloud Shell 是一个用于管理 Azure 资源的.可通过浏览器访问的交互式经验证 shell. 它使用户能够灵活选择最适合自己工作方式的 shell 体验,无论是 ...

  4. Azure CLI 2.0-Azure新命令行工具介绍

    Azure CLI 2.0 是 Azure 的新命令行体验,用于管理 Azure 资源. 可以将其安装在 macOS.Linux 和 Windows 上,然后从命令行运行它. Azure CLI 2. ...

  5. 使用 Azure CLI 管理 Azure 磁盘

    Azure 虚拟机使用磁盘来存储 VM 操作系统.应用程序和数据. 创建 VM 时,请务必选择适用于所需工作负荷的磁盘大小和配置. 本教程介绍如何部署和管理 VM 磁盘. 学习内容: OS 磁盘和临时 ...

  6. 使用 Azure CLI 创建和管理 Linux VM

    Azure 虚拟机提供完全可配置的灵活计算环境. 本教程介绍 Azure 虚拟机的基本部署项目,例如选择 VM 大小.选择 VM 映像和部署 VM. 你将学习如何执行以下操作: 创建并连接到 VM 选 ...

  7. 使用 Azure CLI 创建 Windows 虚拟机

    Azure CLI 用于从命令行或脚本创建和管理 Azure 资源. 本指南详细介绍如何使用 Azure CLI 部署运行 Windows Server 2016 的虚拟机. 部署完成后,我们连接到服 ...

  8. 使用 Azure CLI 管理 Azure 虚拟网络和 Linux 虚拟机

    Azure 虚拟机使用 Azure 网络进行内部和外部网络通信. 本教程将指导读者部署两个虚拟机,并为这些 VM 配置 Azure 网络. 本教程中的示例假设 VM 将要托管包含数据库后端的 Web ...

  9. 使用 Azure CLI 创建 Linux 虚拟机

    Azure CLI 用于从命令行或脚本创建和管理 Azure 资源. 本指南详细介绍了如何使用 Azure CLI 部署运行 Ubuntu 服务器的虚拟机. 服务器部署以后,将创建 SSH 连接,并且 ...

随机推荐

  1. POJ 2253 Frogger ,poj3660Cow Contest(判断绝对顺序)(最短路,floyed)

    POJ 2253 Frogger题目意思就是求所有路径中最大路径中的最小值. #include<iostream> #include<cstdio> #include<s ...

  2. maven打包时跳过测试类

    记录 修改pom.xml文件 <project> [...] <build> <plugins> <plugin> <groupId>org ...

  3. 浅谈C#.NET防止SQL注入式攻击

    1#region 防止sql注入式攻击(可用于UI层控制)  2  3///   4/// 判断字符串中是否有SQL攻击代码  5///   6/// 传入用户提交数据  7/// true-安全:f ...

  4. 使用jsp完成商品列表的动态显示

    1数据库准备工作 1创建数据库 2 创建product表 代码如下: CREATE TABLE `product` ( `pid` ) NOT NULL, `pname` ) DEFAULT NULL ...

  5. Windows x64 栈帧结构

    0x01 前言 Windows 64位下函数调用约定变为了快速调用约定,前4个参数采用rcx.rdx.r8.r9传递,多余的参数从右向左依次使用堆栈传递.本次文章是对于Windows 64位下函数调用 ...

  6. SQL Developer 改成英文

  7. Hibernate HQL多表查询

    1.内连接和迫切内连接 (1)内连接 HQL语句:from 实体类名 实体类别名 inner join 实体类别名.表示另一个表数据的集合名称 (2)迫切内连接 HQL语句:from 实体类名 实体类 ...

  8. win10中VirtualBox联网设置

    <分享>关于win10操作系统中VirtualBox无法桥接的解决方法 版权声明:本文为博主原创文章,未经博主允许不得转载. 升级win10,本来是一件很好的事,想好好体验一下新版本的感觉 ...

  9. 使用webgl(three.js)创建3D机房(升级版)-普通机房

    序: 目前市面上的数据中心主要分两大类,一类属于普通数据中心,机柜按照XY轴 有序排放,一类属于微模块集合的数据中心,多个机柜组合而成的微模块.  本节课主要详细讲解普通数据中心的可视化展示,浏览器直 ...

  10. vue.js开发之开关(switch)组件

    最近开发组件的时候,自定义开发了开关(switch)组件,现将代码整理如下,方便日后复用. toggle-switch.vue <template> <label role=&quo ...