Azure blob Storage Snapshot

用户虚拟机硬盘的备份是客户在部署云应用中是一个非常重要的部分。

目前有多种平台的备份方法:

  1. 捕获镜像:可以采用Capture的方式(powershell命令为Save-AzureVMImage)捕获虚拟机系统盘和数据盘。但这种方式占用空间太大,而且Capture的Image数量也是有数量限制的。所以不是优选的方案。
  2. 复制硬盘vhd文件:通过AzCopy的方式,把VM的vhd复制到部分的blob的container中。这种方式也是占用空间大。不适合大规模的备份,只适合灾备时的使用。
  3. 对Blob的vhd文件snapshot:通过blob snapshot功能对VM的vhd文件进行blob snapshot。这种方式节省空间,操作方便,是虚拟机进行备份的非常好的一种方式。

Azure的Snapshot是按照实际使用空间进行计费的。由于Snapshot遵循"写时复制"的方式,如果Base Blob的内容不发生变化,Snapshot里是没有内容的,只有Base Blob发生变化时,Snapshot会把Base Blob中老的内容复制过来。

具体的计费方式如下:

情况一: 如果Snapshot的内容和Base Blob的内容相同,收费只收Base Blob的费用(3个单元)。

情况二:如果Base Blob中的CCC内容发生更新,Snapshot会复制Base Blob中老的CCC部分。收费将收4个单元

情况三:如果Base Blob中的CCC内容删除,增加了DDD,Snapshot中会复制Base Blob中老的CCC部分。收费将收4个单元

情况四:多个blob块出现更改,多个snapshot,按照实际的用量进行计费。图中的计费单元为8个

具体的blob snapshot的实现有三个部分:1.创建;2.删除超过xx天的snapshot;3.恢复snapshot。本文将介绍这三个功能的脚本:

  1. 创建Snapshot:

$storageaccounts = Get-AzureStorageAccount

foreach ($storageaccount in $storageaccounts)

{

Set-AzureSubscription -SubscriptionName xxxx -CurrentStorageAccountName $storageaccount.StorageAccountName

$pageblobs = Get-AzureStorageBlob -Container vhds | Where-Object {$_.Name -match ".vhd"}

foreach ($blob in $pageblobs)

{

if(!$blob.ICloudBlob.IsSnapshot)

{

}

}

}

  1. 删除超过14天的Snapshot

$storageaccounts = Get-AzureStorageAccount

foreach($storageaccount in $storageaccounts)

{

$pageblobs = Get-AzureStorageBlob -Container vhds | Where-Object {$_.Name -match ".vhd"}

$now = Get-Date

foreach($pageblob in $pageblobs)

{

$diff = [datetime]::FromBinary($now.Ticks-$pageblob.SnapshotTime.Ticks)

if($pageblob.ICloudBlob.IsSnapshot)

{

if ( $diff.dayofyear -ge 14)

{

write-host "the snapshot is "$diff.dayofyear "days"

write-host "delete"

$pageblob.ICloudBlob.Delete()

}else

{

write-host "the snapshot is "$diff.dayofyear "days"

Write-Host "not delete snapshot"

}

}else

{

write-host "is not snapshot, do not delete"

}

}

}

3.恢复7天前的Snapshot

$StorageAccount = "XXXX"

$StorageKey = "XXX=="

$Ctr = New-AzureStorageContext -StorageAccountName $StorageAccount -StorageAccountKey $StorageKey

$SrcContainer = "container1"

$DestContainer = "container2"

$blobname ="xxx.vhd"

$Date=date

$DestBlob = "R"+$Date.DayOfYear+$blobname

$DayOfYear = 7

$times = Get-AzureStorageBlob -Container $SrcContainer | Where-Object {$_.Name -match "xxx.vhd" } | Select -ExpandProperty SnapshotTime

foreach($time in $times)

{

if ($time.DayOfYear -eq $DayOfYear)

{

$snaptime = $time

}

else

{

continue

}

}

$srcsnap = Get-AzureStorageBlob -Container $SrcContainer | Where-Object {$_.SnapshotTime -eq $snaptime}

Start-AzureStorageBlobCopy -CloudBlob $srcsnap.ICloudBlob -DestContainer $DestContainer -DestBlob $DestBlob

时间: 2024-10-29 10:46:24

Azure blob Storage Snapshot的相关文章

Azure Blob Storage从入门到精通

今天推荐的是一个系列文章,让读者阅读完成后可以对Azure Blob Storage的开发有一个全面的了解,可谓是从入门到精通. Azure在最初的版本里面就提供了非结构化数据的存储服务,也即Blob Storage.其是Azure中非常重要和基础的一项服务,支撑着很多其他服务的运行(比如虚拟机等).前不久Azure出现故障,就是Blob Storage导致的. Robin Shahan(女程序猿)发表了一个系列文章,全面的介绍Azure Blob Storage的开发.这个系列文章分为10个部

Python 操作 Azure Blob Storage

笔者在<Azure 基础:Blob Storage>一文中介绍了 Azure Blob Storage 的基本概念,并通过 C# 代码展示了如何进行基本的操作.最近笔者需要在 Linux 系统中做类似的事情,于是决定使用 Azure 提供的 Azure Storage SDK for Python 来操作 Blob Storage.这样今后无论在 Windows 上还是 Linux上,都用 Python 就可以了.对 Azure Blob Storage 概念还不太熟悉的同学请先参考前文. 安

presto访问 Azure blob storage

当集群使用Azure Blog Storage时,prestoDB无法获取返回结果,在此记录下 如下,hive里面的两个表,一个使用的是本地的hdfs,一个是使用 azure blob storage, presto 能访问到hive里面的所有表结构,能查询本地hdfs的hive表,如下: 在返回查询数据时,本地hdfs 存储正常 存储在azure blob storage上的数据返回异常,如下: 问题待解决中....... 收集资料: http://stackoverflow.com/ques

DW(六):polybase访问Azure Blob Storage

目录: 连接hadoop配置语法 配置hadoop连接 Pushdown配置 Create external tables for Azure blob storage 连接hadoop配置语法: global configuration settings for PolyBase Hadoop and Azure blob storage connectivity, Syntax: sp_configure:  List all of the configuration options 配置与

将数据库备份到AZURE blob storage

1创建一个Storage Account 1)点击Browse->Storage accounts 2) 填写Storage account,请记住这个名字,之后创建credential需要用到. 3)点击Create. 一般等待一段时间就好了 2 创建container 1)All resources->Blobs 2)在Blob service页面,点击创建一个新的containers. 3)Container的url需要记住,在备份的时候需要指定 3 创建credential 1) Al

基于Azure blob storage T级别HBase表恢复

为减少Hbase集群压力,提高性能,我们将HBase库中的数据移到另外的存储,下面记录当我需要对数据进行计算时,数据恢复的过程 目录: Azure storage explorer 工具 数据复制 元数据修复 测试验证 Azure Storage Explorer工具 免费工具下载地址:http://storageexplorer.com/ 本地安装后,连接至Azure存储,如下图: 说明: 源存储和目标存储所属同一区域时,复制性能更佳,同时注意一下,我使用的storage explorer比较

Windows Azure - Error of &quot;MEDIA12899: AUDIO/VIDEO: Unknown MIME type&quot; and Blob Storage

We have a Azure website using JPlayer to play audio/video (mp3 or mp4) stored in Azure Blob storage. Some media is playing well, while some never play on Windows 7 IE 11 with below console error: MEDIA12899: AUDIO/VIDEO: Unknown MIME type Then we not

一个使用微软Azure blob实现文件下载功能的实例-附带源文件

Running the sample Please follow the steps below. Step 1: Open the CSAzureServeFilesFromBlobStorage.sln as Administrator. Expand the CSAzureServeFilesFromBlobStorage application and set CSAzureServeFilesFromBlobStorage azure application as the startu

Azure File Storage 基本用法 -- Azure Storage 之 File

Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Blob Storage 基本用法>中介绍了 Blob Storage 的基本用法,本文将介绍 File Storage 的主要使用方法. File Storage 是什么? Azure File Storage 是一个通过 Server Message Block (SMB) 协议提供云端文件共享的服务.通过 File Stor