Azure 虚拟机管理 #

创建虚拟机 #

使用 Azure 门户创建 #

text
┌─────────────────────────────────────────────────────────────┐
│                    创建 VM 步骤                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  步骤 1: 基本信息                                            │
│  ├── 订阅选择                                               │
│  ├── 资源组选择/创建                                        │
│  ├── 虚拟机名称                                             │
│  ├── 区域选择                                               │
│  ├── 可用性选项                                             │
│  ├── 安全类型                                               │
│  ├── 镜像选择                                               │
│  └── 大小选择                                               │
│                                                             │
│  步骤 2: 管理员账户                                          │
│  ├── 用户名                                                 │
│  ├── 密码或 SSH 公钥                                        │
│  └── 登录方式选择                                           │
│                                                             │
│  步骤 3: 入站端口规则                                        │
│  ├── 公共入站端口                                           │
│  └── 选择允许的端口                                         │
│                                                             │
│  步骤 4: 磁盘                                                │
│  ├── OS 磁盘类型                                            │
│  ├── 数据磁盘                                               │
│  └── 加密选项                                               │
│                                                             │
│  步骤 5: 网络                                                │
│  ├── 虚拟网络                                               │
│  ├── 子网                                                   │
│  ├── 公网 IP                                                │
│  └── 网络安全组                                             │
│                                                             │
│  步骤 6: 管理                                                │
│  ├── 自动关闭                                               │
│  ├── 备份                                                   │
│  └── 监控                                                   │
│                                                             │
│  步骤 7: 标签和审阅                                          │
│  ├── 添加标签                                               │
│  └── 验证并创建                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

使用 Azure CLI 创建 #

bash
# 创建资源组
az group create --name myResourceGroup --location eastus

# 创建虚拟机
az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image UbuntuLTS \
  --size Standard_B1s \
  --admin-username azureuser \
  --generate-ssh-keys \
  --public-ip-sku Standard \
  --output json

# 输出示例
{
  "fqdns": "",
  "id": "/subscriptions/.../resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "eastus",
  "macAddress": "00-0D-3A-XX-XX-XX",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "20.185.XX.XX",
  "resourceGroup": "myResourceGroup",
  "zones": ""
}

创建 Windows 虚拟机 #

bash
# 创建 Windows VM
az vm create \
  --resource-group myResourceGroup \
  --name myWindowsVM \
  --image Win2019Datacenter \
  --size Standard_D2s_v3 \
  --admin-username azureuser \
  --admin-password "P@ssw0rd123!" \
  --public-ip-sku Standard

虚拟机生命周期管理 #

启动和停止 #

bash
# 启动虚拟机
az vm start --resource-group myResourceGroup --name myVM

# 停止虚拟机(保留资源,仍计费)
az vm stop --resource-group myResourceGroup --name myVM

# 解除分配(停止计费)
az vm deallocate --resource-group myResourceGroup --name myVM

# 重启虚拟机
az vm restart --resource-group myResourceGroup --name myVM

# 查看虚拟机状态
az vm get-instance-view --resource-group myResourceGroup --name myVM --query "instanceView.statuses[1]" --output table

调整大小 #

bash
# 查看可用大小
az vm list-vm-resize-options --resource-group myResourceGroup --name myVM --output table

# 调整大小(如果当前硬件支持)
az vm resize --resource-group myResourceGroup --name myVM --size Standard_D2s_v3

# 如果需要重新分配
az vm deallocate --resource-group myResourceGroup --name myVM
az vm resize --resource-group myResourceGroup --name myVM --size Standard_D4s_v3
az vm start --resource-group myResourceGroup --name myVM

删除虚拟机 #

bash
# 删除虚拟机
az vm delete --resource-group myResourceGroup --name myVM --yes

# 删除虚拟机及关联资源
az vm delete --resource-group myResourceGroup --name myVM --yes --force-deletion

# 删除整个资源组
az group delete --name myResourceGroup --yes --no-wait

连接虚拟机 #

SSH 连接 Linux VM #

bash
# 使用 SSH 连接
ssh azureuser@<public-ip>

# 指定私钥文件
ssh -i ~/.ssh/mykey.pem azureuser@<public-ip>

# 使用 Azure CLI 连接
az ssh vm --resource-group myResourceGroup --name myVM

RDP 连接 Windows VM #

bash
# 获取 RDP 文件
az vm show --resource-group myResourceGroup --name myWindowsVM --query "id" -o tsv

# 下载 RDP 文件
az vm run-command invoke \
  --resource-group myResourceGroup \
  --name myWindowsVM \
  --command-id RunPowerShellScript \
  --scripts "Get-AzRemoteDesktopFile -ResourceGroupName myResourceGroup -Name myWindowsVM -LocalPath myVM.rdp"

# Windows: 使用 mstsc 连接
# Mac: 使用 Microsoft Remote Desktop

虚拟机扩展 #

扩展概述 #

text
┌─────────────────────────────────────────────────────────────┐
│                    VM 扩展                                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  扩展功能                                                    │
│  ├── 自动化配置                                             │
│  ├── 安装软件                                               │
│  ├── 运行脚本                                               │
│  ├── 监控代理                                               │
│  └── 安全配置                                               │
│                                                             │
│  常用扩展                                                    │
│  ├── CustomScript: 运行自定义脚本                           │
│  ├── VMAccess: 重置密码/SSH                                 │
│  ├── AzureMonitor: 监控代理                                 │
│  ├── DependencyAgent: 依赖映射                              │
│  └── NetworkWatcher: 网络监控                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

使用 CustomScript 扩展 #

bash
# 运行远程脚本
az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --settings '{"fileUris": ["https://example.com/script.sh"]}' \
  --protected-settings '{"commandToExecute": "sh script.sh"}'

# 运行内联脚本
az vm run-command invoke \
  --resource-group myResourceGroup \
  --name myVM \
  --command-id RunShellScript \
  --scripts "sudo apt-get update && sudo apt-get install -y nginx"

重置访问权限 #

bash
# 重置 SSH 密钥
az vm user reset-ssh \
  --resource-group myResourceGroup \
  --name myVM \
  --username azureuser

# 重置密码
az vm user update \
  --resource-group myResourceGroup \
  --name myVM \
  --username azureuser \
  --password "NewP@ssw0rd!"

数据磁盘管理 #

添加数据磁盘 #

bash
# 创建并附加数据磁盘
az vm disk attach \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name myDataDisk \
  --size-gb 128 \
  --sku Premium_LRS

# 附加现有磁盘
az vm disk attach \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --disk /subscriptions/.../disks/myDataDisk

分离数据磁盘 #

bash
# 分离数据磁盘
az vm disk detach \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name myDataDisk

Linux 磁盘初始化 #

bash
# 查看磁盘
lsblk

# 分区
sudo fdisk /dev/sdc
# n (新建分区) -> p (主分区) -> 1 -> 回车 -> 回车 -> w (写入)

# 格式化
sudo mkfs -t ext4 /dev/sdc1

# 挂载
sudo mkdir /data
sudo mount /dev/sdc1 /data

# 永久挂载
echo "/dev/sdc1 /data ext4 defaults,nofail 1 2" | sudo tee -a /etc/fstab

虚拟机监控 #

启用诊断 #

bash
# 启用启动诊断
az vm boot-diagnostics enable \
  --resource-group myResourceGroup \
  --name myVM \
  --storage https://mystorageaccount.blob.core.windows.net/

# 查看启动诊断
az vm boot-diagnostics get-boot-log \
  --resource-group myResourceGroup \
  --name myVM

查看指标 #

bash
# 查看 CPU 使用率
az monitor metrics list \
  --resource /subscriptions/.../virtualMachines/myVM \
  --metric "Percentage CPU" \
  --output table

# 查看网络流量
az monitor metrics list \
  --resource /subscriptions/.../virtualMachines/myVM \
  --metric "Network In" "Network Out" \
  --output table

自动关闭 #

配置自动关闭 #

bash
# 设置自动关闭时间
az vm auto-shutdown \
  --resource-group myResourceGroup \
  --name myVM \
  --time 2000

# 配置关闭通知
az vm auto-shutdown \
  --resource-group myResourceGroup \
  --name myVM \
  --time 2000 \
  --email "admin@example.com"

虚拟机备份 #

Azure Backup #

bash
# 创建恢复服务保管库
az backup vault create \
  --resource-group myResourceGroup \
  --name myRecoveryVault \
  --location eastus

# 启用 VM 备份
az backup protection enable-for-vm \
  --resource-group myResourceGroup \
  --vault-name myRecoveryVault \
  --vm myVM \
  --policy-name DefaultPolicy

# 运行备份
az backup protection backup-now \
  --resource-group myResourceGroup \
  --vault-name myRecoveryVault \
  --container-name "iaasvmcontainerv2;myResourceGroup;myVM" \
  --item-name "myVM" \
  --retain-until 2026-04-30

虚拟机镜像 #

捕获镜像 #

bash
# 解除分配 VM
az vm deallocate --resource-group myResourceGroup --name myVM

# 通用化 VM
az vm generalize --resource-group myResourceGroup --name myVM

# 创建镜像
az image create \
  --resource-group myResourceGroup \
  --name myImage \
  --source myVM

# 从镜像创建新 VM
az vm create \
  --resource-group myResourceGroup \
  --name myNewVM \
  --image /subscriptions/.../images/myImage \
  --size Standard_B1s

最佳实践 #

安全建议 #

text
┌─────────────────────────────────────────────────────────────┐
│                    安全最佳实践                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 网络安全                                                 │
│     ├── 使用 NSG 限制入站流量                               │
│     ├── 避免开放过多端口                                    │
│     └── 使用 Just-In-Time 访问                              │
│                                                             │
│  2. 访问控制                                                 │
│     ├── 使用 SSH 密钥而非密码                               │
│     ├── 使用 Azure AD 登录                                  │
│     └── 禁用 root 登录                                      │
│                                                             │
│  3. 系统更新                                                 │
│     ├── 启用自动更新                                        │
│     ├── 定期安全补丁                                        │
│     └── 使用 Azure Update Manager                           │
│                                                             │
│  4. 数据保护                                                 │
│     ├── 启用磁盘加密                                        │
│     ├── 定期备份                                            │
│     └── 使用 Key Vault 存储机密                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

性能优化 #

text
┌─────────────────────────────────────────────────────────────┐
│                    性能优化建议                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 选择正确的大小                                           │
│     ├── 监控资源使用                                        │
│     ├── 根据负载调整                                        │
│     └── 考虑突发性能                                        │
│                                                             │
│  2. 存储优化                                                 │
│     ├── 使用高级 SSD                                        │
│     ├── 启用磁盘缓存                                        │
│     └── 分离数据和日志磁盘                                  │
│                                                             │
│  3. 网络优化                                                 │
│     ├── 启用加速网络                                        │
│     ├── 使用就近区域                                        │
│     └── 配置 DNS 缓存                                       │
│                                                             │
│  4. 应用优化                                                 │
│     ├── 优化应用配置                                        │
│     ├── 使用负载均衡                                        │
│     └── 启用自动扩展                                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

下一步 #

现在你已经掌握了虚拟机的管理,接下来学习 虚拟机规模集 了解如何实现自动扩展!

最后更新:2026-03-29