很多使用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中的虚拟机文件转换到块Blob,然后进行归档存储。
下载Blobporter
从如下地址下载Blobporter:
https://github.com/Azure/blobporter/releases
创建目标存储账户
创建一个存储账户,用于存储转换后的块Blob,并对其进行归档。注意这个存储账户要是StorageV2类型,具体如下:
获取存储访问密钥
创建完以后,获取源账户和目标账户的名称和访问密钥:
从页Blob转换为块Blob
在用于运行转换的临时Azure VM上,打开命令提示符并设置与源存储帐户的连接,具体如下:
set SRC_ACCOUNT_NAME=tes*********s
set SRC_ACCOUNT_KEY=UCz5sMXR0n9RT********************************nQ2AknnpK1s9bSDKEkiRUSJc2atHvSq1R+U256zPw==
设置目标存储帐户的值:
set ACCOUNT_NAME=sa*********0
set ACCOUNT_KEY=yLH****************************************KXK+czIJa6/KXuAGhN7cSVOKLekK15STgIMy62lS8Kg==
导航到Blobporter的文件夹,然后运行以下命令以执行转换并从源复制到目标:
.\Blobporter.exe -f "https://te**********s.blob.core.windows.net/vhds" -c conversion -t blob-blockblob -b 90MB
转换完以后如下图所示,可以看到在目标存储账户中虚拟机文件的Blob Type已经变为Block Blob:
将数据移动到存档层
选中目标存储账户中的虚拟机文件,点击change tier:
选择存档层(Archive),然后点击保存:
保存完成后,虚拟机文件就存储在存档层中拉: