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. Der direkte Upload wird derzeit für die Datenträgertypen HDD Standard, SSD Standard und SSD Premium unterstützt. Für Ultra-Datenträger wird er noch nicht 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.
Sichere Uploads mit Azure AD
Wenn Sie Azure Active Directory (Azure AD) zum Steuern des Ressourcenzugriffs verwenden, können Sie diese Lösung jetzt verwenden, um Uploads von verwalteten Azure-Datenträgern einzuschränken. Dieses Feature ist als GA-Angebot in allen Regionen verfügbar. Beim Versuch, einen Datenträger hochzuladen, überprüft Azure die Identität des anfordernden Benutzers in Azure AD, um sicherzustellen, dass der Benutzer über die erforderlichen Berechtigungen verfügt. Auf höherer Ebene kann ein Systemadministrator eine Richtlinie auf Azure-Konto- oder Abonnementebene festlegen, um sicherzustellen, dass eine Azure AD-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 Azure AD haben, wenden Sie sich an folgende E-Mail-Adresse: azuredisks@microsoft.com
Voraussetzungen
- Installieren Sie das neueste Azure PowerShell-Modul.
Beschränkungen
- VHDs können nicht in leere Momentaufnahmen hochgeladen werden.
- Azure Backup unterstützt derzeit keine mit Azure AD gesicherten Datenträger.
Zuweisen einer RBAC-Rolle
Um auf mit Azure AD gesicherte verwaltete Datenträger zuzugreifen, muss der anfordernde Benutzer entweder die Rolle Datenoperator für verwaltete Datenträger oder eine benutzerdefinierte Rolle mit den folgenden Berechtigungen ausüben:
- 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.
Im Allgemeinen sollten Sie Add-AzVHD verwenden. Wenn Sie jedoch eine VHD hochladen müssen, die größer als 50 GiB ist, sollten Sie erwägen, die VHD manuell mit AzCopy hochzuladen. VHDs mit einer Größe von 50 GiB und mehr werden mit AzCopy schneller hochgeladen.
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.
- 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.
Hochladen einer VHD-Datei
(Optional) Gewähren des Zugriffs auf den Datenträger
Wenn Azure AD 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 verwendet wird, der ü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 Azure AD 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
- Laden Sie die neueste Version von AzCopy V10 herunter.
- Installieren des Azure PowerShell-Moduls
- Eine VHD fester Größe, die für Azure vorbereitet wurde und lokal gespeichert ist.
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:
Tipp
Wenn Sie einen Betriebssystemdatenträger erstellen, fügen Sie -HyperVGeneration '<yourGeneration>'
zu New-AzDiskConfig
hinzu.
Wenn Sie Azure AD zum Schützen Ihrer Uploads verwenden, fügen Sie New-AzDiskConfig
den Zusatz -dataAccessAuthMode 'AzureActiveDirectory'
hinzu.
$vhdSizeBytes = (Get-Item "<fullFilePathHere>").length
$diskconfig = New-AzDiskConfig -SkuName 'Standard_LRS' -OsType 'Windows' -UploadSizeInBytes $vhdSizeBytes -Location '<yourregion>' -CreateOption 'Upload'
New-AzDisk -ResourceGroupName '<yourresourcegroupname>' -DiskName '<yourdiskname>' -Disk $diskconfig
Wenn Sie für den Upload einen SSD Premium- oder SSD Standard-Datenträger verwenden möchten, ersetzen Sie Standard_LRS durch Premium_LRS oder StandardSSD_LRS. Ultra-Datenträger werden zurzeit nicht unterstützt.
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-Datei
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 die lokale VHD-Datei auf einen verwalteten Datenträger hochzuladen. Dabei müssen Sie den 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.