تحميل VHD إلى Azure أو نسخ قرص مدار إلى منطقة أخرى - Azure PowerShell

ينطبق على: ✔️ أجهزة Windows الظاهرية

توضح هذه المقالة كيفية تحميل VHD من جهازك المحلي إلى قرص مدار من Azure أو نسخ قرص مدار إلى منطقة أخرى، باستخدام وحدة Azure PowerShell النمطية. تمكّنك عملية تحميل قرص مدار، والمعروفة أيضاً باسم التحميل المباشر، من تحميل VHD يصل حجمه إلى 32 TiB مباشرة إلى قرص مدار. حاليا، يتم دعم التحميل المباشر ل Ultra Disks وPremium SSD v2 وPremium SSD وStandard SSD وStandard HDD.

إذا كنت توفر حلاً للنسخ الاحتياطي لأجهزة خدمة تأجير البنية التحتية الظاهرية في Azure، يجب عليك استخدام التحميل المباشر لاستعادة النسخ الاحتياطية للعملاء إلى الأقراص المدارة. عند تحميل VHD من مصدر خارجي إلى Azure، تعتمد السرعات على النطاق الترددي المحلي. عند التحميل أو النسخ من جهاز Azure الظاهري، سيكون النطاق الترددي هو نفسه لمحركات الأقراص الثابتة القياسية.

تحميلات آمنة باستخدام معرف Microsoft Entra

إذا كنت تستخدم معرف Microsoft Entra للتحكم في الوصول إلى الموارد، يمكنك الآن استخدامه لتقييد تحميل الأقراص المدارة من Azure. تتوفر هذه الميزة كعرض GA في جميع المناطق. عندما يحاول مستخدم تحميل قرص، يتحقق Azure من هوية المستخدم الطالب في معرف Microsoft Entra، ويؤكد أن المستخدم لديه الأذونات المطلوبة. على مستوى أعلى، يمكن لمسؤول النظام تعيين نهج على حساب Azure أو مستوى الاشتراك للتأكد من أن هوية Microsoft Entra لديها الأذونات اللازمة للتحميل قبل السماح بتحميل قرص أو لقطة قرص. إذا كانت لديك أي أسئلة حول تأمين التحميلات باستخدام معرف Microsoft Entra، فتواصل مع هذا البريد الإلكتروني: azuredisks@microsoft .com

المتطلبات الأساسية

القيود

  • لا يمكن تحميل الأقراص الثابتة الظاهرية إلى لقطات فارغة.
  • لا يدعم Azure Backup حاليا الأقراص المؤمنة باستخدام معرف Microsoft Entra.
  • لا يدعم Azure Site Recovery حاليا الأقراص المؤمنة باستخدام معرف Microsoft Entra.

تعيين دور التحكم في الوصول استناداً إلى الدور (RBAC)

للوصول إلى الأقراص المدارة المؤمنة باستخدام معرف Microsoft Entra، يجب أن يكون لدى المستخدم الطالب إما دور عامل تشغيل البيانات للأقراص المدارة، أو دور مخصص بالأذونات التالية:

  • Microsoft.Compute/disks/download/action
  • Microsoft.Compute/disks/upload/action
  • Microsoft.Compute/snapshots/download/action
  • Microsoft.Compute/snapshots/upload/action

للحصول على خطوات مفصلة حول تعيين دور، راجع تعيين أدوار Azure باستخدام Azure PowerShell. لإنشاء دور مخصص أو تحديثه، راجع إنشاء أو تحديث أدوار Azure المخصصة باستخدام Azure PowerShell.

الشروع في العمل

هناك طريقتان يمكنك من خلالهما تحميل VHD باستخدام الوحدة النمطية Azure PowerShell: يمكنك إما استخدام الأمر Add-AzVHD، والذي سيؤدي إلى أتمتة معظم العملية نيابة عنك، أو يمكنك إجراء التحميل يدوياً باستخدام AzCopy.

بالنسبة إلى Premium SSDs وSSDs القياسية وأقراص HDD القياسية، يجب استخدام Add-AzVHD بشكل عام. ومع ذلك، إذا كنت تقوم بالتحميل إلى Ultra Disk، أو Premium SSD v2، أو إذا كنت بحاجة إلى تحميل VHD أكبر من 50 غيغابايت، فيجب عليك تحميل VHD أو VHDX يدويا باستخدام AzCopy. لا يدعم VHDs 50 GiB والتحميل الأكبر بشكل أسرع باستخدام AzCopy وAdd-AzVhd حاليا التحميل إلى Ultra Disk أو Premium SSD v2.

للحصول على إرشادات حول كيفية نسخ قرص مدار من منطقة إلى أخرى، راجع نسخ قرص مدار.

استخدام Add-AzVHD

المتطلبات الأساسية

  • قم بتثبيت الوحدة النمطية في Azure PowerShell.
  • تم إعداد VHD لـ Azure، وتخزينه محلياً.
    • على Windows: لا تحتاج إلى تحويل VHD إلى VHDx، أو تحويله بحجم ثابت، أو تغيير حجمه لتضمين إزاحة 512 بايت. يؤدي Add-AZVHD هذه الوظائف نيابة عنك.
      • يجب تمكين Hyper-V لـ Add-AzVHD لأداء هذه الوظائف.
    • على Linux: يجب عليك تنفيذ هذه الإجراءات يدوياً. راجع تغيير حجم VHDs للحصول على التفاصيل.

تحميل VHD

(اختياري) منح حق الوصول إلى القرص

إذا تم استخدام معرف Microsoft Entra لفرض قيود التحميل على اشتراك أو على مستوى الحساب، فإن Add-AzVHD ينجح فقط إذا حاول مستخدم لديه دور RBAC المناسب أو الأذونات الضرورية. ستحتاج إلى تعيين أذونات التحكم في الوصول استناداً إلى الدور لمنح حق الوصول إلى القرص وإنشاء SAS قابل للكتابة.

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName "Data Operator for Managed Disks" `
-Scope /subscriptions/<subscriptionId>

استخدام Add-AzVHD

يقوم المثال التالي بتحميل VHD من جهازك المحلي إلى قرص مدار من Azure جديد باستخدام Add-AzVHD. استبدل <your-filepath-here>، و<your-resource-group-name>، و<desired-region>، و<desired-managed-disk-name> بالمعلمات الخاصة بك:

إشعار

إذا كنت تستخدم معرف Microsoft Entra لفرض قيود التحميل، أضف DataAccessAuthMode 'AzureActiveDirectory' إلى نهاية Add-AzVhd الأمر.

# Required parameters
$path = <your-filepath-here>.vhd
$resourceGroup = <your-resource-group-name>
$location = <desired-region>
$name = <desired-managed-disk-name>

# Optional parameters
# $Zone = <desired-zone>
# $sku=<desired-SKU>
# -DataAccessAuthMode 'AzureActiveDirectory'
# -DiskHyperVGeneration = V1 or V2. This applies only to OS disks.

# To use $Zone or #sku, add -Zone or -DiskSKU parameters to the command
Add-AzVhd -LocalFilePath $path -ResourceGroupName $resourceGroup -Location $location -DiskName $name

التحميل اليدوي

المتطلبات الأساسية

لتحميل VHD إلى Azure، ستحتاج إلى إنشاء قرص مدار فارغ تم تكوينه لعملية التحميل هذه. قبل إنشاء واحد، هناك بعض المعلومات الإضافية التي يجب أن تعرفها عن هذه الأقراص.

يحتوي هذا النوع من الأقراص المدارة على حالتين فريدتين:

  • ReadyToUpload، مما يعني أن القرص جاهز لتلقي تحميل، ولكن لم يتم إنشاء توقيع وصول آمن (SAS).
  • ActiveUpload، مما يعني أن القرص جاهز لتلقي تحميل، وأنه تم إنشاء SAS.

إشعار

أثناء التواجد في أي من هاتين الحالتين، ستتم فوترة القرص المدار بسعر محرك الأقراص الثابتة القياسي، بغض النظر عن نوع القرص الفعلي. على سبيل المثال، ستتم فوترة P10 على أنها S10. سيكون هذا صحيحاً حتى يتم استدعاء revoke-access على القرص المدار، وهو مطلوب لإرفاق القرص بجهاز ظاهري.

إنشاء قرص مدار فارغ

قبل أن تتمكن من إنشاء محرك أقراص ثابتة قياسي فارغ للتحميل، ستحتاج إلى حجم ملف VHD الذي تريد تحميله، بالبايت. ستحصل التعليمة البرمجية للمثال على ذلك نيابة عنك، ولكن للقيام بذلك بنفسك، يمكنك استخدام: $vhdSizeBytes = (Get-Item "<fullFilePathHere>").length. يتم استخدام هذه القيمة عند تحديد المعلمة -UploadSizeInBytes.

الآن، على shell المحلي، قم بإنشاء محرك أقراص ثابت قياسي فارغ للتحميل عن طريق تحديد إعداد "Upload" في المعلمة -CreateOption بالإضافة إلى المعلمة -UploadSizeInBytes في New-AzDiskConfig cmdlet. ثم قم باستدعاء New-AzDisk لإنشاء القرص.

استبدل <yourdiskname>، و<yourresourcegroupname>، و<yourregion> ثم قم بتشغيل الأوامر التالية:

هام

إذا كنت تقوم بإنشاء قرص نظام تشغيل، فأضف -HyperVGeneration '<yourGeneration>' إلى New-AzDiskConfig.

إذا كنت تستخدم معرف Microsoft Entra لتأمين عمليات التحميل، أضف -dataAccessAuthMode 'AzureActiveDirectory' إلى New-AzDiskConfig.
عند التحميل إلى Ultra Disk أو Premium SSD v2، تحتاج إلى تحديد حجم القطاع الصحيح للقرص الهدف. إذا كنت تستخدم ملف VHDX بحجم قطاع منطقي 4k، يجب تعيين القرص الهدف إلى 4k. إذا كنت تستخدم ملف VHD بحجم قطاع منطقي 512، يجب تعيين القرص الهدف إلى 512.

ملفات VHDX بحجم القطاع المنطقي 512k غير مدعومة.

$vhdSizeBytes = (Get-Item "<fullFilePathHere>").length

## For Ultra Disks or Premium SSD v2, add -LogicalSectorSize and specify either 4096 or 512, depending on if you're using a VHDX or a VHD

$diskconfig = New-AzDiskConfig -SkuName 'Standard_LRS' -OsType 'Windows' -UploadSizeInBytes $vhdSizeBytes -Location '<yourregion>' -CreateOption 'Upload'

New-AzDisk -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>' -Disk $diskconfig

إذا كنت ترغب في تحميل نوع قرص مختلف، فاستبدل Standard_LRS Premium_LRS أو Premium_ZRS أو StandardSSD_ZRS أو StandardSSD_LRS أو UltraSSD_LRS.

إنشاء SAS قابل للكتابة

الآن بعد أن أنشأت قرصاً مداراً فارغاً تم تكوينه لعملية التحميل، يمكنك تحميل VHD إليه. لتحميل VHD إلى القرص، ستحتاج إلى SAS قابل للكتابة، بحيث يمكنك الرجوع إليه كوجهة للتحميل.

لإنشاء SAS قابل للكتابة من القرص المدار الفارغ، استبدل <yourdiskname> و<yourresourcegroupname>، ثم استخدم الأوامر التالية:

$diskSas = Grant-AzDiskAccess -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>' -DurationInSecond 86400 -Access 'Write'

$disk = Get-AzDisk -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>'

تحميل VHD أو VHDX

الآن بعد أن أصبح لديك SAS للقرص المدار الفارغ، يمكنك استخدامه لتعيين القرص المدار كوجهة لأمر التحميل.

استخدم AzCopy v10 لتحميل ملف VHD أو VHDX المحلي إلى قرص مدار عن طريق تحديد SAS URI الذي أنشأته.

يحتوي هذا التحميل على نفس معدل النقل، مثل محرك الأقراص الثابتة القياسي المكافئ. على سبيل المثال، إذا كان لديك حجم يساوي S4، فسيكون لديك معدل نقل يصل إلى 60 ميبي بايت / ث. ولكن، إذا كان لديك حجم يساوي S70، فسيكون لديك معدل نقل يصل إلى 500 ميبي بايت/ث.

AzCopy.exe copy "c:\somewhere\mydisk.vhd" $diskSas.AccessSAS --blob-type PageBlob

بعد اكتمال التحميل، ولم تعد بحاجة إلى كتابة أي بيانات أخرى على القرص، قم بإلغاء SAS. سيؤدي إلغاء SAS إلى تغيير حالة القرص المدار ويسمح لك بإرفاق القرص بجهاز ظاهري.

استبدل <yourdiskname> و<yourresourcegroupname>، ثم قم بتشغيل الأمر التالي:

Revoke-AzDiskAccess -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>'

نسخ قرص مدار

يعمل التحميل المباشر أيضاً على تبسيط عملية نسخ القرص المدار. يمكنك إما النسخ داخل نفس المنطقة أو نسخ القرص المدار إلى منطقة أخرى.

سيقوم البرنامج النصي التالي بذلك نيابة عنك، وتشبه العملية الخطوات الموضحة سابقاً، مع بعض الاختلافات، نظراً لأنك تعمل مع قرص موجود.

هام

يجب إضافة إزاحة 512 عند توفير حجم القرص بالبايت لقرص مدار من Azure. وذلك لأن Azure يحذف التذييل عند إرجاع حجم القرص. ستفشل النسخة إذا لم تقم بذلك. وبالفعل يقوم البرنامج النصي التالي بذلك نيابة عنك.

استبدل <sourceResourceGroupHere>، و<sourceDiskNameHere>، و<targetDiskNameHere>، و<targetResourceGroupHere>، و<yourOSTypeHere>، و<yourTargetLocationHere> (مثال على قيمة الموقع سيكون uswest2) بالقيم الخاصة بك، ثم قم بتشغيل البرنامج النصي التالي لنسخ قرص مدار.

تلميح

إذا كنت تقوم بإنشاء قرص نظام تشغيل، فأضف -HyperVGeneration '<yourGeneration>' إلى New-AzDiskConfig.


$sourceRG = <sourceResourceGroupHere>
$sourceDiskName = <sourceDiskNameHere>
$targetDiskName = <targetDiskNameHere>
$targetRG = <targetResourceGroupHere>
$targetLocate = <yourTargetLocationHere>
$targetVmGeneration = "V1" # either V1 or V2
#Expected value for OS is either "Windows" or "Linux"
$targetOS = <yourOSTypeHere>

$sourceDisk = Get-AzDisk -ResourceGroupName $sourceRG -DiskName $sourceDiskName

# Adding the sizeInBytes with the 512 offset, and the -Upload flag
$targetDiskconfig = New-AzDiskConfig -SkuName 'Standard_LRS' -osType $targetOS -UploadSizeInBytes $($sourceDisk.DiskSizeBytes+512) -Location $targetLocate -CreateOption 'Upload' -HyperVGeneration $targetVmGeneration

$targetDisk = New-AzDisk -ResourceGroupName $targetRG -DiskName $targetDiskName -Disk $targetDiskconfig

$sourceDiskSas = Grant-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName -DurationInSecond 86400 -Access 'Read'

$targetDiskSas = Grant-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName -DurationInSecond 86400 -Access 'Write'

azcopy copy $sourceDiskSas.AccessSAS $targetDiskSas.AccessSAS --blob-type PageBlob

Revoke-AzDiskAccess -ResourceGroupName $sourceRG -DiskName $sourceDiskName

Revoke-AzDiskAccess -ResourceGroupName $targetRG -DiskName $targetDiskName 

الخطوات التالية

الآن بعد أن نجحت في تحميل VHD إلى قرص مدار، يمكنك إرفاق القرص بجهاز ظاهري والبدء في استخدامه.

لمعرفة كيفية إرفاق قرص بيانات بجهاز ظاهري، راجع مقالتنا حول الموضوع: إرفاق قرص بيانات بجهاز ظاهري بنظام التشغيل Windows باستخدام PowerShell. لاستخدام القرص كقرص نظام التشغيل، راجع إنشاء جهاز ظاهري بنظام التشغيل Windows من قرص متخصص.

إذا كانت لديك أسئلة إضافية، فشاهد القسم الخاص بتحميل قرص مدار في الأسئلة المتداولة.