-
Notifications
You must be signed in to change notification settings - Fork 0
MS_AzureDiskStorage
- 戻る(Azureのストレージ)
-
新しく追加された Azure Resource Manager (ARM) 下の
Azure のディスク ストレージ -
必要なストレージの種類 (SSD or HDD) とディスクのサイズを指定できる。
-
Blob ストレージ上に配置され、LRS によって冗長化される。
-
Blob ファイルのページ Blobが使われている模様。
補足(最新化 / 重要): 非管理ディスク(アンマネージド ディスク)は
2025 年 9 月末で提供終了しており、現在は管理ディスクのみである。
したがって、以下の「非管理ディスクの方が安い」といった比較や、
後半の「管理ディスク → 非管理ディスクへの切り替え」手順は、
現在は実行できない。当時の記録として読まれたい。現在のディスク選定は、種類(HDD / SSD / Premium / Ultra)と
サイズ・性能の組み合わせで行う。
-
GPv1
ストレージ層を選択する機能がなく、すべてがホット・ストレージ層扱いになる。 -
GPv2
GPv1 の Blob にホット/クール/アーカイブのアクセス層とストレージ・イベントなどを追加 -
差異
- パフォーマンス:差異なし。
- 耐障害性:差異なし。
- 課金体系:差異あり。
Standard ディスクを使用する場合は費用の差異がある。
- Standard HDD:コスト最小化
- Premium SSD:高パフォーマンスな SSD ベースのストレージ
Blob ファイルのページ Blobが適切に隠蔽・自動管理される。
(ストレージ・アカウントを Azure が管理し、ユーザが意識する事が無い)
-
ストレージアカウントの IOPS 上限などを意識する必要はなくなる。
-
バックアップやスナップショット、イメージなど様々な機能があり、UI からの操作性に優れる。
-
LRS ではなく、可用性セットを組み合わせて使用することで、
可用性セットの VM のディスクが、単一障害点にならないように相互に十分に分離される。
補足(管理ディスクが解決した本質的な問題): 非管理ディスクでは、
ストレージ アカウント単位に IOPS の上限があった。
複数 VM のディスクを同じアカウントに置くと互いに性能を食い合い、
かつアカウント自体が単一障害点になった。【非管理】 VM1 ─┐ VM2 ─┼─▶ 1 つのストレージ アカウント ← ここが上限であり SPOF VM3 ─┘ 【管理】 VM1 ─▶ 管理ディスク(Azure が配置を自動分散) VM2 ─▶ 管理ディスク本文の「可用性セットの VM のディスクが単一障害点にならないよう
相互に十分に分離される」は、この自動分散を指している。
性能設計と可用性設計から「ストレージ アカウント」という
考慮事項を消したのが、管理ディスク最大の価値である。
- バックアップなど、費用対効果に優れた HDD ベース
- シングル VM だと、95%の SLA
- 例外的に、地理冗長(GRS/RA-GRS)を使用可能。
- Web サーバ、開発など、費用対効果に優れた SSD ベース
- シングル VM でも、99.5%の SLA
- スループットを高める、運用環境向けの SSD ベース
- シングル VM でも、99.99%の SLA
-
仮想マシンのシステム・ドライブはコチラを既定で考える。
- 特に 500 IOPS よりも高い IOPS が必要なシステム
- 64GB 以下のサイズだと Standard HDD よりも
パフォーマンスが悪くなる場合がある。 - 可用性セットを組まなくても SLA の対象となる。
I/O 集約型ワークロード向けの SSD ベース
補足(最新化 / 種類の整理): 現在は Premium SSD v2 が加わり、
選択肢は次のようになっている。
種類 特徴 向く用途 Standard HDD 最安。IOPS 低 バックアップ、アクセス頻度の低いデータ Standard SSD 安価で安定 Web サーバ、開発・検証 Premium SSD サイズで性能が決まる(P30 = 5,000 IOPS 等) 一般的な本番 VM Premium SSD v2 容量と IOPS / スループットを独立に指定できる 本番。過剰なサイズ確保が不要になる Ultra ディスク 最高性能・低遅延 大規模 DB、SAP HANA Premium SSD v2 の登場が実務上は大きい。
従来の Premium SSD は「IOPS が欲しいから容量を上げる」という
無駄が発生していたが、v2 ではそれが不要になった。なお、SLA は現在可用性ゾーンや可用性セットの構成を含めて
評価されるため、上記の数値は当時のものとして読むこと。
-
管理ディスクの方が、高額になりがち。
-
中途半端なサイズで作成しても課金は同じ
補足(「中途半端なサイズでも課金は同じ」): Premium / Standard SSD の
管理ディスクは P10, P20, P30 ... という階層(Tier)で課金される。
たとえば 200 GiB のディスクを作っても、
256 GiB(P15/E15 相当)の料金が発生する。
したがって、階層の境界を意識してサイズを決めるとコストの無駄が減る。Premium SSD v2 は指定した容量そのままで課金されるため、
この階層の縛りがない。
-
Azure Storage 上のディスク形式
-
課金
-
Standard ディスクを使用する場合は、
GPv1・GPv2 で、費用の差異がある。- GPv1 は、容量確保型、確保容量で課金される。
- GPv2 は、
・使った(書き込んで専有した)容量だけ課金される。
・その代わりに、トランザクション(I/O)の課金がある。
・また、GRS/RA-GRS のみデータ転送に対する課金がある。
-
Premium ディスクは、容量確保型、確保容量で課金される。
-
-
VM 作成時に、管理ディスクを使用 [いいえ] を選択する。
-
ID は、URL で、「
https://・・・.windows.net/・・・」などとなる。
- Azure Storage 上で Azure Disk Storage
- 容量確保型、確保容量で課金される。
- VM 作成時に、管理ディスクを使用 [はい] を選択する。
- ID は、リソース ID で、「
/subscriptions/・・・」となる。
VM で使用している管理用ディスクを
非管理ディスクに切り替える。
移行メモ: 前述のとおり非管理ディスクは提供終了しているため、
以下の手順は現在は実行できない。
ただし、
- 管理ディスクを VHD としてエクスポートする方法、
- エクスポートした VHD から VM を作る方法、
という 2 点は、現在もオンプレミスへの持ち出しや
別サブスクリプションへの移動で有用なので、記録として残す。
VM からデタッチした管理用ディスク(インストール・ディスク)を VHD 化、
VHD を非管理ディスク(Azure のディスク ストレージ)に保存して、VM へアタッチ。
- 管理ディスクから VHD を取り出す
- 下を参考に、管理用ディスクをエクスポート。
- URL が表示されるので、仮想マシンと同じリソース・グループに、
新規にストレージ・アカウント & コンテナを作成して、VHD をコピー。
# azcopy とか
# Start-AzureStorageBlobCopy とか
# az storage blob copy とか-
以下の ps1 ファイルを
- アップロードして Azure Cloud Shell で実行するか、
- ローカルに Azure PowerShell をインストールして実行する。
-
以下のように実行する。
BLOB の SAS トークン URL
を使用して管理ディスクの実容量を確認する。
-
Azure ポータルで、管理ディスクをエクスポートして BLOB Url を得る。
Azure ポータル >>「ディスク」>>「ディスク名」>> [エクスポート] >> [URL の生成]
-
生成された URL を指定して、実行すると、
.\Get-BlobBytes.ps1 -url 'https://mdxxxxxxx.blob.core.windows.net/・・・'- 下の様な表示を確認できる。
BlobName : xxxxxxxxxxx
BlobLength : nnnnnnnnnnn <= 割り当てられたサイズ (GiB)
BlobGB : nn.nn
ActualBytes : nnnnnnnnnn <= 実容量のサイズ
ActualGB : nn.nn (GB表記)
-
Page BLOB の Url
-
管理ディスクからエクスポートされた Url は、変換された Page BLOB の Url になる。
-
最後に、Azure ポータルの [x エクスポートのキャンセル] を
クリックして、SAS トークン URL を取り消す(無駄な共有はしない)。
-
-
見積もり
-
Azure の VHD は、Sparse Files 形式で、実使用容量(ActualGB)の分だけ Page BLOB を使う。
-
従って、非管理ディスクに変換した場合の見積もりは以下で行う。
- Page BLOB を ActualGB の容量使用する見積もりを行う。
- トランザクション課金の見積もりを行う(¥0.04032 / 10,000 トランザクション(2018/02/08))。
-
補足(この節が示す設計上の含意): 「割り当てサイズ」と「実容量」が
異なるという指摘は、非管理ディスク(Page BLOB)の
スパース性に基づくものである。
逆に言えば、管理ディスクは確保した容量で課金されるため、
「1 TB のディスクを作って 50 GB しか使っていない」場合、
当時は非管理ディスクの方が大幅に安かった。
これが本文の「管理ディスクの方が高額になりがち」の根拠である。現在は非管理ディスクが無いため、
必要なサイズだけ確保し、後から拡張する
(ディスクの拡張は可能。縮小は不可)という運用になる。
VHD に変換する
- 既存の VHD ファイルを使った VM 作成は、Azure ポータルではできないので、スクリプトが必要。
- スクリプトでは、管理ディスクの Url を使用して、Azure Storage に VHD ファイルとしてコピーする。
以下のように実行する。
-
Azure ポータルから、
- VM 名
- リソース・グループ名
を確認する。
-
サブスクリプション
- 名前を確認、
Get-AzureRmSubscription- 選択し、
Select-AzureRmSubscription -SubscriptionName サブスクリプション名- リソース・グループ名、VM 名を指定して実行。
.\rm-convert-vm-manageddisk-to-vhd.ps1 -ResourceGroupName リソース・グループ名 -vmName VM名補足(最新化): スクリプト内の AzureRM モジュールは 2024 年 2 月に
提供終了しており、現在は Az モジュールを使う
(Get-AzSubscription、Select-AzSubscriptionなど)。
コマンドレット名は概ねAzureRm→Azの置換で対応する。
-
上記を実行後に表示される管理ディスクを削除する。
-
非同期操作はポータル表示との整合性が取れず、
「VM → 管理ディスクの関連付け」が削除されていないように見えることがある。 -
この場合、管理ディスクの「所有者 VM」欄を確認し
「管理ディスク → VM の関連付け」を確認すると良い。 -
このように、IaC は、
ポータルでサポートされてない操作を実装するケースが多そうだが、
そもそもサポートされない操作には非同期である操作が多く、
実装上の問題( ≒ ポータル表示との整合性の問題)があるもよう。
-
移行メモ(表記): 原文の「IaaC」は
IaC (Infrastructure as Code) の誤記と判断し修正した。
- 管理ディスク (Managed Disks) のサブスクリプション間やリソース・グループ間の
移行について – Japan Azure Technical Support Engineers' Blog
https://blogs.technet.microsoft.com/jpaztech/2017/08/17/export-managed-disks-to-vhd/
- Managed Disks
https://azure.microsoft.com/ja-jp/products/storage/disks/- 料金 - Managed Disks
https://azure.microsoft.com/ja-jp/pricing/details/managed-disks/
- 料金 - Managed Disks
- Azure Virtual Machines
- Azure Disk Storage の概要
https://learn.microsoft.com/ja-jp/azure/virtual-machines/managed-disks-overview - Azure IaaS VM 用のディスクの種類の選択 - マネージド ディスク
https://learn.microsoft.com/ja-jp/azure/virtual-machines/disks-types
- Azure Disk Storage の概要
Tags: 移行, インフラストラクチャ, クラウド, Azure
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。