13
Azure Storage Data Movement Library PageBlob Download kyrt / Takekazu Omi [email protected] 2015/9/5 R.1.1

Azure Storage Data Movement Library Pageblob Optimize

Embed Size (px)

Citation preview

Page 1: Azure Storage Data Movement Library Pageblob Optimize

Azure Storage Data Movement Library

PageBlob Download kyrt / Takekazu Omi

[email protected]

2015/9/5 R.1.1

Page 2: Azure Storage Data Movement Library Pageblob Optimize

22015/9/5 kyrt inc.

Page 3: Azure Storage Data Movement Library Pageblob Optimize

3

自己紹介

近江 武一JAZUG Azure Storage 担当(自称)Microsoft MVP for Azure http://www.slideshare.net/takekazuomi

kyrt.in

github.com/takekazuomiwhite

paper

監訳

2015/9/5 kyrt inc.

Page 4: Azure Storage Data Movement Library Pageblob Optimize

4

Data Movement LibraryAzure Storage のデータ転送ツール

⇨Azure Storage 用の ETL ライブラリ的な位置付け

kyrt inc.2015/9/5

DML Matrix元 / 先 Local Blob File Url

Local なし DownloadAsync

DownloadAsync なし

Blob UploadAsync CopyAsync CopyAsync CopyAsyncFile UploadAsync CopyAsync CopyAsync CopyAsync

Page 5: Azure Storage Data Movement Library Pageblob Optimize

5

なんのためにあるのか?

大量のデータ転送用に AzCopy というツールがある

Azure Storage Client Library で、 AzCopy と同じパフォーマンスを出すのは結構大変⇨普通に書くとかなり違う一桁違うことも

kyrt inc.2015/9/5

Page 6: Azure Storage Data Movement Library Pageblob Optimize

6

結構大変ってどういうこと?

Azure Storage の性能を限界まで引き出すためには特性に合わせたチューニングが・・・・

基本戦略1. 並列化2. 転送量の最小化

kyrt inc.2015/9/5

Page 7: Azure Storage Data Movement Library Pageblob Optimize

7

Page Blob Download 最適化

例として Page Blob の話をしますPage Blob は、 Azure の仮想マシンの

DISK を提供する仕組み。⇨vhd を page blob に配置

NTFS では、 File は sparse file になる

kyrt inc.2015/9/5

Page 8: Azure Storage Data Movement Library Pageblob Optimize

8

Page Blob での sparse file の実装

Azure Page Blob も、 sparse fileつまり、データの入ってないところは、

ダウンロードのときにスキップできるこれが、最適化の例Storage SDK だ

と、 GetPageRangesAsync() で使っている部分を拾える

kyrt inc.2015/9/5

Page 9: Azure Storage Data Movement Library Pageblob Optimize

9

Data Movement Library を使うと、この辺りを勝手にやってくれる

kyrt inc.2015/9/5

Page 10: Azure Storage Data Movement Library Pageblob Optimize

10kyrt inc.2015/9/5

foreach (var pageRange in await this.pageBlob.GetPageRangesAsync( rangesSpan.StartOffset, rangesSpan.EndOffset - rangesSpan.StartOffset + 1, accessCondition, Utils.GenerateBlobRequestOptions(this.Location.BlobRequestOptions), Utils.GenerateOperationContext(this.Controller.TransferContext), this.CancellationToken)) { rangeList.Add(new Range() { StartOffset = pageRange.StartOffset, EndOffset = pageRange.EndOffset, HasData = true }); }

https://github.com/Azure/azure-storage-net-data-movement/blob/master/lib/TransferControllers/TransferReaders/PageBlobReader.cs#L70

Page 11: Azure Storage Data Movement Library Pageblob Optimize

11

並列化実装の話はhttp://kyrt.in/2015/09/25/intro_azure_storage_data_movement_library.html

kyrt inc.2015/9/5

Page 12: Azure Storage Data Movement Library Pageblob Optimize

12

参照

2015/9/5 kyrt inc.

Page 13: Azure Storage Data Movement Library Pageblob Optimize

13

Introducing Azure Storage Data Movement Library Preview⇨ http://

blogs.msdn.com/b/windowsazurestorage/archive/2015/09/23/introducing-azure-storage-data-movement-library-preview.aspx

Getting the Page Ranges of a Large Page Blob in Segments⇨ http://

blogs.msdn.com/b/windowsazurestorage/archive/2012/03/26/getting-the-page-ranges-of-a-large-page-blob-in-segments.aspx

AzCopy コマンド ライン ユーティリティの概要⇨ https

://azure.microsoft.com/ja-jp/documentation/articles/storage-use-azcopy/

kyrt inc.2015/9/5