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
- Zainstaluj moduł Azure PowerShell.
- Dysk VHD został przygotowany na platformę Azure, przechowywany lokalnie.
- W systemie Windows: nie musisz konwertować dysku VHD na VHDx, konwertować go na stały rozmiar lub zmienić jego rozmiar, aby uwzględnić przesunięcie 512 bajtów.
Add-AZVHD
Wykonuje te funkcje za Ciebie.- Aby można było wykonywać te funkcje, funkcja Hyper-V musi być włączona dla polecenia Add-AzVHD.
- W systemie Linux: te akcje należy wykonać ręcznie. Aby uzyskać szczegółowe informacje, zobacz Zmienianie rozmiaru dysków VHD.
- W systemie Windows: nie musisz konwertować dysku VHD na VHDx, konwertować go na stały rozmiar lub zmienić jego rozmiar, aby uwzględnić przesunięcie 512 bajtów.
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
- Pobierz najnowszą wersję narzędzia AzCopy w wersji 10.
- Zainstaluj moduł Azure PowerShell.
- Stały rozmiar dysku VHD, który został przygotowany dla platformy Azure, przechowywany lokalnie.
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.
Ważne
15 lutego 2025 r. czas dostępu sygnatury dostępu współdzielonego (SAS) dla dysków i migawek będzie ograniczony do maksymalnie 60 dni. Próba wygenerowania sygnatury dostępu współdzielonego z wygaśnięciem dłuższym niż 60 dni powoduje wystąpienie błędu. Każda istniejąca sygnatura dostępu współdzielonego dysku lub migawki utworzona z wygaśnięciem dłuższym niż 60 dni może przestać działać 60 dni po dacie utworzenia i spowoduje wystąpienie błędu 403 podczas autoryzacji.
Jeśli wygaśnięcie dysku zarządzanego lub sygnatury dostępu współdzielonego migawki jest dłuższe niż 60 dni, odwołaj dostęp i wygeneruj nową sygnaturę dostępu współdzielonego żądającą dostępu przez 60 dni (5184 000 sekund) lub mniej. Zwiększ ogólne bezpieczeństwo przy użyciu sygnatury dostępu współdzielonego z krótszymi datami wygaśnięcia. Wprowadź te zmiany przed 15 lutego 2025 r., aby zapobiec przerwom w działaniu usługi. Poniższe linki mogą służyć do znajdowania, odwoływanie i żądanie nowej sygnatury dostępu współdzielonego.
- Aby sprawdzić, czy dysk ma aktywną sygnaturę dostępu współdzielonego, możesz użyć interfejsu API REST, interfejsu wiersza polecenia platformy Azure lub modułu programu Azure PowerShell i zbadać właściwość DiskState.
- Aby odwołać sygnaturę dostępu współdzielonego, możesz użyć interfejsu API REST, interfejsu wiersza polecenia platformy Azure lub modułu Azure PowerShell.
- Aby utworzyć sygnaturę dostępu współdzielonego, możesz użyć interfejsu API REST, interfejsu wiersza polecenia platformy Azure lub modułu programu Azure PowerShell i ustawić czas trwania dostępu na 5184 000 sekund lub mniej.
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.