Hochladen einer VHD in Azure oder Kopieren eines verwalteten Datenträgers in eine andere Region – Azure PowerShell

Gilt für: ✔️ Windows-VMs

In diesem Artikel wird erläutert, wie Sie mithilfe des Azure PowerShell-Moduls eine VHD von Ihrem lokalen Computer auf einen verwalteten Azure-Datenträger hochladen oder einen verwalteten Datenträger in eine andere Region kopieren. Durch das Hochladen eines verwalteten Datenträgers, das auch als direkter Upload bezeichnet wird, können Sie eine VHD mit einer Größe von bis zu 32 TiB direkt auf einen verwalteten Datenträger hochladen. Derzeit wird der direkte Upload für Disk Ultra, SSD Premium v2, SSD Premium, SSD Standard und HDD Standard unterstützt.

Wenn Sie eine Sicherungslösung für IaaS-VMs in Azure bereitstellen, sollten Sie einen direkten Upload verwenden, um Kundensicherungen auf verwalteten Datenträgern wiederherzustellen. Beim Hochladen einer VHD von einem Computer, der sich außerhalb von Azure befindet, hängt die Geschwindigkeit von der lokalen Bandbreite ab. Beim Hochladen oder Kopieren von einer Azure-VM entspricht die Bandbreite der von Standard-Festplattenlaufwerken.

Schützen von Uploads mit Microsoft Entra ID

Wenn Sie Microsoft Entra ID zur Steuerung des Ressourcenzugriffs verwenden, können Sie damit nun das Hochladen von in Azure verwalteten Datenträgern einschränken. Dieses Feature ist als GA-Angebot in allen Regionen verfügbar. Beim Versuch, einen Datenträger hochzuladen, überprüft Azure die Identität der anfordernden Benutzer*innen in Microsoft Entra ID, um sicherzustellen, dass sie über die erforderlichen Berechtigungen verfügen. Auf höherer Ebene können Systemadministrator*innen eine Richtlinie auf Ebene des Azure-Kontos oder -Abonnements festlegen, um sicherzustellen, dass eine Microsoft Entra-Identität über die erforderlichen Berechtigungen zum Hochladen verfügt, bevor ein Datenträger oder eine Datenträgermomentaufnahme hochgeladen werden kann. Wenn Sie Fragen zum Schützen von Uploads mit Microsoft Entra ID haben, wenden Sie sich an folgende E-Mail-Adresse: azuredisks@microsoft.com.

Voraussetzungen

Beschränkungen

  • VHDs können nicht in leere Momentaufnahmen hochgeladen werden.
  • Azure Backup unterstützt derzeit keine mit Microsoft Entra ID geschützten Datenträger.
  • Azure Site Recovery unterstützt derzeit keine mit Microsoft Entra ID geschützten Datenträger.

Zuweisen einer RBAC-Rolle

Um auf mit Microsoft Entra ID geschützte verwaltete Datenträger zuzugreifen, müssen anfordernde Benutzer*innen entweder die Rolle Datenoperator für verwaltete Datenträger oder eine benutzerdefinierte Rolle mit den folgenden Berechtigungen haben:

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

Ausführliche Schritte zum Zuweisen einer Rolle finden Sie unter Zuweisen von Azure-Rollen mithilfe von Azure PowerShell. Informationen zum Erstellen oder Aktualisieren einer benutzerdefinierten Rolle finden Sie unter Erstellen oder Aktualisieren von benutzerdefinierten Azure-Rollen mithilfe von Azure PowerShell.

Erste Schritte

Es gibt zwei Möglichkeiten, eine VHD mit dem Azure PowerShell-Modul hochzuladen: Sie können entweder den Befehl Add-AzVHD verwenden, der den Großteil des Prozesses für Sie automatisiert, oder Sie können den Upload manuell mit AzCopy durchführen.

Für SSDs Premium, SSDs Standard und HDDs Standard sollten Sie im Allgemeinen Add-AzVHD verwenden. Wenn Sie jedoch auf Disk Ultra oder SSD Premium v2 hochladen oder eine VHD hochladen müssen, die größer als 50 GiB ist, müssen Sie die VHD oder die VHDX manuell mit AzCopy hochladen. VHDs über 50 GiB werden mit AzCopy schneller hochgeladen und Add-AzVhd unterstützt derzeit nicht das Hochladen auf Disk Ultra oder SSD Premium v2.

Anleitungen zum Kopieren eines verwalteten Datenträgers aus einer Region in eine andere finden Sie unter Kopieren verwalteter Datenträger.

Verwenden von Add-AzVHD

Voraussetzungen

  • Installieren des Azure PowerShell-Moduls
  • Eine VHD, die für Azure vorbereitet wurde und lokal gespeichert ist.
    • Unter Windows: Sie müssen Ihre VHD nicht in eine VHDx konvertieren, sondern konvertieren Sie sie in eine feste Größe, oder ändern Sie die Größe, um den 512-Byte-Offset einzuschließen. Add-AZVHD führt diese Funktionen für Sie aus.
      • Hyper-V muss aktiviert sein, damit Add-AzVHD diese Funktionen ausführen kann.
    • Unter Linux: Sie müssen diese Aktionen manuell ausführen. Weitere Einzelheiten finden Sie unter Ändern der Größe von VHDs.

Hochladen einer VHD-Datei

(Optional) Gewähren des Zugriffs auf den Datenträger

Wenn Microsoft Entra ID verwendet wird, um Uploadeinschränkungen für ein Abonnement oder auf Kontoebene zu erzwingen, ist Add-AzVHD nur erfolgreich, wenn der Befehl von einem Benutzer oder einer Benutzerin verwendet wird, der bzw. die über die entsprechende RBAC-Rolle oder erforderliche Berechtigungen verfügt. Sie müssen RBAC-Berechtigungen zuweisen, um Zugriff auf den Datenträger zu gewähren und eine schreibbare SAS zu generieren.

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

Verwenden von Add-AzVHD

Im folgenden Beispiel wird eine VHD mit Add-AzVHD von Ihrem lokalen Computer auf einen neuen verwalteten Azure-Datenträger hochgeladen. Ersetzen Sie <your-filepath-here>,<your-resource-group-name>, <desired-region> und <desired-managed-disk-name> durch Ihre Parameter:

Hinweis

Wenn Sie Microsoft Entra ID verwenden, um Uploadeinschränkungen zu erzwingen, fügen Sie DataAccessAuthMode 'AzureActiveDirectory' am Ende des Befehls Add-AzVhd hinzu.

# 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

Manueller Upload

Voraussetzungen

Wenn Sie Ihre VHD in Azure hochladen möchten, müssen Sie einen leeren verwalteten Datenträger erstellen, der für diesen Hochladevorgang konfiguriert ist. Bevor Sie einen solchen Datenträger erstellen, sollten Sie einige zusätzliche Informationen über diese Datenträger wissen.

Diese Art des verwalteten Datenträgers verfügt über zwei eindeutige Zustände:

  • ReadyToUpload, was bedeutet, dass der Datenträger bereit ist, einen Upload zu empfangen, aber noch keine sichere Zugriffssignatur (SAS) generiert wurde.
  • „ActiveUpload“: Der Datenträger ist für den Upload bereit, und die SAS wurde generiert.

Hinweis

Für den verwalteten Datenträger fallen in beiden Zuständen Kosten an, die sich aus den Preisen für HDD Standard-Datenträger ergeben. Welcher Art von Datenträger verwendet wird, spielt keine Rolle. Das bedeutet, dass beispielsweise der Abrechnungsvorgang für P10 und S10 identisch ist. Dies ist solange der Fall, bis revoke-access für den verwalteten Datenträger aufgerufen wird. Dieser Vorgang ist erforderlich, um den Datenträger an eine VM anzufügen.

Erstellen eines leeren verwalteten Datenträgers

Bevor Sie eine leere HDD Standard zum Hochladen erstellen können, benötigen Sie die Dateigröße der VHD in Byte, die Sie hochladen möchten. Der Beispielcode ruft diese Größe für Sie ab. Wenn Sie die Größe manuell abrufen möchten, können Sie Folgendes verwenden: $vhdSizeBytes = (Get-Item "<fullFilePathHere>").length. Dieser Wert wird verwendet, wenn der Parameter -UploadSizeInBytes angegeben wird.

Erstellen Sie nun für das Hochladen (Upload) einen leeren HDD Standard-Datenträger. Führen Sie dazu in Ihrer lokalen Shell das New-AzDiskConfig-Cmdlet aus, für das Sie die Upload-Einstellung im -CreateOption-Parameter und den -UploadSizeInBytes-Parameter angeben. Rufen Sie dann New-AzDisk auf, um den Datenträger zu erstellen.

Ersetzen Sie <yourdiskname>, <yourresourcegroupname> und <yourregion>, und führen Sie dann die folgenden Befehle aus:

Wichtig

Wenn Sie einen Betriebssystemdatenträger erstellen, fügen Sie -HyperVGeneration '<yourGeneration>' zu New-AzDiskConfig hinzu.

Wenn Sie Microsoft Entra ID zum Schützen von Uploads verwenden, fügen Sie -dataAccessAuthMode 'AzureActiveDirectory' zu New-AzDiskConfig hinzu.
Beim Hochladen auf Disk Ultra oder SSD Premium v2 müssen Sie die richtige Sektorgröße des Zieldatenträgers auswählen. Wenn Sie eine VHDX-Datei mit einer logischen Sektorgröße von 4k verwenden, muss der Zieldatenträger auf 4k festgelegt werden. Wenn Sie eine VHD-Datei mit einer logischen Sektorgröße von 512 verwenden, muss der Zieldatenträger auf 512 festgelegt werden.

VHDX-Dateien mit einer logischen Sektorgröße von 512k werden nicht unterstützt.

$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

Wenn Sie einen anderen Datenträgertyp hochladen möchten, ersetzen Sie Standard_LRS durch Premium_LRS, Premium_ZRS, StandardSSD_ZRS, StandardSSD_LRS oder UltraSSD_LRS.

Generieren einer schreibbaren SAS

Nachdem Sie einen leeren verwalteten Datenträger erstellt haben, der für den Hochladevorgang konfiguriert ist, können Sie jetzt eine VHD auf diesen Datenträger hochladen. Um eine VHD auf den Datenträger hochzuladen, benötigen Sie eine beschreibbare SAS, mit der Sie auf den Datenträger als Hochladeziel verweisen können.

Ersetzen Sie <yourdiskname> und <yourresourcegroupname>, und verwenden Sie dann die folgenden Befehle, um eine beschreibbare SAS für Ihren leeren verwalteten Datenträger zu generieren:

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

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

Hochladen einer VHD oder VHDX

Sie verfügen nun über eine SAS für Ihren leeren verwalteten Datenträger und können diese verwenden, um diesen Datenträger als Ziel für den Uploadbefehl anzugeben.

Verwenden Sie AzCopy v10, um Ihre lokale VHD- oder VHDX-Datei auf einen verwalteten Datenträger hochzuladen. Dabei müssen Sie den von Ihnen generierten SAS-URI angeben.

Der Durchsatz für diesen Upload entspricht dem des gleichwertigen HDD Standard-Datenträgers. Wenn Sie beispielsweise als Größe S4 verwenden, beträgt der Durchsatz bis zu 60 MiB/s. Verwenden Sie hingegen als Größe S70, beträgt der Durchsatz bis zu 500 MiB/s.

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

Nachdem der Upload abgeschlossen wurde und Sie keine Daten mehr auf den Datenträger schreiben müssen, widerrufen Sie die SAS. Dadurch ändert sich der Zustand des verwalteten Datenträgers, und Sie können den Datenträger an eine VM anfügen.

Ersetzen Sie <yourdiskname> und <yourresourcegroupname>, und führen Sie dann die folgenden Befehle aus:

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

Kopieren eines verwalteten Datenträgers

Der direkte Upload vereinfacht auch das Kopieren eines verwalteten Datenträgers. Sie können entweder innerhalb derselben Region kopieren oder den verwalteten Datenträger in eine andere Region kopieren.

Das folgende Skript führt dies für Sie aus. Der Vorgang ähnelt mit einigen Unterschieden den zuvor beschriebenen Schritten, da Sie nun mit einem vorhandenen Datenträger arbeiten.

Wichtig

Sie müssen ein Offset von 512 hinzufügen, wenn Sie die Datenträgergröße eines verwalteten Datenträgers aus Azure in Byte angeben. Dies liegt daran, dass Azure die Fußzeile beim Zurückgeben der Datenträgergröße auslässt. Der Kopiervorgang schlägt fehl, wenn Sie nicht so vorgehen. Das folgende Skript fügt dieses Offset bereits für Sie ein.

Ersetzen Sie <sourceResourceGroupHere>, <sourceDiskNameHere>, <targetDiskNameHere>, <targetResourceGroupHere>, <yourOSTypeHere> und <yourTargetLocationHere> (ein Beispiel für einen Standortwert ist „uswest2“) durch Ihre Werte, und führen Sie dann das folgende Skript aus, um einen verwalteten Datenträger zu kopieren.

Tipp

Wenn Sie einen Betriebssystemdatenträger erstellen, fügen Sie -HyperVGeneration '<yourGeneration>' in New-AzDiskConfig hinzu.


$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 

Nächste Schritte

Sie haben erfolgreich eine VHD auf den verwalteten Datenträger hochgeladen und können Datenträger nun an eine VM anfügen, um ihn zu verwenden.

Informationen dazu, wie Sie einen Datenträger für Daten an eine VM anfügen, finden Sie in folgendem Artikel: Attach a data disk to a Windows VM with PowerShell (Hinzufügen eines Datenträgers zu einer Windows-VM mit PowerShell). Informationen zum Verwenden des Datenträgers als Betriebssystemdatenträger finden Sie unter Erstellen einer Windows-VM von einem speziellen Datenträger.

Wenn Sie weitere Fragen haben, lesen Sie den Abschnitt zum Hochladen eines verwalteten Datenträgers in den häufig gestellten Fragen.