introduction to windows azure storage
TRANSCRIPT
Windows Azure Storage再入門
kyrt @takekazuomi
公開情報から読む Windows Azure Storage の仕組み
http://www.slideshare.net/takekazuomi/gwab-windows-azure-storage
アジェンダ
• Storage の3つの種類と Azure Platform 内の Role• WAS のアーキテクチャ コンポーネント• ストレージスタンプのレイヤー構造• ストリームレイヤーの概要• sealed extents の eraser coding
• パーテーションレイヤの概要• コミット ログ ストリーム、ブルーム フィルター
• Gen2 の変更点
04/11/2023 kyrt @takekazuomi 2
blob, table, queue
• 種類は 3 つ、 Windows Azure Platform の基盤を構成する分散 Storage• Blob が大活躍
Blob Table Queuerest file system• Block/Page• CDN• Virtual Machine
OS/Data Disk• Azure Drive• etc
structure data key/valueschema less• diagnostics• etc
messaging queue• storage base rpc• etc
04/11/2023 kyrt @takekazuomi 3
partition は分散の単位
• Blob, Table ,Queue の partition• Blob は、 URL 毎、 Table は、 partition key 、 Queue は queue 毎で別の
partition
• partition のパフォーマンスターゲット• 2,000 tran/s(queue/table)• 480Mbps/s (blob)
• アカウント全体• 20,000 tran/s(table,queue)※• 受信 – 10GBps• 送信 – 15GBps
参照: http://blogs.msdn.com/b/windowsazure/archive/2012/11/02/windows-azure-s-flat-network-storage-and-2012-scalability-targets.aspx04/11/2023 kyrt @takekazuomi 4
Windows Azure Storage のアーキテクチャーコンポーネン
ト
s
front end
partition Layer
stream layer
storage stamp
VIP
s
front end
partition Layer
stream layer
storage stamp
VIPDNS
ロケーションサービス
アカウント管理
DNS 参照
blob, table, queue へのアクセス
stamp 間リプリケーション
04/11/2023 kyrt @takekazuomi 5
3つのレイヤー
• stream layer• このレイヤでデータをディスクに永続化。 DFS のようなもの。 stream と呼
ばれるファイルを使い。保存方法とリプリケーションを実装する。 stream は、extent の ordered list 。
• このレイヤは、 Blob, Table などの構造やセマンティックに依存しない。
• partition layer• 高レベルのデータ構造( blob, table, queue) を実装• オブジェクトに対するトランザクションの順序付、一貫性の確保を実装• オブジェクトデータのキャッシュ
• front end• リクエストの partition server へ転送• server と、 partition の割り振りを管理する partition map を保持
04/11/2023 kyrt @takekazuomi 6
stream layer
• stream への Write は、 Append のみ• Open/Close/Delete/Rename/Read/Apped/Concat
pointer of extent E1
B11
B12
・・・
B1x
extent E1 - sealed
pointer of extent E2
B21
B22
・・・
B2x
extent E2 - sealed
pointer of extent E3
B31
B32
・・・
B3x
extent E1 - sealed
pointer of extent E4
B41
B42
B43
extent E1 - unsealed
stream //bar
04/11/2023 kyrt @takekazuomi 7
sealed extent の最適化
• シールされた extent を replication -> erasure coding で最適化• リード・ソロモン符号を使って最適化• 単純に 3 重にリプリケーションした場合 3 倍のコストだが 1.3 - 1.5 倍
のコストに低減できる
この辺りは日々改善• Local Reconstruction Codes (LRCs)
• LRC は3つの障害があっても100%の復元でき、3つのレプリカや6+3リードソロモンより耐久性に優れている。
• LCR はリードソロモンより 14 %データオーバーヘッドが小さく、少ないデータフラグメントの読み込みで復旧することができる
04/11/2023 kyrt @takekazuomi 8
partition layer architecture
partition map table
partition manager
partition server 1
partition server 1
partition server 1
paxos lock
service
front end
stream layer
partition layer
updateread
update lease
read/write
watch lease
assign partition
04/11/2023 kyrt @takekazuomi 9
partition layer
• Object Table• partition layer の主な仕事は OT の管理と運用• OT 内は、 Range Partition ( low-key から high-key まで)に分か
れていて、 Range Partition は スタンプ内のパーティション サーバー 分散します• Range Partition の範囲は負荷によって変動• Range Partition と partition server の割り振りは、 Partition
Manager (クラスタ)が行い。調停には Paxos ロック サービス が使われます
04/11/2023 kyrt @takekazuomi 10
range partition の処理
commit log stream
meta data stream
row data stream
blob data stream
stream layer
partition layer
memory table
row page cache
bloom filter
readwrite
04/11/2023 kyrt @takekazuomi 11
第 2 世代 storage の改善点
参照: http://satonaoki.wordpress.com/2012/11/03/windows-azure%E3%81%AE%E3%83%95%E3%83%A9%E3%83%83%E3%83%88-%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF-%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%81%A82012%E5%B9%B4%E7%89%88%E3%82%B9/
ストレージ SKUストレージ ノード ネットワーク速度
コンピューティングとストレージとの間のネットワーク
ロード バランサージャーナリングに使われるストレージデバイス
第 1 世代 1Gbps 階層型ネットワーク ハードウェア ロード バランサー
ハード ディスク ドライブ (HDD)
第 2 世代 10Gbpsフラット ネットワーク
ソフトウェア ロード バランサー SSD
04/11/2023 kyrt @takekazuomi 12
Azure Storage Client
• .NET Framework• https://github.com/WindowsAzure/azure-sdk-for-node nuget
• node.js• https://github.com/WindowsAzure/azure-sdk-for-node npm
• java• https://github.com/WindowsAzure/azure-sdk-for-java maven
• python• https://github.com/WindowsAzure/azure-sdk-for-python PyPI
• ruby• https://github.com/WindowsAzure/azure-sdk-for-ruby gem
04/11/2023 kyrt @takekazuomi 13
最後に
• 今回の内容は、 Azure Storage Team が SOSP で発表した内容に基づいています• 23rd ACM Symposium on Operating Systems Principles
(SOSP)"Windows Azure Storage: A Highly Available Cloud Storage Service with Strong Consistency“
翻訳もあります• Windows Azure ストレージ : 高可用性と強い一貫を両立す
る クラウド ストレージ サービス• http://msdn.microsoft.com/ja-jp/windowsazure/dd439432#lean
ing04/11/2023 kyrt @takekazuomi 14