可能只刪除 VM 資源,而不是網路和磁碟資源,視您刪除 VM 的方式而定。 您可以變更刪除 VM 時刪除其他資源的預設設定。
建立 VM 時設定刪除選項
開啟入口網站。
選取 [+ 建立資源]。
在 [ 建立資源] 頁面上的 [虛擬機] 底下,選取 [ 建立]。
在 [基本] 上做出選擇,然後選取 [下一步:磁碟] 以開啟 [磁盘>] 索引標籤。
在 [磁盘選項] 下,OS 磁碟預設會設定為 [使用 VM 刪除]。 如果您不想刪除 OS 磁碟,請清除複選框。 如果您使用現有的 OS 磁碟,預設是刪除 VM 時卸載 OS 磁碟。
在 [數據磁碟] 下,您可以鏈接現有的數據磁碟或建立新的磁碟,並將其連結至 VM。
當您完成新增磁碟資訊時,請選取 [下一步:網络] 以開啟 [網络>] 索引標籤。
在頁面底部,選取 [刪除 VM 時刪除公用 IP 和 NIC]。
當您完成選取時,請選取 [ 檢閱 + 建立]。
您可以確認您在刪除 VM 時選擇刪除的資源。
當您對選取專案感到滿意,且驗證通過時,請選取 [建立 ] 以部署 VM。
若要指定當您刪除 VM 時連結的資源會發生什麼情況,請使用 delete-option
參數。 每個都可以設定為 Delete
,這會在刪除 VM 時永久刪除資源,或 Detach
只中斷鏈接資源,並將其保留在 Azure 中,以便稍後重複使用。 使用 CLI 建立的 VM 的預設值是中斷 OS 磁碟連結。 您 Detach
的資源 (例如磁碟) 會繼續產生適用的費用。
--os-disk-delete-option
- OS 磁碟。
--data-disk-delete-option
- 資料磁碟。
--nic-delete-option
- NIC。
在此範例中,我們會使用名為 myImage 的映像,在名為 myResourceGroup 的資源群組中建立名為 myVM 的 VM,並在刪除 VM 時設定要刪除的 OS 磁碟和 NIC。
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image myImage \
--public-ip-sku Standard \
--nic-delete-option delete \
--os-disk-delete-option delete \
--admin-username azureuser \
--generate-ssh-keys
若要指定當您刪除 VM 時連結的資源會發生什麼情況,請使用 DeleteOption
參數。 每個都可以設定為 Delete
,這會在刪除 VM 時永久刪除資源,或 Detach
只中斷鏈接資源,並將其保留在 Azure 中,以便稍後重複使用。 使用 PowerShell 建立的 VM 預設設定是當您刪除 VM 時,自動卸除 OS 磁碟。 您 Detach
的資源 (例如磁碟) 會繼續產生適用的費用。
參數 DeleteOption
如下:
-OSDiskDeleteOption
- OS 磁碟。
-DataDiskDeleteOption
- 資料磁碟。
-NetworkInterfaceDeleteOption
- NIC。
在此範例中,我們會建立 VM,並在刪除 VM 時設定要刪除的 OS 磁碟和 NIC。
New-AzVm `
-ResourceGroupName "myResourceGroup" `
-Name "myVM" `
-OSDiskDeleteOption Delete `
-NetworkInterfaceDeleteOption Delete `
-Location "East US" `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-SecurityGroupName "myNetworkSecurityGroup" `
-PublicIpAddressName "myPublicIpAddress"
此範例示範如何設定刪除 VM 時要刪除的數據磁碟和 NIC。 請注意,api-version 參數中指定的 API 版本必須是 '2021-03-01' 或更新版本,才能設定刪除選項。
PUT
https://management.azure.com/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Compute/virtualMachines/myVM?api-version=xx
{
"storageProfile": {
"dataDisks": [
{
"diskSizeGB": 1023,
"name": "myVMdatadisk",
"createOption": "Empty",
"lun": 0,
"deleteOption": "Delete"
}
]
},
"networkProfile": {
"networkInterfaces": [
{
"id": "/subscriptions/.../Microsoft.Network/networkInterfaces/myNIC",
"properties": {
"primary": true,
"deleteOption": "Delete"
}
}
]
}
}
您也可以為與 NIC 相關聯的公用 IP 設定此屬性,以便在刪除 NIC 時自動刪除公用 IP。
PUT https://management.azure.com/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/networkInterfaces/test-nic?api-version=xx
{
"properties": {
"enableAcceleratedNetworking": true,
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"publicIPAddress": {
"id": "/subscriptions/../publicIPAddresses/test-ip",
"properties": {
"deleteOption": "Delete"
}
},
"subnet": {
"id": "/subscriptions/../virtualNetworks/rg1-vnet/subnets/default"
}
}
}
]
},
"location": "eastus"
}
更新現有 VM 上的刪除行為
您可以在刪除 VM 時變更行為。
下列範例會將 delete 選項設定為 , detach
以便重複使用磁碟。
az resource update --resource-group myResourceGroup --name myVM --resource-type virtualMachines --namespace Microsoft.Compute --set properties.storageProfile.osDisk.deleteOption=detach
下列範例會更新 VM,以在刪除 VM 時刪除 OS 磁碟、所有數據磁碟和所有 NIC。
$vmConfig = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
$vmConfig.StorageProfile.OsDisk.DeleteOption = 'Delete'
$vmConfig.StorageProfile.DataDisks | ForEach-Object { $_.DeleteOption = 'Delete' }
$vmConfig.NetworkProfile.NetworkInterfaces | ForEach-Object { $_.DeleteOption = 'Delete' }
$vmConfig | Update-AzVM
下列範例會更新 VM,以在刪除 VM 時刪除 NIC、OS 磁碟和數據磁碟。 請注意,api-version 參數中指定的 API 版本必須是 '2021-03-01' 或更新版本,才能設定刪除選項。
PATCH https://management.azure.com/subscriptions/subID/resourceGroups/resourcegroup/providers/Microsoft.Compute/virtualMachines/testvm?api-version=2021-07-01
{
"properties": {
"hardwareProfile": {
"vmSize": "Standard_D2s_v3"
},
"storageProfile": {
"imageReference": {
"publisher": "MicrosoftWindowsServer",
"offer": "WindowsServer",
"sku": "2019-Datacenter",
"version": "latest",
"exactVersion": "17763.3124.2111130129"
},
"osDisk": {
"osType": "Windows",
"name": "OsDisk_1",
"createOption": "FromImage",
"caching": "ReadWrite",
"managedDisk": {
"storageAccountType": "Premium_LRS",
"id": "/subscriptions/subID/resourceGroups/resourcegroup/providers/Microsoft.Compute/disks/OsDisk_1"
},
"deleteOption": "Delete",
"diskSizeGB": 127
},
"dataDisks": [
{
"lun": 0,
"name": "DataDisk_0",
"createOption": "Attach",
"caching": "None",
"writeAcceleratorEnabled": false,
"managedDisk": {
"storageAccountType": "Premium_LRS",
"id": "/subscriptions/subID/resourceGroups/resourcegroup/providers/Microsoft.Compute/disks/DataDisk_0"
},
"deleteOption": "Delete",
"diskSizeGB": 1024,
"toBeDetached": false
},
{
"lun": 1,
"name": "DataDisk_1",
"createOption": "Attach",
"caching": "None",
"writeAcceleratorEnabled": false,
"managedDisk": {
"storageAccountType": "Premium_LRS",
"id": "/subscriptions/subID/resourceGroups/resourcegroup/providers/Microsoft.Compute/disks/DataDisk_1"
},
"deleteOption": "Delete",
"diskSizeGB": 1024,
"toBeDetached": false
}
]
},
"osProfile": {
"computerName": "testvm",
"adminUsername": "azureuser",
"windowsConfiguration": {
"provisionVMAgent": true,
"enableAutomaticUpdates": true,
"patchSettings": {
"patchMode": "AutomaticByOS",
"assessmentMode": "ImageDefault",
"enableHotpatching": false
}
},
"secrets": [],
"allowExtensionOperations": true,
"requireGuestProvisionSignal": true
},
"networkProfile": {
"networkInterfaces": [
{
"id": "/subscriptions/subID/resourceGroups/resourcegroup/providers/Microsoft.Network/networkInterfaces/nic336",
"properties": {
"deleteOption": "Delete"
}
}
]
}
}
}
VM 的強制刪除
強制刪除可讓您強制刪除虛擬機、減少刪除延遲,並立即釋放連結的資源。 對於不需要正常關機的 VM,強制刪除會儘快刪除 VM,同時釋放該 VM 的邏輯資源,並略過正常關機和部分清除作業。 強制刪除不會立即釋放與 VM 相關聯的 MAC 位址,因為這是可能需要最多 10 分鐘才能釋放的實體資源。 如果您需要立即在新 VM 上重複使用 MAC 位址,不建議強制刪除。 只有在您不打算重複使用虛擬硬碟時,才應該使用強制刪除。 您可以透過入口網站、CLI、PowerShell 和 REST API 使用強制刪除。
當您要刪除現有的 VM 時,您會發現刪除窗格中有一個選項可以套用強制刪除。
- 開啟入口網站。
- 瀏覽至您的虛擬機器。
- 在 [概觀] 頁面上,按一下 [刪除]。
- 在 [ 刪除虛擬機] 窗格中,選取 [ 套用強制刪除] 複選框。
- 選取 [確定]。
使用--force-deletion
參數來刪除az vm。
az vm delete \
--resource-group myResourceGroup \
--name myVM \
--force-deletion none
使用 Remove-AzVm 的-ForceDeletion
參數。
Remove-AzVm `
-ResourceGroupName "myResourceGroup" `
-Name "myVM" `
-ForceDeletion $true
您可以使用 Azure REST API 將強制刪除套用至虛擬機。 使用forceDeletion
參數來執行虛擬機器 - 刪除。
擴展集的強制刪除
強制刪除可讓您強制刪除虛擬機擴展集,減少刪除延遲,並立即釋放鏈接的資源。 強制刪除不會立即釋放與 VM 相關聯的 MAC 位址,因為這是可能需要最多 10 分鐘才能釋放的實體資源。 如果您需要立即重複使用新 VM 上的 MAC 位址,不建議強制刪除。 只有在您不打算重複使用虛擬硬碟時,才應該使用強制刪除。 您可以透過入口網站、CLI、PowerShell 和 REST API 使用強制刪除。
當您準備刪除現有的規模設定組時,您會在刪除窗格中找到一個套用強制刪除的選項。
- 開啟入口網站。
- 瀏覽至您的虛擬機器擴展集。
- 在 [概觀] 頁面上,按一下 [刪除]。
- 在 [ 刪除虛擬機擴展集 ] 窗格中,選取 [ 套用強制刪除] 複選框。
- 選取 [確定]。
使用--force-deletion
參數於az vmss delete
。
az vmss delete \
--resource-group myResourceGroup \
--name myVMSS \
--force-deletion true
使用 -ForceDeletion
參數於 Remove-AzVmss。
Remove-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Name "myVMSS" `
-ForceDeletion $true
常見問題
問:此功能是否可與共用磁碟搭配使用?
答:對於共用磁碟,您無法將 'deleteOption' 屬性設定為 'Delete'。 您可以將它保留空白,或將其設定為「分離」
問:哪些 Azure 資源支援這項功能?
答:此功能支持作為OS磁碟和數據磁碟、NIC和公用IP的所有受控磁碟類型
問:我可以在未與 VM 相關聯的磁碟和 NIC 上使用此功能嗎?
答:否,此功能僅適用於與 VM 相關聯的磁碟和 NIC。
問:此功能如何與彈性虛擬機擴展集搭配運作?
答:針對彈性虛擬機器擴展集,磁碟、NIC 和公用 IP 預設將 deleteOption
設定為 Delete
,因此在刪除 VM 時會自動清除這些資源。
針對明確建立並連結至 VM 的數據磁碟,如果您想要在 VM 刪除之後保存磁碟,您可以將此屬性修改為 「卸離」,而不是 『Delete』。
問:Spot VM 是否支援此功能?
答:是的,您可以針對現成 VM 使用這項功能,就像針對隨選 VM 一樣。
問:如何保存與 VM 相關聯的磁碟、NIC 和公用 IP?
答:刪除 VM 時,預設會保存與 VM 相關聯的磁碟、NIC 和公用 IP。 如果您將這些資源設定為自動刪除,您可以更新設定,讓資源在 VM 刪除之後維持不變。 若要保留這些資源,請將 deleteOption
屬性設定為 Detach
。
後續步驟
若要深入瞭解基本 VM 管理,請參閱 教學課程:使用 Azure CLI 建立和管理 Linux VM。