很多使用Azure的朋友,在日常运维的过程中都遇到过的一个情况就是,有一些虚拟机或数据库文件,这些文件已经不在使用,但是出于公司的合规性等要求,又没有办法对其进行删除。在这种情况下,很多朋友会想到Azure存储中的归档层。使用Azure存储的归档层,可以以较低的成本来保存数据,并且可以在需要时将其检索出来。但是要知道,并不是所有的Azure存储都可以转换到存档层中的。

Azure存储通常分为页Blob和块Blob,其中页Blob针对随机IO(数据库,VM)进行了优化,而块Blob针对顺序IO(文本文件,图像,视频,日志等)进行了优化。但是要注意的是,例如存档层,Blob级别分层等节省成本的选项仅适用于块Blob,而不适用于页面Blob。

那也就是说,如果想将虚拟机或数据库文件放在归档存储中来节省成本的话,首先就需要将其从页Blob转换到块Blob,但是AZCopy或Azure Storage Explorer等通用工具似乎都没有提供此功能。那这个时候我们该怎么办呢? 其实大家不必担心,因为微软还提供了一个名为Blobporter的工具来实现这个功能。那么在接下来的文章中,我们会给大家演示如何使用Blobpoter将页Blob转换为块Blob,并将数据放置在Azure存储归档层中。

将页Blob转换为Azure存储中的归档存储_数据

今天的演示我们会模拟将存储在页Blob中的虚拟机文件转换到块Blob,然后进行归档存储。

下载Blobporter

从如下地址下载Blobporter:

​https://github.com/Azure/blobporter/releases​

创建目标存储账户

创建一个存储账户,用于存储转换后的块Blob,并对其进行归档。注意这个存储账户要是StorageV2类型,具体如下:

将页Blob转换为Azure存储中的归档存储_库文件_02

获取存储访问密钥

创建完以后,获取源账户和目标账户的名称和访问密钥:

将页Blob转换为Azure存储中的归档存储_数据_03

从页Blob转换为块Blob

在用于运行转换的临时Azure VM上,打开命令提示符并设置与源存储帐户的连接,具体如下:

set SRC_ACCOUNT_NAME=tes*****s

set

SRC_ACCOUNT_KEY=UCz5sMXR0n9RT************nQ2AknnpK1s9bSDKEkiRUSJc2atHvSq1R+U25

6zPw==

设置目标存储帐户的值:

set ACCOUNT_NAME=sa*****0

set ACCOUNT_KEY=yLH************KXK+czIJa6/KXuAGhN7cSVOKLekK15STgIMy62lS8Kg==

将页Blob转换为Azure存储中的归档存储_库文件_04

导航到Blobporter的文件夹,然后运行以下命令以执行转换并从源复制到目标:

.\Blobporter.exe -f "​​https://te​**​s.blob.core.windows.net/vhds​​" -c conversion -t blob-blockblob -b 90MB

将页Blob转换为Azure存储中的归档存储_Azure_05

转换完以后如下图所示,可以看到在目标存储账户中虚拟机文件的Blob Type已经变为Block Blob:

将页Blob转换为Azure存储中的归档存储_库文件_06

将数据移动到存档层

选中目标存储账户中的虚拟机文件,点击change tier:

将页Blob转换为Azure存储中的归档存储_库文件_07

选择存档层(Archive),然后点击保存:

将页Blob转换为Azure存储中的归档存储_库文件_08

保存完成后,虚拟机文件就存储在存档层中拉:

将页Blob转换为Azure存储中的归档存储_库文件_09