Microsoft Azure – 复制 Azure 托管数据磁盘
在本文中,我们将了解“如何管理从现有磁盘到新磁盘的磁盘数据”。在这个过程中,我们将使用 Azure PowerShell 脚本来运行它。我们在这里尝试实现的是,首先我们需要一个现有托管数据磁盘的副本,我们正在使用 Azure PageBlob 中的复制模块将数据复制到新的托管磁盘。
此方案可用于以下活动:
- 克隆托管磁盘数据并跨多个 Azure 服务器使用。
- 从一个区域到另一个区域的数据传输作为备份或任何其他项目需要
- 满足备份需求
- 用于清理现有托管磁盘中的数据。
- 在少数情况下,此过程也可用于版本控制。
先决条件:
- 您必须有一个现有的数据磁盘才能在 Azure 中复制
- 所有者,贡献者访问是必需的。
- 如果您使用的是 Windows PowerShell,则应安装 AzCopy v10。
执行:
按照以下步骤复制 Azure 托管数据磁盘:
步骤 1:登录Azure 门户
第 2 步:从 azure 菜单访问Azure Cloud Shell >> 切换到PowerShell模式后登录
第 3 步:现在,使用以下命令创建一个新的 PowerShell 文件。比如说“copy-managed-data-disk.ps1”。
touch copy-managed-data-disk.ps1
第 4 步:要写入文件或编辑文件,请使用以下命令
code copy-managed-data-disk.ps1
将以下 PowerShell 脚本复制粘贴到 copy-managed-data-disk.ps1
$SubscriptionName = "_add_subscription_name"
Set-AzureRmContext -SubscriptionName "$SubscriptionName" | Out-Null
$sourceRG = "_add_source_rg_name_"
$sourceDiskName = "_add_source_datadisk_name_"
$targetDiskName = "_add_target_datadisk_name_"
$targetRG = "_add_target_rg_name_"
$targetLocate = "_add_target_location_"
#Expected value for OS is either "Windows" or "Linux"
$targetOS = "add_system_ostype_"
$SKUName = '_add_disk_sku_type_' #Premium_LRS or Standard_LRS
$sourceDisk = Get-AzDisk -ResourceGroupName $sourceRG -DiskName $sourceDiskName
# Adding the sizeInBytes with the 512 offset, and the -Upload flag
$targetDiskconfig = New-AzDiskConfig -SkuName -osType $targetOS `
-UploadSizeInBytes $($sourceDisk.DiskSizeBytes+512) `
-Location $targetLocate -CreateOption 'Upload'
$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
现在,在脚本中填写以下详细信息
- $SubscriptionName = “_add_subscription_name”
- $sourceRG = “_add_source_rg_name_”
- $sourceDiskName = “_add_source_datadisk_name_”
- $targetDiskName = “_add_target_datadisk_name_”
- $targetRG = “_add_target_rg_name_”
- $targetLocate = “_add_target_location_”
- $targetOS = “add_system_ostype_” #“Windows”或“Linux”
- $SKUName = '_add_disk_sku_type_' #“Premium_LRS”或“Standard_LRS”或任何其他。
注意:根据您将数据复制到磁盘的要求修改更改。
第 5 步:在脚本中进行更改后,使用以下命令运行 PowerShell 脚本
./copy-managed-data-disk.ps1
注意:执行过程需要时间,具体取决于磁盘的大小。平均而言,如果您使用的是 Premium LRS,它将在 15-20 内处理 50 GB 的数据。在标准 LRS 的情况下,将数据从一个磁盘复制到另一个磁盘平均可能需要 30-40 分钟。
输出:一次,复制完成。然后结果将如下所示: