[Azure]ARM虚拟机整机磁盘快照[1]——创建快照
来源:互联网 发布:淘宝拍摄灯光布置图解 编辑:程序博客网 时间:2024/05/17 01:44
这一篇分为三个部分,创建整机快照,删除虚拟机快照,从快照还原虚拟机。
第一部分先介绍快照功能,创建快照的思路比较简单,利用 Microsoft.WindowsAzure.Storage 库中的方法来获取 Blob 并为其创建快照。由于是对虚拟机进行整机磁盘快照,所以做的时候先要获取虚拟机的 OS Disk 和 Data Disk 的信息,获取出来后,再针对这些磁盘全部做一遍快照就好了。需要注意的一点是,这种做法,每块磁盘的快照时间会有差异,也就是说并不是同时完成的快照,因此,这一点在我们进行删除快照以及还原快照的时候会稍有影响(后面会说到)。思路上我们先做 OS Disk 的快照,再做 Data Disk 的快照,这样我们后续就可以根据 OS Disk 的快照时间来做参照点了。
不多说,直接看下 Azure Powershell 的脚本代码,代码中做了一些封装,方便使用其他脚本调用:
param( [Parameter(Mandatory = $true)] [string]$SubscriptionName, [Parameter(Mandatory = $true)] [string]$ResourceGroupName, [Parameter(Mandatory = $true)] [string]$VMName)Function CreateSnapshotForDisk($vhdAbsoluteUri){ $StorageAccountName = $vhdAbsoluteUri.Substring(8, $vhdAbsoluteUri.IndexOf(".blob.core.chinacloudapi.cn") - 8); #length of "https://" is 8 $ContainerPathIndex = $vhdAbsoluteUri.IndexOf("blob.core.chinacloudapi.cn/") + 27; $ContainerName = $vhdAbsoluteUri.SubString($ContainerPathIndex, $vhdAbsoluteUri.IndexOf('/', $ContainerPathIndex) - $ContainerPathIndex); $BlobName = $vhdAbsoluteUri.SubString($vhdAbsoluteUri.LastIndexOf('/') + 1); $storageAccount = Get-AzureRmStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName; $storageContext = $storageAccount.Context; $blobClient = $storageContext.Context.StorageAccount.CreateCloudBlobClient(); $blobContainer = $blobClient.GetContainerReference($ContainerName); $blob = $blobContainer.GetBlockBlobReference($blobName); $Blob.CreateSnapshot() | Out-Null;}Function CreateSnapshotForVM($rgName, $vmName){ $vm = Get-AzureRmVM -ResourceGroupName $rgName -Name $vmName -WarningAction Ignore; $osDiskUri = $vm.StorageProfile.OsDisk.Vhd.Uri; CreateSnapshotForDisk $osDiskUri; foreach($dataDiskUri in $vm.StorageProfile.DataDisks.Vhd.Uri) { CreateSnapshotForDisk $dataDiskUri; }}#$Cred = New-Object System.Management.Automation.PSCredential("XXXXXXXX@XXXXXXXX.parter.onmschina.cn", (ConvertTo-SecureString "XXXXXXXX" -AsPlainText -Force));#[void](Login-AzureRmAccount -EnvironmentName AzureChinaCloud -Credential $AzureRMCred);[void](Select-AzureRmSubscription -SubscriptionName $SubscriptionName);Write-Host ("Start creating snapshot for VM {0} at {1}" -f $VMName,(Get-Date)) -ForegroundColor Yellow;CreateSnapshotForVM $ResourceGroupName $VMName;Write-Host ("Finished creating snapshot for VM {0} at {1}" -f $VMName,(Get-Date)) -ForegroundColor Green;
脚本中的认证部分可以加也可以不加,具体看用处了。
调用方法就按照参数指定的内容就可以了:
PS> &.\[ARM]create_snapshot_for_VM.ps1 -SubscriptionName <Subscription Name> -ResourceGroupName <Resource Group Name> -VMName <VM Name>
脚本运行结果:
阅读全文
1 0
- [Azure]ARM虚拟机整机磁盘快照[1]——创建快照
- [Azure]ARM虚拟机整机磁盘快照[3]——清空虚拟机快照
- [Azure]ARM虚拟机整机磁盘快照[4]——从快照还原虚拟机
- [Azure]ARM虚拟机整机磁盘快照[2]——删除快照
- [Azure]ARM模式托管磁盘的快照与还原[1]——创建与查看
- [Azure]ARM模式托管磁盘的快照与还原[2]——删除与恢复
- [Azure]使用Powershell为ASM虚拟机创建快照
- 创建虚拟机快照
- 使用托管快照创建作为 Azure 托管磁盘存储的 VHD 的副本
- 使用qemu-img管理虚拟机磁盘镜像(创建虚拟机,虚拟机快照)
- 使用Qemu-img管理虚拟机磁盘镜像(创建虚拟机,虚拟机快照)
- 使用qmeu-img管理虚拟机磁盘镜像(创建虚拟机,虚拟机快照)
- 使用qemu-img管理虚拟机磁盘镜像(创建虚拟机,虚拟机快照)
- 使用qemu-img管理虚拟机磁盘镜像(创建虚拟机,虚拟机快照)
- 虚拟机磁盘快照(vhd格式)
- 虚拟机快照
- 通过递增快照备份 Azure 非托管 VM 磁盘
- Xen虚拟机:用Linux命令创建快照
- Java循环
- POJ3264 Balanced Lineup(线段树,区间最值)
- 自定义变量不能用怎么办,将文件中的数据直接读取到普通变量中
- 如何在React中做Ajax 请求?
- 小白学习日记1:PL/SQL连接本地Oracle数据库Part2
- [Azure]ARM虚拟机整机磁盘快照[1]——创建快照
- jboss domain配置
- 优化Spring配置文件中的数据库连接部分
- STM32启动文件详解1
- SVN : Working copy is too old (format 10, created by Subversion 1.6)
- 崩溃的Python学习过程2——ImportError: No module named PIL(windows)
- 开发环境部署
- 1185: 添加记录(结构体专题)
- yii2 批量删除