ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ أجهزة Windows الظاهرية ✔️ مجموعات مقياس مرنة
توضح هذه المقالة كيفية تغيير حجم الجهاز الظاهري الموجود.
بعد إنشاء جهاز ظاهري (VM)، يمكنك توسيع نطاق الجهاز الظاهري لأعلى أو لأسفل من خلال تغيير حجم الجهاز الظاهري. في بعض الحالات، يجب عليك التعامل مع الجهاز الظاهري أولاً. قد يكون إلغاء التخصيص ضروريا إذا لم يكن الحجم الجديد متوفرا على نفس مجموعة الأجهزة التي تستضيف الجهاز الظاهري حاليا. من المهم أن نفهم أنه حتى عندما لا يكون إلغاء التخصيص ضروريا، إذا كان الجهاز الظاهري قيد التشغيل حاليا، فإن تغيير حجمه سيؤدي إلى إعادة تشغيله. لهذا السبب يجب أن تفكر في تغيير حجم الجهاز الظاهري كإجراء معطل، خاصة بالنسبة لأحمال العمل ذات الحالة التي تتم استضافتها على الجهاز الظاهري.
إذا كان الجهاز الظاهري يستخدم "Premium Storage"، فتأكد من اختيار إصدار s من الحجم للحصول على دعم "Premium Storage". على سبيل المثال، اختر Standard_E4 s_v3 بدلاً من Standard_E4_v3.
استخدم PowerShell لتغيير حجم جهاز ظاهري غير موجود في مجموعة التوافر.
يقوم هذا البرنامج النصي Cloud shell PowerShell بتهيئة المتغيرات $resourceGroupو $vmو $size مع اسم مجموعة الموارد واسم الجهاز الظاهري وحجم الجهاز الظاهري المطلوب على التوالي. ثم يسترد كائن الجهاز الظاهري من Azure باستخدام Get-AzVM cmdlet. يقوم البرنامج النصي بتعديل VmSize خاصية ملف تعريف جهاز الجهاز الظاهري إلى الحجم المطلوب. وأخيرا، فإنه يطبق هذه التغييرات على الجهاز الظاهري في Azure باستخدام Update-AzVM cmdlet.
# Set variables
$resourceGroup = 'myResourceGroup'
$vmName = 'myVM'
$size = 'Standard_DS3_v2'
# Get the VM
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
# Change the VM size
$vm.HardwareProfile.VmSize = $size
# Update the VM
Update-AzVM -ResourceGroupName $resourceGroup -VM $vm
كبديل لتشغيل البرنامج النصي في Azure Cloud Shell، يمكنك أيضا تنفيذه محليا على جهازك. يتضمن هذا الإصدار المحلي من البرنامج النصي PowerShell خطوات إضافية لاستيراد الوحدة النمطية Azure ومصادقة حساب Azure الخاص بك.
إشعار
قد يتطلب PowerShell المحلي إعادة تشغيل الجهاز الظاهري حتى يصبح ساري المفعول.
# Import the Azure module
Import-Module Az
# Login to your Azure account
Connect-AzAccount
# Set variables
$resourceGroup = 'myResourceGroup'
$vmName = 'myVM'
$size = 'Standard_DS3_v2'
# Select the subscription
Select-AzSubscription -SubscriptionId '<subscriptionID>'
# Get the VM
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
# Change the VM size
$vm.HardwareProfile.VmSize = $size
# Update the VM
Update-AzVM -ResourceGroupName $resourceGroup -VM $vm
تحذير
يؤدي إلغاء تخصيص الجهاز الظاهري أيضاً إلى إصدار أي عناوين IP ديناميكية تم تعيينها إلى الجهاز الظاهري. لا يتأثر نظام التشغيل وأقراص البيانات.
استخدم PowerShell لتغيير حجم جهاز ظاهري موجود في مجموعة التوافر.
إذا لم يكن الحجم الجديد لجهاز ظاهري في مجموعة توفر متوفرا على مجموعة الأجهزة التي تستضيف الجهاز الظاهري حاليا، فأنت بحاجة إلى إلغاء تخصيص جميع الأجهزة الظاهرية في مجموعة التوفر لتغيير حجم الجهاز الظاهري. قد تحتاج أيضًا إلى تحديث حجم الأجهزة الظاهرية الأخرى في مجموعة التوافر بعد تغيير حجم جهاز ظاهري واحد. لتغيير حجم جهاز ظاهري في مجموعة توفر، قم بتشغيل البرنامج النصي أدناه. يمكنك استبدال قيم و $vmName$newVmSizeو و $availabilitySetName بقيمك $resourceGroupالخاصة.
# Set variables
$resourceGroup = "myResourceGroup"
$vmName = "myVM"
$newVmSize = "<newVmSize>"
$availabilitySetName = "<availabilitySetName>"
# Check if the desired VM size is available
$availableSizes = Get-AzVMSize `
-ResourceGroupName $resourceGroup `
-VMName $vmName |
Select-Object -ExpandProperty Name
if ($availableSizes -notcontains $newVmSize) {
# Deallocate all VMs in the availability set
$as = Get-AzAvailabilitySet `
-ResourceGroupName $resourceGroup `
-Name $availabilitySetName
$virtualMachines = $as.VirtualMachinesReferences | Get-AzResource | Get-AzVM
$virtualMachines | Stop-AzVM -Force -NoWait
# Resize and restart the VMs in the availability set
$virtualMachines | Foreach-Object { $_.HardwareProfile.VmSize = $newVmSize }
$virtualMachines | Update-AzVM
$virtualMachines | Start-AzVM
exit
}
# Resize the VM
$vm = Get-AzVM `
-ResourceGroupName $resourceGroup `
-VMName $vmName
$vm.HardwareProfile.VmSize = $newVmSize
Update-AzVM `
-VM $vm `
-ResourceGroupName $resourceGroup
يعين هذا البرنامج النصي المتغيرات $resourceGroupو $vmName$newVmSizeو و.$availabilitySetName ثم يتحقق مما إذا كان حجم الجهاز الظاهري المطلوب متوفرا باستخدام Get-AzVMSize والتحقق مما إذا كان الإخراج يحتوي على الحجم المطلوب. إذا لم يكن الحجم المطلوب متوفرا، يقوم البرنامج النصي بإلغاء تخصيص جميع الأجهزة الظاهرية في مجموعة التوفر، وتغيير حجمها، وبدء تشغيلها مرة أخرى. إذا كان الحجم المطلوب متاحا، يقوم البرنامج النصي بتغيير حجم الجهاز الظاهري.
لتغيير حجم جهاز ظاهري، تحتاج إلى تثبيت أحدث Azure CLI وتسجيل الدخول إلى حساب Azure باستخدام az sign-in.
يتحقق البرنامج النصي أدناه من توفر حجم الجهاز الظاهري المطلوب قبل تغيير الحجم. إذا لم يكن الحجم المطلوب متوفرا، يتم إنهاء البرنامج النصي برسالة خطأ. إذا كان الحجم المطلوب متوفرا، يقوم البرنامج النصي بإلغاء تخصيص الجهاز الظاهري وتغيير حجمه وبدء تشغيله مرة أخرى. يمكنك استبدال قيم resourceGroupو vmو size بقيمك الخاصة.
# Set variables
resourceGroup=myResourceGroup
vm=myVM
size=Standard_DS3_v2
# Check if the desired VM size is available
if ! az vm list-vm-resize-options --resource-group $resourceGroup --name $vm --query "[].name" | grep -q $size; then
echo "The desired VM size is not available."
exit 1
fi
# Deallocate the VM
az vm deallocate --resource-group $resourceGroup --name $vm
# Resize the VM
az vm resize --resource-group $resourceGroup --name $vm --size $size
# Start the VM
az vm start --resource-group $resourceGroup --name $vm
تحذير
يؤدي إلغاء تخصيص الجهاز الظاهري أيضاً إلى إصدار أي عناوين IP ديناميكية تم تعيينها إلى الجهاز الظاهري. لا يتأثر نظام التشغيل وأقراص البيانات.
استخدم Azure CLI لتغيير حجم جهاز ظاهري في مجموعة توفر.
يعين البرنامج النصي أدناه المتغيرات resourceGroupو vmو.size ثم يتحقق مما إذا كان حجم الجهاز الظاهري المطلوب متوفرا باستخدام az vm list-vm-resize-options والتحقق مما إذا كان الإخراج يحتوي على الحجم المطلوب. إذا لم يكن الحجم المطلوب متوفرا، يتم إنهاء البرنامج النصي برسالة خطأ. إذا كان الحجم المطلوب متوفرا، يقوم البرنامج النصي بإلغاء تخصيص الجهاز الظاهري وتغيير حجمه وبدء تشغيله مرة أخرى.
# Set variables
resourceGroup="myResourceGroup"
vmName="myVM"
newVmSize="<newVmSize>"
availabilitySetName="<availabilitySetName>"
# Check if the desired VM size is available
availableSizes=$(az vm list-vm-resize-options \
--resource-group $resourceGroup \
--name $vmName \
--query "[].name" \
--output tsv)
if [[ ! $availableSizes =~ $newVmSize ]]; then
# Deallocate all VMs in the availability set
vmIds=$(az vmss list-instances \
--resource-group $resourceGroup \
--name $availabilitySetName \
--query "[].instanceId" \
--output tsv)
az vm deallocate \
--ids $vmIds \
--no-wait
# Resize and restart the VMs in the availability set
az vmss update \
--resource-group $resourceGroup \
--name $availabilitySetName \
--set virtualMachineProfile.hardwareProfile.vmSize=$newVmSize
az vmss start \
--resource-group $resourceGroup \
--name $availabilitySetName \
--instance-ids $vmIds
exit
fi
# Resize the VM
az vm resize \
--resource-group $resourceGroup \
--name $vmName \
--size $newVmSize
لتغيير حجم الجهاز الظاهري في التعليمات البرمجية ل Terraform، يمكنك تعديل المعلمة sizeazurerm_linux_virtual_machine في كتل الموارد أو azurerm_windows_virtual_machine إلى الحجم المطلوب وتشغيل terraform plan -out main.tfplan لرؤية تغيير حجم الجهاز الظاهري الذي سيتم إجراؤه. ثم قم بتشغيل terraform apply main.tfplan لتطبيق التغييرات لتغيير حجم الجهاز الظاهري.
هام
يعدل مثال Terraform أدناه حجم جهاز ظاهري موجود عند استخدام ملف الحالة الذي أنشأ الجهاز الظاهري الأصلي. للحصول على التعليمات البرمجية الكاملة ل Terraform، راجع التشغيل السريع ل Windows Terraform.
عند تغيير حجم جهاز ظاهري، من المهم اختيار وحدة SKU المناسبة استنادا إلى الإشارات من الجهاز الظاهري لتحديد ما إذا كنت بحاجة إلى المزيد من وحدة المعالجة المركزية أو الذاكرة أو سعة التخزين:
إذا كان الجهاز الظاهري يقوم بتشغيل حمل عمل مكثف لوحدة المعالجة المركزية، مثل خادم قاعدة بيانات أو خادم ويب بنسبة استخدام عالية، فقد تحتاج إلى اختيار وحدة SKU مع المزيد من الذاكرات الأساسية لوحدة المعالجة المركزية.
إذا كان الجهاز الظاهري يشغل حمل عمل كثيف الذاكرة، مثل نموذج التعلم الآلي أو تطبيق بيانات كبيرة، فقد تحتاج إلى اختيار SKU مع ذاكرة أكثر.
إذا نفدت سعة التخزين للجهاز الظاهري، فقد تحتاج إلى اختيار SKU مع المزيد من التخزين.
لمزيد من المعلومات حول اختيار SKU المناسب، يمكنك استخدام الموارد التالية:
محدد جهاز Azure الظاهري: تساعدك هذه الأداة في العثور على وحدة SKU للجهاز الظاهري المناسب استنادا إلى نوع حمل العمل ونظام التشغيل والبرامج ومنطقة التوزيع.
القيود
لا يمكنك تغيير حجم الجهاز الظاهري الذي يحتوي على قرص مؤقت محلي إلى حجم جهاز ظاهري بدون قرص مؤقت محلي والعكس صحيح.
تتمثل المجموعات الوحيدة المسموح بها لتغيير الحجم فيما يلي:
جهاز ظاهري (مع قرص مؤقت محلي) -> جهاز ظاهري (مع قرص مؤقت محلي)؛ و
جهاز ظاهري (بدون قرص مؤقت محلي) -> جهاز ظاهري (بدون قرص مؤقت محلي).