この記事は、Microsoft Azure Administrator(AZ-104)の受験勉強の中で、自分が間違えやすい、覚えにくいと思ったポイントの一つをまとめたものです。同じく資格取得に向けて勉強されている方の参考になれば幸いです。
Azureストレージアカウントの種類
Azureストレージアカウントには、Standard汎用v2 や PremiumブロックBLOB などの種類が存在し、利用できるサービスや冗長性のオプション、アクセス層の利用が異なります。
詳細はMS Learnのドキュメントを参照ください。
ここでは、Azureストレージアカウントの種類と冗長性オプションの利用可否について記載します。
(冗長性オプション以外に、Azure Import/Exportの利用可否やライフサイクル管理機能の利用可否などもストレージアカウントの種類に依存しており、自分は混同することがありました)
冗長性オプション
冗長性オプションとしては下記のようなものがあります。
冗長性オプション | プライマリリージョン | セカンダリリージョン |
---|---|---|
ローカル冗長ストレージ (LRS) | 1 箇所でデータを同期的に 3 回コピー | コピーされない |
ゾーン冗長ストレージ (ZRS) | 3 箇所の Azure 可用性ゾーン1間でデータを同期的にコピー | コピーされない |
geo 冗長ストレージ (GRS) | 1 箇所でデータを同期的に 3 回コピー | プライマリリージョンから非同期的にコピー後、LRSで 3 回コピー |
geo ゾーン冗長ストレージ (GZRS) | 3 箇所の Azure 可用性ゾーン1間でデータを同期的にコピー | プライマリリージョンから非同期的にコピー後、LRSで 3 回コピー |
イメージにすると下記のように、LRS -> ZRS -> GRS/GZRS となるにつれコピーされる場所が広くなっています。LRS/ZRSではコピーは3回、GRS/GZRSでは6回となります。
ZRSを使うと、データセンターの障害などで1ゾーンが使えなくなっても、データにアクセス可能です(厳密にはアクセス先変更に伴うネットワーク更新前だと使えない可能性があるようです)。
GRS/GZRSを使うと、リージョン規模の障害が起きてもデータにアクセス可能となりますが、そのためにはフェールオーバーという手順が必要になります。
ただし、セカンダリリージョンへのコピーは、上記の通り、非同期で欠落している可能性がありますので、フェールオーバーしてこちらに書き込むと、データが失われるかもしれません。
別の冗長性オプションとして、読み取りアクセスgeo冗長ストレージ (RA-GRS) 、読み取りアクセスgeoゾーン冗長ストレージ (RA-GZRS) というものもあります。これらはフェールオーバーすることなく、セカンダリリージョンからの読み取りが可能です。
冗長性オプションをどれにするべきかは、一般的にはコストと可用性を考慮して決めるものと思います。リージョンによっては使えない冗長性オプションがある点にも注意が必要です。
ちなみに、Azure価格表で、東日本のGRSとRA-GRSを比較するとRA-GRSの方がコストがかかるようです。読み取りしかできない、と解釈してしまうとRA-GRSの方が割安な気がしてしまいますが、フェールオーバーなしで読み取りできるもの、と考えるとコストがかかるのも納得、でしょうか...?
ストレージアカウントの種類と冗長性オプション
本題となりますが、ストレージアカウントの種類によって、利用できる冗長性オプションが異なります。
ストレージアカウントの種類 | LRS | ZRS | GRS/RA-GRS | GZRS/RA-GZRS |
---|---|---|---|---|
Standard 汎用 v2 | 〇 | 〇 | 〇 | 〇 |
Premium ブロック BLOB | 〇 | 〇 | × | × |
Premium ファイル共有 | 〇 | 〇 | × | × |
Premium ページ BLOB | 〇 | × | × | × |
Standard 汎用 v1 | 〇 | × | 〇 | × |
レガシ BLOB | 〇 | × | 〇 | × |
GZRSはZRSとGRSのAND条件になりますね。
ちなみにAzureポータルでストレージアカウントを作成する際、何故かPremiumページBLOBでもZRSが選択できてしまったので、そのまま作成してみたところ、デプロイに失敗する結果となりました。