Azure StorageのI/Oサポート更新で確認すべき点|SQL Server運用への影響と移行準備

2026年4月28日のMicrosoftDocs系更新として確認したいポイントは、Azure Storageの新機能そのものではなく、SQL Server系ワークロードでストレージI/Oをどう安全に扱うかというサポート要件の明確化です。特に、Azure VM上のSQL Server、Azure Managed Disks、Azure FilesやBlob Storageを絡めた構成、オンプレミスからAzureへの移行を検討している場合は、キャッシュ設定、書き込み保証、I/O障害時の責任分界を見直す必要があります。

今回の「Storage guide: Add info for I/O support」は、MicrosoftDocs/sql-docsリポジトリ内の sql-server-storage-guide.md に対する更新で、Microsoft Learn上では「SQL Server I/O fundamentals」として公開されています。対象はSQL Server、Azure SQL Managed Instance、SQL Server on Azure Virtual Machinesであり、Azure Storageを使う設計者にとっては「どのストレージを選ぶか」だけでなく、「そのI/OがSQL Serverの耐久性要件を満たしているか」を確認するための更新と捉えるのが実務的です。(GitHub)

目次

Azure Storageの公式ドキュメント更新「Storage guide: Add info for I/O support」で何が変わったか

今回の更新で最も重要なのは、SQL Serverが求めるI/Oサブシステムの前提が、より運用目線で読み取りやすくなった点です。コミットでは1ファイルが変更され、I/Oサポート、ファイルシステム構成、キャッシュや安定媒体への書き込み保証に関する説明が追加・整理されています。差分上では Support for I/O issues セクションや File system configuration セクションが追加され、Microsoft Learnのページ上でも同内容が反映されています。(GitHub)

確認すべき変更点は、次の4つです。

確認ポイント実務上の意味主に確認すべき人
安定媒体への書き込み保証SQL Serverのトランザクション整合性を守るには、書き込み順序、キャッシュの安定性、データ再書き換えの有無などを満たす必要があるクラウド管理者、DBA、インフラ担当
書き込みキャッシュの扱いパフォーマンス向上のためのキャッシュ設定が、ログ書き込みやACID保証を壊す可能性があるAzure VM運用担当、SQL Server管理者
I/O問題時のサポート境界SQL Server自体はMicrosoftがサポートするが、I/Oソリューション起因の問題はデバイス・ストレージ提供元の責任になる技術責任者、運用設計者
ファイルシステム構成の整理圧縮ボリューム、NAS、tempdb、Always On、診断など、構成別の確認先が明確になったソリューションアーキテクト、移行担当

Microsoft Learnでは、SQL Serverが「guaranteed delivery to stable media」を必要とし、その条件としてWindows Hardware Compatibility Program、書き込み順序、キャッシュ安定性、データ再書き換えがないことなどを挙げています。また、該当要件を満たすシステムであればSQL Serverデータベースストレージをサポートできる一方、要件を保証する必要があることも明記されています。(Microsoft Learn)

今回の更新はAzure Storageの機能追加ではなく、I/O要件の再確認として読む

「Azure Storageの更新」と聞くと、Blob Storage、Azure Files、Managed Disksなどに新しい機能が追加されたと受け取りがちです。しかし、今回のソースはAzure Storageの製品ページではなく、SQL ServerのI/O基礎ドキュメントです。

つまり、見るべきポイントは「Azure Storageで何ができるようになったか」ではなく、次のような設計判断です。

判断したいこと確認すべき観点
Azure VM上のSQL ServerでManaged Disksを使うデータ、ログ、tempdbをどのディスクに置くか。ホストキャッシュ設定は適切か
オンプレミスSQL ServerをAzureへ移行する既存SAN/NASのI/O保証とAzure側の構成差分を洗い出せているか
Azure FilesやBlob StorageをSQL Serverで利用する利便性だけでなく、性能、信頼性、機能可用性の観点でManaged Disksと比較したか
障害調査を設計するSQL Server、OS、ドライバー、ストレージ、ネットワークのどこまでを誰が調査するか

SQL Server on Azure VMsの公式ベストプラクティスでは、データファイルとログファイルをデータディスクに配置し、最高のパフォーマンス・信頼性・機能可用性を求める場合はAzure Managed Disksを使うことが推奨されています。一方で、SQL ServerデータベースファイルをBlob StorageやSMBストレージ上に直接ホストできるケースもありますが、構成要件と性能面の検証を省略してよいという意味ではありません。(Microsoft Learn)

最優先で確認すべきI/Oサポート要件

Azure StorageをSQL Server系ワークロードで使う場合、まず確認すべきなのは「そのストレージは速いか」ではなく、「コミット済みトランザクションを失わない構成か」です。

SQL Serverでは、トランザクションログへの書き込みが安定媒体へ到達したことを前提に、復旧処理やACID特性を維持します。今回の更新でも、WAL、ACID、安定媒体への保証、キャッシュコントローラーの安全性が改めて整理されています。(Microsoft Learn)

書き込み順序と安定媒体への保証を確認する

SQL ServerのI/Oで特に重要なのは、書き込みが「完了した」と返された時点で、本当に耐久性のある媒体に保存されているかです。ストレージやキャッシュが書き込みを受け取っただけで完了扱いにし、その後に障害でデータが失われると、ログとデータページの整合性が崩れる可能性があります。

確認時は、次の項目を構成管理表に入れてください。

項目確認内容
ストレージ種別Managed Disk、Azure Files、Blob Storage、Elastic SAN、オンプレNASなど
ディスク用途OS、データ、ログ、tempdb、バックアップ
書き込み保証write-through、write ordering、stable mediaの要件を満たすか
キャッシュ方式None、Read-only、Read/write、ストレージ側キャッシュの有無
障害時の保護電源断、ホスト障害、コントローラー障害、ファームウェア障害時の保護範囲
サポート責任Microsoft、ストレージベンダー、SIer、社内運用のどこが一次対応するか

この表を作る理由は、I/O問題が起きた後では責任範囲の切り分けに時間がかかるためです。設計段階で「誰が何を保証しているのか」を明文化しておくと、移行判定や障害対応が速くなります。

データディスクとログディスクのキャッシュ設定を分ける

Azure VM上のSQL Serverでは、ディスク用途ごとにホストキャッシュ設定を分けるのが基本です。SQL Server on Azure VMsの公式ベストプラクティスでは、データファイル用ディスクは Read-only、トランザクションログ用ディスクは None が推奨されています。ログディスクで Read-only や Read/write キャッシュを有効にすると、ACIDの耐久性保証に影響する可能性があるためです。(Microsoft Learn)

ディスク用途推奨される考え方避けたい設定
データファイル読み取り性能向上のため Read-only を検討Read/write キャッシュ
トランザクションログ書き込みの耐久性を優先し NoneRead-only、Read/write
OSディスク既定の設定を維持理由なく変更すること
tempdb一時ディスクまたは専用ディスクを用途に応じて設計消失して困るデータの配置

特にログディスクの設定は、単なるパフォーマンスチューニングではありません。ログ書き込みはトランザクションの確定に直結するため、「速く見える設定」より「失敗時にも正しく復旧できる設定」を優先します。

Azure環境で影響を受けやすい構成

今回の更新は、すべてのAzure Storage利用者が即座に設定変更すべき内容ではありません。ただし、次の構成に該当する場合は、棚卸しを優先してください。

構成確認すべき理由対応の優先度
SQL Server on Azure VMで本番DBを運用しているディスクキャッシュ、VMサイズ、ディスクIOPSの組み合わせが性能と耐久性に直結する高
オンプレSAN/NASからAzureへ移行中既存のI/O保証をAzure側でどう再現するか確認が必要高
ログディスクでRead/writeキャッシュを使っている耐久性保証を壊す可能性がある高
Azure FilesやBlob StorageにDBファイルを置く設計を検討している公式に扱えるケースがあっても、要件確認と性能検証が必要中〜高
tempdbを一時ディスクに配置している一時ディスクは永続ストレージではないため、用途を誤ると危険中
Standard HDD/SSDを本番DBで使っている本番SQL Serverワークロードには性能面で不向きな場合がある中

SQL Server on Azure VMsの公式ドキュメントでは、VMとディスクの両方にIOPS・スループット上限があり、どちらか一方だけを増やしても性能が頭打ちになる可能性があると説明されています。Premium SSD v2やUltra Diskのように性能を調整しやすい選択肢もありますが、VM側の上限、キャッシュポリシー、ファイル配置を合わせて設計する必要があります。(Microsoft Learn)

移行前に実施したいチェック手順

Azure StorageやManaged DisksへSQL Serverワークロードを移行する場合は、移行直前に設定を眺めるだけでは不十分です。以下の順で、設計・検証・運用を分けて確認します。

手順作業内容失敗しやすいポイント
現行構成を棚卸しするデータ、ログ、tempdb、バックアップの配置を一覧化するドライブ文字だけを見て、実体のストレージ種別を確認しない
要件を数値化するピーク時のIOPS、スループット、遅延、容量増加率を取得する平常時だけを測って、締め処理やバッチ時間帯を見落とす
Azure側の候補を選ぶManaged Disks、Premium SSD v2、Ultra Diskなどを比較するディスク性能だけ見てVM上限を見ない
キャッシュ設定を決めるデータ、ログ、tempdbごとに設定を分けるすべてのディスクを同じ設定にする
SQLIOSimなどで検証する本番投入前にI/Oサブシステムをテストする実DBファイルをテスト対象にしてしまう
障害対応を決めるMicrosoft、ベンダー、社内の切り分け手順を作る障害発生後に責任分界を確認する

SQLIOSimは、SQL ServerのようなI/Oパターンを模擬してサブシステムを検証するためのツールです。Microsoft Learnでは、SQL Serverをインストールする前のコンピューターでも、データファイルやログファイルを配置する予定のI/Oサブシステムをテストできると説明されています。ただし、SQLIOSimはランダムなテストパターンでデータを書き込むため、実際のSQL Serverデータベースファイルを指定してはいけません。(Microsoft Learn)

Azure CLIでキャッシュ設定を確認する例

Azure VMのデータディスクに設定されたキャッシュを確認する場合は、次のようなコマンドで棚卸しできます。

az vm show \
  --resource-group <resource-group-name> \
  --name <vm-name> \
  --query "storageProfile.dataDisks[].{name:name,lun:lun,caching:caching,managedDisk:managedDisk.id}" \
  --output table

確認した結果は、次のように用途と紐づけて記録します。

LUN用途現在のキャッシュあるべき設定対応
0データファイルReadOnlyReadOnly維持
1トランザクションログReadWriteNone変更計画を作成
2tempdbReadOnly構成に応じて判断容量とI/Oを再確認

キャッシュ設定の変更は軽い作業に見えますが、Azureの公式ドキュメントでは、SQL Serverのデータ、ログ、アプリケーションファイルをホストするディスクのキャッシュ設定を変更する場合、データ破損を避けるためSQL Serverサービスなどを停止するよう案内されています。(Microsoft Learn)

SQL Server側でI/O遅延を確認する例

SQL Server側では、sys.dm_io_virtual_file_stats を使ってデータファイルやログファイルごとのI/O待ち時間を確認できます。

SELECT
    DB_NAME(vfs.database_id) AS database_name,
    mf.type_desc,
    mf.physical_name,
    vfs.num_of_reads,
    vfs.num_of_writes,
    vfs.io_stall_read_ms,
    vfs.io_stall_write_ms,
    CASE
        WHEN vfs.num_of_reads = 0 THEN 0
        ELSE vfs.io_stall_read_ms * 1.0 / vfs.num_of_reads
    END AS avg_read_ms,
    CASE
        WHEN vfs.num_of_writes = 0 THEN 0
        ELSE vfs.io_stall_write_ms * 1.0 / vfs.num_of_writes
    END AS avg_write_ms
FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs
JOIN sys.master_files AS mf
    ON mf.database_id = vfs.database_id
   AND mf.file_id = vfs.file_id
ORDER BY avg_write_ms DESC;

この結果だけで「ストレージが悪い」と断定しないことが重要です。クエリ設計、インデックス、統計情報、ウイルス対策ソフト、バックアップ処理、VM上限、ディスク上限、ネットワーク経路など、I/O遅延の原因は複数あります。Microsoft Learnでも、長時間I/Oや非効率なクエリ、フィルタードライバー、セキュリティソフトなどがI/O遅延に影響する可能性を説明しています。(Microsoft Learn)

I/O問題が起きたときのサポート境界を決めておく

今回の更新で実務上見落とせないのが、I/O問題時のサポート境界です。Microsoft Learnでは、MicrosoftはSQL ServerおよびSQL Serverベースのアプリケーションをサポートする一方、I/Oソリューションが問題の原因である場合はデバイスメーカーが責任を持つと説明しています。症状の例として、データベース破損、バックアップ破損、予期しないデータ損失、トランザクション欠落、I/O性能の予期しない変動などが挙げられています。(Microsoft Learn)

また、Microsoftは第三者のハードウェアやソフトウェア製品がSQL Serverと動作することを認証・検証するわけではなく、問題調査時には第三者製品なしで再現を求められる可能性があります。これは、Azure上の構成でも「公式サービスだから何でもMicrosoftが一括で調査してくれる」と単純化しない方がよい、という実務上の注意点です。(Microsoft Learn)

障害対応手順には、少なくとも次の切り分けを入れておきます。

切り分け対象確認例
SQL Serverエラーログ、823/824/833、DBCC CHECKDB、待機統計
OSシステムイベントログ、ディスク関連イベント、フィルタードライバー
Azure VMVMサイズ、ディスク上限、ホストキャッシュ、メトリック
Azure Storageディスク種別、冗長性、リージョン、性能設定
ネットワークSMB、iSCSI、NAS相当構成、遅延、パケットロス
ベンダー製品バックアップ、ウイルス対策、暗号化、レプリケーション

NASやネットワークストレージ利用時の注意点

Azure Filesやネットワーク接続ストレージを使う場合は、「ファイル共有として見えているからDBファイルを置ける」と考えるのは危険です。

MicrosoftのSQL Serverネットワークデータベースファイルに関するドキュメントでは、SQL Serverデータベースファイルの保存先としては一般にSANまたはローカル接続ディスクが推奨され、ネットワークサーバーやNASを使う場合はデータ書き込み順序とwrite-through保証を満たす必要があるとされています。要件を満たさないNASやネットワークストレージ上のSQL Serverデータベースファイルはサポートされません。(Microsoft Learn)

実務では、次のようなケースで注意が必要です。

ケースリスク
共有フォルダーにDBファイルを置く書き込み保証や遅延の問題で破損・性能劣化が起きる可能性
バックアップ先とDBファイル配置先を混同するバックアップ保存には適していても、DBファイル常用に適しているとは限らない
ファイル共有の冗長性だけで判断するSQL Serverが必要とする書き込み順序や完了保証とは別の観点
ベンダー資料を確認しない障害時にサポート対象外または再現要求で対応が遅れる

よくある誤解と判断基準

「Azure上のストレージならSQL Serverで安全に使える」は正しくない

Azureのストレージサービスは高い可用性やスケーラビリティを持ちますが、SQL Serverのデータファイルやログファイルに適した構成かどうかは別問題です。特にログディスクのキャッシュ設定、VMのI/O上限、ディスクの種類、ネットワーク経路は個別に確認する必要があります。

「IOPSが高いディスクを選べば十分」ではない

IOPSだけでは判断できません。SQL Serverでは、IOPS、スループット、レイテンシ、書き込み保証、キャッシュ、VM上限、ファイル配置を合わせて見る必要があります。たとえば高性能ディスクを選んでも、VM側のuncached throughputが低ければ性能は頭打ちになります。

「UPSがあるから書き込みキャッシュは安全」とは限らない

公式ドキュメントでは、外部UPSだけでは十分でないと説明されています。電源断以外にも、ファームウェア障害、ハードウェア障害、コントローラー障害など、キャッシュデータを失う要因があるためです。(Microsoft Learn)

「tempdbなら何でも一時ディスクでよい」ではない

Azure VMの一時ディスクはエフェメラルであり、VMの再起動やホスト移動時に再作成される可能性があります。SQL Server on Azure VMsの公式ドキュメントでは、ユーザーデータベースファイルやトランザクションログなど永続性が必要なものを一時ディスクに保存しないよう説明しています。(Microsoft Learn)

開発者・クラウド管理者・アーキテクト別の確認ポイント

役割具体的にやること
開発者I/O負荷の高い処理、バッチ、インデックス再構築、バックアップ時間帯を共有する
DBAデータ、ログ、tempdbの配置とI/O待ちを確認し、SQLIOSimやDBCC CHECKDBの計画を作る
クラウド管理者VMサイズ、ディスク種別、キャッシュ設定、Azure Monitorメトリックを棚卸しする
ソリューションアーキテクトManaged Disks、Azure Files、Blob Storage、Elastic SANなどの採用理由を文書化する
技術意思決定者性能、コスト、サポート責任、移行リスクのトレードオフを承認する

今回の更新は、単なるドキュメント差分として流すよりも、移行判定や本番運用レビューのチェックリストに落とし込む価値があります。特にグローバル展開しているシステムでは、リージョン、ディスク種別、VM SKU、運用ベンダーが環境ごとに異なるため、標準構成との差分を見える化しておくと監査や障害対応にも役立ちます。

まず実施すべきアクション

最初に行うべきことは、Azure上のSQL Server系ワークロードについて、データディスク、ログディスク、tempdb、バックアップ先の一覧を作ることです。そのうえで、ログディスクのキャッシュが None になっているか、データディスクで Read/write キャッシュを使っていないか、VMとディスクのIOPS・スループット上限に余裕があるかを確認します。

移行前の環境では、SQLIOSimなどでI/Oサブシステムを検証し、実DBファイルを使わずにテスト結果を保存しておきます。既存環境からAzureへ移行する場合は、「現在のストレージが何を保証しているか」と「Azure側でその保証をどの構成で満たすか」を1枚の設計資料にまとめると、レビューと承認が進めやすくなります。

今回の「Storage guide: Add info for I/O support」は、Azure Storageの派手な新機能ではありません。しかし、SQL ServerをAzureで安全に動かすうえでは、性能チューニングより前に確認すべき土台を整理した重要な更新です。まずはキャッシュ設定、I/O保証、サポート境界の3点を棚卸しし、移行計画や運用手順に反映してください。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次