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