刪除 VM 和連結的資源
本文內容
可能只刪除 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,並將 OS 磁碟和 NIC 設定為在刪除 VM 時刪除。
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 時的行為。
下列範例會將刪除選項設定為 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 時,您會在刪除窗格中找到一個選項來套用強制刪除。
開啟入口網站 。
瀏覽至您的虛擬機器。
在 [概觀] 頁面上,按一下 [刪除] 。
在 [刪除虛擬機器] 窗格中,選取 [套用強制刪除] 核取方塊。
選取 [確定] 。
使用 az vm delete 的 --force-deletion
參數。
az vm delete \
--resource-group myResourceGroup \
--name myVM \
--force-deletion none
使用 Remove-AzVm 的 -ForceDeletion
參數。
Remove-AzVm `
-ResourceGroupName "myResourceGroup" `
-Name "myVM" `
-ForceDeletion $true
擴展集的強制刪除
強制刪除可讓您強制刪除虛擬機器擴展集,減少刪除延遲,並立即釋出連結的資源。 強制刪除不會立即釋出與 VM 相關聯的 MAC 位址,因為這是實體資源,最多可能需要 10 分鐘才能釋出。 如果您需要在新的 VM 上立即重複使用 MAC 位址,不建議使用強制刪除。 只有在您不打算重複使用虛擬硬碟時,才建議使用強制刪除。 您可以透過入口網站、CLI、PowerShell 和 REST API 使用強制刪除。
當您刪除現有的擴展集時,您會在刪除窗格中找到一個選項來套用強制刪除。
開啟入口網站 。
瀏覽至您的虛擬機器擴展集。
在 [概觀] 頁面上,按一下 [刪除] 。
在 [刪除虛擬機器擴展集] 窗格中,選取 [套用強制刪除] 的核取方塊。
選取 [確定] 。
使用 az vmss delete
的 --force-deletion
參數。
az vmss delete \
--resource-group myResourceGroup \
--name myVMSS \
--force-deletion true
使用 Remove-AzVmss 的 -ForceDeletion
參數。
Remove-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Name "myVMSS" `
-ForceDeletion $true
常見問題集
問:此功能是否使用共用磁碟?
答:針對共用磁碟,您無法將 'deleteOption' 屬性設定為 'Delete'。 您可以將其保留空白,或將其設定為 'Detach'
問:哪些 Azure 資源支援此功能?
答:用作 OS 磁碟和資料磁碟的所有受控磁碟類型、NIC 和公用 IP 都支援此功能
問:是否可以在未與 VM 相關聯的磁碟和 NIC 上使用此功能?
答:否,此功能僅適能在與 VM 相關聯的磁碟和 NIC 上使用。
問:此功能如何使用彈性虛擬機器擴展集?
答:針對彈性虛擬機器擴展集,磁碟、NIC 和公用 IP 預設將 deleteOption
設定為 Delete
,因此在刪除 VM 時會自動清除這些資源。
針對明確建立並連結至 VM 的資料磁碟,如果您想要在刪除 VM 之後保存磁碟,您可以將此屬性修改為 'Detach',而不是 'Delete'。
問:現成 VM 是否支援此功能?
答:是,您可以針對現成 VM 使用此功能,如同您對隨選 VM 所做一般。
問:如何保存與 VM 相關聯的磁碟、NIC 和公用 IP?
答:依預設,刪除 VM 時,會保存與 VM 相關聯的磁碟、NIC 和公用 IP。 如果將這些資源設定為自動刪除,您可以更新設定,讓資源在 VM 刪除之後保留下來。 若要保留這些資源,請將 deleteOption
屬性設定為 Detach
。
下一步
若要深入了解基本 VM 管理,請參閱教學課程:使用 Azure CLI 建立和管理 Linux VM 。