Przekazywanie dysku VHD na platformę Azure lub kopiowanie dysku zarządzanego do innego regionu — Azure PowerShell

Dotyczy: ✔️ maszyny wirtualne z systemem Windows

W tym artykule wyjaśniono, jak przekazać dysk VHD z komputera lokalnego do dysku zarządzanego platformy Azure lub skopiować dysk zarządzany do innego regionu przy użyciu modułu Azure PowerShell. Proces przekazywania dysku zarządzanego, znany również jako bezpośrednie przekazywanie, umożliwia przekazanie dysku VHD o rozmiarze do 32 TiB bezpośrednio na dysk zarządzany. Obecnie bezpośrednie przekazywanie jest obsługiwane w przypadku dysków Ultra Disk, SSD w warstwie Premium w wersji 2, SSD w warstwie Premium, dysków SSD w warstwie Standardowa i hdd w warstwie Standardowa.

Jeśli udostępniasz rozwiązanie do tworzenia kopii zapasowych dla maszyn wirtualnych IaaS na platformie Azure, należy użyć bezpośredniego przekazywania w celu przywrócenia kopii zapasowych klientów na dyski zarządzane. Podczas przekazywania wirtualnego dysku twardego ze źródła zewnętrznego do platformy Azure szybkość zależy od przepustowości lokalnej. Podczas przekazywania lub kopiowania z maszyny wirtualnej platformy Azure przepustowość będzie taka sama jak dyski HDD w warstwie Standardowa.

Bezpieczne przekazywanie za pomocą identyfikatora Entra firmy Microsoft

Jeśli używasz identyfikatora Entra firmy Microsoft do kontrolowania dostępu do zasobów, możesz teraz użyć go do ograniczenia przekazywania dysków zarządzanych platformy Azure. Ta funkcja jest dostępna jako oferta ogólnie dostępna we wszystkich regionach. Gdy użytkownik próbuje przekazać dysk, platforma Azure weryfikuje tożsamość żądanego użytkownika w identyfikatorze Entra firmy Microsoft i potwierdza, że użytkownik ma wymagane uprawnienia. Na wyższym poziomie administrator systemu może ustawić zasady na poziomie konta platformy Azure lub subskrypcji, aby upewnić się, że tożsamość firmy Microsoft Entra ma niezbędne uprawnienia do przekazywania przed zezwoleniem na przekazanie dysku lub migawki dysku. Jeśli masz pytania dotyczące zabezpieczania przekazywania przy użyciu identyfikatora Microsoft Entra ID, skontaktuj się z tą wiadomością e-mail: azuredisks@microsoft .com

Wymagania wstępne

  • Zainstaluj najnowszy moduł programu Azure PowerShell.

Ograniczenia

  • Dysków VHD nie można przekazać do pustych migawek.
  • Usługa Azure Backup obecnie nie obsługuje dysków zabezpieczonych za pomocą identyfikatora Entra firmy Microsoft.
  • Usługa Azure Site Recovery obecnie nie obsługuje dysków zabezpieczonych za pomocą identyfikatora Entra firmy Microsoft.

Przypisywanie roli RBAC

Aby uzyskać dostęp do dysków zarządzanych zabezpieczonych za pomocą identyfikatora Entra firmy Microsoft, użytkownik żądający musi mieć rolę operator danych dla Dyski zarządzane lub rolę niestandardową z następującymi uprawnieniami:

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

Aby uzyskać szczegółowe instrukcje dotyczące przypisywania roli, zobacz Przypisywanie ról platformy Azure przy użyciu programu Azure PowerShell. Aby utworzyć lub zaktualizować rolę niestandardową, zobacz Tworzenie lub aktualizowanie ról niestandardowych platformy Azure przy użyciu programu Azure PowerShell.

Rozpocznij

Istnieją dwa sposoby przekazywania wirtualnego dysku twardego za pomocą modułu Azure PowerShell: możesz użyć polecenia Add-AzVHD , które automatyzuje większość procesu, lub możesz wykonać przekazywanie ręcznie za pomocą narzędzia AzCopy.

W przypadku dysków SSD w warstwie Premium, dysków SSD w warstwie Standardowa i dysków HDD w warstwie Standardowa należy zazwyczaj używać polecenia Add-AzVHD. Jeśli jednak przekazujesz do dysku Ultra Disk lub SSD w warstwie Premium w wersji 2 lub jeśli musisz przekazać dysk VHD większy niż 50 GiB, musisz przekazać dysk VHD lub VHDX ręcznie za pomocą narzędzia AzCopy. Dyski VHD 50 GiB i większe przekazywanie szybsze przy użyciu narzędzia AzCopy i polecenia Add-AzVhd nie obsługują obecnie przekazywania do dysku Ultra Disk ani ssd w warstwie Premium w wersji 2.

Aby uzyskać wskazówki dotyczące kopiowania dysku zarządzanego z jednego regionu do innego, zobacz Kopiowanie dysku zarządzanego.

Korzystanie z polecenia Add-AzVHD

Wymagania wstępne

Przekazywanie wirtualnego dysku twardego

(Opcjonalnie) Udzielanie dostępu do dysku

Jeśli identyfikator Entra firmy Microsoft jest używany do wymuszania ograniczeń przekazywania subskrypcji lub na poziomie konta, polecenie Add-AzVHD powiedzie się tylko w przypadku próby przez użytkownika, który ma odpowiednią rolę RBAC lub wymagane uprawnienia. Musisz przypisać uprawnienia RBAC, aby udzielić dostępu do dysku i wygenerować zapisywalną sygnaturę dostępu współdzielonego.

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

Korzystanie z polecenia Add-AzVHD

Poniższy przykład przekazuje wirtualny dysk twardy z komputera lokalnego do nowego dysku zarządzanego platformy Azure przy użyciu polecenia Add-AzVHD. Zastąp <your-filepath-here>ciąg , <your-resource-group-name><desired-region>i <desired-managed-disk-name> swoimi parametrami:

Uwaga

Jeśli używasz identyfikatora Entra firmy Microsoft do wymuszania ograniczeń przekazywania, dodaj DataAccessAuthMode 'AzureActiveDirectory' go na końcu Add-AzVhd polecenia.

# 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

Przekazywanie ręczne

Wymagania wstępne

Aby przekazać dysk VHD na platformę Azure, należy utworzyć pusty dysk zarządzany skonfigurowany na potrzeby tego procesu przekazywania. Przed utworzeniem jednego z nich znajdują się dodatkowe informacje, które należy wiedzieć o tych dyskach.

Ten rodzaj dysku zarządzanego ma dwa unikatowe stany:

  • ReadyToUpload, co oznacza, że dysk jest gotowy do odbierania przekazywania, ale nie wygenerowano podpisu bezpiecznego dostępu (SAS).
  • ActiveUpload, co oznacza, że dysk jest gotowy do odebrania przekazywania, a sygnatura dostępu współdzielonego została wygenerowana.

Uwaga

Mimo że w jednym z tych stanów dysk zarządzany będzie rozliczany zgodnie ze standardowymi cenami dysków HDD, niezależnie od rzeczywistego typu dysku. Na przykład wartość P10 będzie rozliczana jako S10. Będzie to prawdziwe do momentu revoke-access wywołania na dysku zarządzanym, który jest wymagany do dołączenia dysku do maszyny wirtualnej.

Tworzenie pustego dysku zarządzanego

Przed utworzeniem pustego standardowego dysku twardego do przekazania potrzebny będzie rozmiar pliku wirtualnego dysku twardego, który chcesz przekazać w bajtach. Przykładowy kod otrzyma to za Ciebie, ale aby to zrobić samodzielnie, możesz użyć: $vhdSizeBytes = (Get-Item "<fullFilePathHere>").length. Ta wartość jest używana podczas określania parametru -UploadSizeInBytes .

Teraz w powłoce lokalnej utwórz pusty standardowy dysk TWARDY do przekazania, określając ustawienie Przekaż w parametrze -CreateOption , a także parametr -UploadSizeInBytes w poleceniu cmdlet New-AzDiskConfig . Następnie wywołaj polecenie New-AzDisk , aby utworzyć dysk.

Zastąp ciąg <yourdiskname>, <yourresourcegroupname>, a <yourregion> następnie uruchom następujące polecenia:

Ważne

Jeśli tworzysz dysk systemu operacyjnego, dodaj -HyperVGeneration '<yourGeneration>' go do pliku New-AzDiskConfig.

Jeśli używasz identyfikatora Entra firmy Microsoft do zabezpieczania przekazywania, dodaj -dataAccessAuthMode 'AzureActiveDirectory' element do .New-AzDiskConfig
Podczas przekazywania do dysku Ultra Disk lub SSD w warstwie Premium w wersji 2 należy wybrać prawidłowy rozmiar sektora dysku docelowego. Jeśli używasz pliku VHDX o rozmiarze sektora logicznego 4k, dysk docelowy musi być ustawiony na 4k. Jeśli używasz pliku VHD o rozmiarze sektora logicznego 512, dysk docelowy musi być ustawiony na 512.

Pliki VHDX o rozmiarze sektora logicznego 512k nie są obsługiwane.

$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

Jeśli chcesz przekazać inny typ dysku, zastąp Standard_LRS Premium_LRS, Premium_ZRS, StandardSSD_ZRS, StandardSSD_LRS lub UltraSSD_LRS.

Generowanie zapisywalnej sygnatury dostępu współdzielonego

Po utworzeniu pustego dysku zarządzanego skonfigurowanego dla procesu przekazywania możesz przekazać do niego dysk VHD. Aby przekazać dysk VHD na dysk, potrzebny będzie zapisywalny sygnatura dostępu współdzielonego, aby można było odwoływać się do niego jako miejsce docelowe przekazywania.

Aby wygenerować zapisywalną sygnaturę dostępu współdzielonego pustego dysku zarządzanego, zastąp wartości <yourdiskname>i <yourresourcegroupname>, a następnie użyj następujących poleceń:

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

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

Przekazywanie dysku VHD lub VHDX

Teraz, gdy masz sygnaturę dostępu współdzielonego dla pustego dysku zarządzanego, możesz użyć go do ustawienia dysku zarządzanego jako miejsca docelowego dla polecenia przekazywania.

Użyj narzędzia AzCopy w wersji 10, aby przekazać lokalny plik VHD lub VHDX na dysk zarządzany, określając wygenerowany identyfikator URI sygnatury dostępu współdzielonego.

Ten przekazywanie ma taką samą przepływność jak równoważny dysk TWARDY w warstwie Standardowa. Na przykład jeśli masz rozmiar, który odpowiada S4, przepływność będzie wynosić do 60 MiB/s. Jednak jeśli masz rozmiar, który odpowiada S70, będziesz mieć przepływność do 500 MiB/s.

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

Po zakończeniu przekazywania i nie trzeba już zapisywać więcej danych na dysku, odwoływanie sygnatury dostępu współdzielonego. Odwołanie sygnatury dostępu współdzielonego spowoduje zmianę stanu dysku zarządzanego i umożliwi dołączenie dysku do maszyny wirtualnej.

Zastąp <yourdiskname>wartości i <yourresourcegroupname>, a następnie uruchom następujące polecenie:

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

Kopiowanie dysku zarządzanego

Bezpośrednie przekazywanie upraszcza również proces kopiowania dysku zarządzanego. Możesz skopiować dysk zarządzany w tym samym regionie lub skopiować go do innego regionu.

Poniższy skrypt wykona to dla Ciebie, proces jest podobny do opisanych wcześniej kroków, z pewnymi różnicami, ponieważ pracujesz z istniejącym dyskiem.

Ważne

Należy dodać przesunięcie 512, gdy udostępniasz rozmiar dysku w bajtach dysku zarządzanego z platformy Azure. Dzieje się tak, ponieważ platforma Azure pomija stopkę podczas zwracania rozmiaru dysku. Kopiowanie zakończy się niepowodzeniem, jeśli tego nie zrobisz. Poniższy skrypt już to robi.

Zastąp wartości <sourceResourceGroupHere>, , <sourceDiskNameHere><targetDiskNameHere>, <targetResourceGroupHere><yourOSTypeHere> i <yourTargetLocationHere> (przykładem wartości lokalizacji będzie uswest2), a następnie uruchom następujący skrypt, aby skopiować dysk zarządzany.

Napiwek

Jeśli tworzysz dysk systemu operacyjnego, dodaj -HyperVGeneration '<yourGeneration>' element do .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 

Następne kroki

Po pomyślnym przekazaniu wirtualnego dysku twardego do dysku zarządzanego możesz dołączyć dysk do maszyny wirtualnej i rozpocząć korzystanie z niego.

Aby dowiedzieć się, jak dołączyć dysk danych do maszyny wirtualnej, zobacz nasz artykuł na ten temat: Dołączanie dysku danych do maszyny wirtualnej z systemem Windows przy użyciu programu PowerShell. Aby użyć dysku jako dysku systemu operacyjnego, zobacz Tworzenie maszyny wirtualnej z systemem Windows na podstawie wyspecjalizowanego dysku.

Jeśli masz dodatkowe pytania, zapoznaj się z sekcją dotyczącą przekazywania dysku zarządzanego w często zadawanych pytaniach.