Introduction
Azure Virtual Machines fail to start. VMs stuck in starting state, deployment fails, or VM shows failed status.
Symptoms
VM failed:
```bash az vm show -g MyResourceGroup -n MyVM --query "instanceView.statuses"
[ { "code": "ProvisioningState/failed/InternalOperationError", "displayStatus": "Provisioning failed", "message": "Allocation failed." } ] ```
Allocation failure:
Allocation failed. We do not have sufficient capacity for the requested VM size.Deployment failed:
Deployment failed. CorrelationId: xxx-xxx-xxxCommon Causes
- 1.No capacity - Region has no capacity for VM size
- 2.Quota exceeded - Subscription quota limit reached
- 3.VM size unavailable - Size not available in region
- 4.Resource locked - Resource group has lock
- 5.Image issue - VM image not available
- 6.Network issue - Subnet or NSG misconfigured
- 7.Cost limit - Spending limit reached
Step-by-Step Fix
Step 1: Check VM Status
```bash az vm show -g MyResourceGroup -n MyVM --query "instanceView.statuses"
az vm get-instance-view -g MyResourceGroup -n MyVM
az vm list --query "[?name=='MyVM']"
# Check power state: az vm show -g MyResourceGroup -n MyVM --query "powerState" ```
Step 2: Check Allocation Status
```bash az vm deallocate -g MyResourceGroup -n MyVM
az vm start -g MyResourceGroup -n MyVM
# Check activity log: az monitor activity-log list \ --resource-group MyResourceGroup \ --caller $(az account show --query user.name -o tsv) \ --max-events 10 ```
Step 3: Check VM Size Availability
```bash # List available sizes in region: az vm list-sizes --location eastus -o table
# List sizes for specific VM: az vm list-sizes --location eastus --query "[?name=='Standard_D2s_v3']"
# Resize VM: az vm resize -g MyResourceGroup -n MyVM --size Standard_D2s_v3
# Check VM size: az vm show -g MyResourceGroup -n MyVM --query "hardwareProfile.vmSize" ```
Step 4: Check Subscription Quota
```bash # List usage: az vm list-usage --location eastus -o table
# Check specific quota: az vm list-usage --location eastus --query "[?name.value=='standardDSv3Family']"
# Common limits: # - Total Regional vCPUs # - Standard DSv3 Family vCPUs # - Spot vCPUs
# Request quota increase: # Azure Portal -> Subscriptions -> Usage + quotas ```
Step 5: Try Different Region or Zone
```bash # Check available regions: az account list-locations -o table
# Check availability zones: az vm list-skus --location eastus --zone
# Create VM in different zone: az vm create \ --resource-group MyResourceGroup \ --name MyVM \ --image Ubuntu2204 \ --zone 2 ```
Step 6: Check Resource Locks
```bash # List locks: az lock list --resource-group MyResourceGroup
# Delete lock: az lock delete --name MyLock --resource-group MyResourceGroup
# Check for locks: az lock list --query "[?resourceGroup=='MyResourceGroup']" ```
Step 7: Check Disk Issues
```bash # Check disk: az disk show -g MyResourceGroup -n MyDisk
# Check disk state: az disk show -g MyResourceGroup -n MyDisk --query "diskState"
# List VM disks: az vm show -g MyResourceGroup -n MyVM --query "storageProfile"
# Create new disk from snapshot if disk corrupted: az disk create \ --resource-group MyResourceGroup \ --name MyNewDisk \ --source /subscriptions/.../snapshots/MySnapshot ```
Step 8: Check Network Configuration
```bash # Check NIC: az network nic show -g MyResourceGroup -n MyVMNic
# Check NSG: az network nsg show -g MyResourceGroup -n MyNSG
# Check subnet: az network vnet subnet show \ --resource-group MyResourceGroup \ --vnet-name MyVNet \ --name MySubnet
# Check if subnet has address space: az network vnet show -g MyResourceGroup -n MyVNet --query "subnets" ```
Step 9: Check Boot Diagnostics
```bash # Enable boot diagnostics: az vm boot-diagnostics enable \ --resource-group MyResourceGroup \ --name MyVM \ --storage https://mystorage.blob.core.windows.net/
# Get boot diagnostics: az vm boot-diagnostics get-boot-log \ --resource-group MyResourceGroup \ --name MyVM
# Check serial console output: az vm boot-diagnostics get-boot-log-uris \ --resource-group MyResourceGroup \ --name MyVM ```
Step 10: Recreate VM
```bash # Capture VM as image: az vm deallocate -g MyResourceGroup -n MyVM az vm generalize -g MyResourceGroup -n MyVM az image create -g MyResourceGroup -n MyImage --source MyVM
# Create new VM from image: az vm create \ --resource-group MyResourceGroup \ --name MyNewVM \ --image /subscriptions/.../images/MyImage
# Or restore from backup: az backup restore restore-disks \ --resource-group MyResourceGroup \ --vault-name MyVault \ --container-name MyContainer \ --item-name MyVM \ --rp-name MyRecoveryPoint ```
Azure VM Not Starting Checklist
| Check | Command | Expected |
|---|---|---|
| VM status | az vm show | PowerState/running |
| Size availability | az vm list-sizes | Size available |
| Quota | az vm list-usage | Within limits |
| Locks | az lock list | No blocking locks |
| Disk state | az disk show | Attached |
| Boot diagnostics | boot-diagnostics | Check for errors |
Verification
```bash az vm show -g MyResourceGroup -n MyVM --query "instanceView.statuses"
az vm list-sizes --location eastus --query "[?name=='Standard_D2s_v3']"
az vm list-usage --location eastus --query "[?name.value=='standardDSv3Family']"
az vm boot-diagnostics get-boot-log -g MyResourceGroup -n MyVM
ssh user@public-ip ```
Related Issues
- [Fix Azure VM Connection Failed](/articles/fix-azure-vm-connection-failed)
- [Fix AWS EC2 Instance Not Starting](/articles/fix-aws-ec2-instance-not-starting)
- [Fix Azure Resource Group Not Found](/articles/fix-azure-resource-group-not-found)
Related Articles
- [Technical troubleshooting: Fix Azure Aks Pod Crashloopbackoff Issue in Azure](azure-aks-pod-crashloopbackoff)
- [Technical troubleshooting: Fix Azure Api Management Policy Expression Runtime](azure-api-management-policy-expression-runtime-error)
- [Technical troubleshooting: Fix Azure App Configuration Feature Flag Not Refre](azure-app-configuration-feature-flag-not-refreshing)
- [Technical troubleshooting: Fix Azure App Service 503 Always On Disabled Issue](azure-app-service-503-always-on-disabled)
- [Technical troubleshooting: Fix Azure Application Gateway Err SSL Unrecognized](azure-application-gateway-err-ssl-unrecognized-name-alert)
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "TechArticle", "headline": "Fix Azure VM Not Starting", "description": "Troubleshoot Azure VM not starting. Check size, resources, config.", "url": "https://www.fixwikihub.com/fix-azure-vm-not-starting", "publisher": { "@type": "Organization", "name": "FixWikiHub", "url": "https://www.fixwikihub.com" }, "author": { "@type": "Person", "name": "FixWikiHub Editorial Team" }, "datePublished": "2026-04-12T00:45:28.867Z", "dateModified": "2026-04-12T00:45:28.867Z" } </script>