仮想ディスク サービス (VDS) について

こんにちは。日本マイクロソフトの松岡です。
今回は Windows OS に実装されている、仮想ディスク サービス (VDS) についてご紹介します。

 

仮想ディスク サービス (VDS) について
===================================================
VDS はディスクの構成、管理を行うための、統一されたインターフェイスを提供するためのサービスです。
VDS は COM ベースの API を公開していますので、アプリケーションやスクリプトは COM インターフェイスを呼び出し、ディスクの作成やフォーマット、あるいはハードウェア RAID アダプターを管理することができます。
例えば、Diskpart コマンドや [ディスクの管理] MMC スナップインは、VDS API ベースのプログラムとなります。
これにより、ユーザーは、異なるベンダーのストレージ デバイスを、同一のユーザー インターフェイス経由で管理することができます。

VDS はソフトウェア プロバイダーとハードウェア プロバイダーという 2 種類のインターフェイスを公開しています。

 

 

ソフトウェア プロバイダーについて
--------------------------------------
ソフトウェア プロバイダーは、ボリューム、ディスク、ディスク パーティションなどへのインターフェイスを実装しています。
これらのインターフェイスは、例えば、ボリュームの作成、拡張、削除機能、または、ミラーの追加 / 解除、ボリュームのフォーマットやドライブ文字の割り当て機能などを提供します。
Windows Server 2003 および Windows Server 2008、Windows Server 2008 R2 では、ベーシック ディスクへのインターフェイスを提供する、ベーシック ソフトウェア プロバイダーと、ダイナミック ディスクへのインターフェイスを提供する、ダイナミック ソフトウェア プロバイダーがあります。

ハードウェア プロバイダーについて
--------------------------------------
ハードウェア プロバイダーは、ハードウェア ベンダーにより、DLL として実装されます。
DLL はレジストリ内に登録され、デバイスに依存しない VDS コマンドをハードウェア固有のコマンドに変換します。
また、ハードウェア RAID アレイやアダプター カードなどのストレージ サブシステムの管理機能も提供しており、LUN の作成、拡張、削除、マスク、あるいは、マスク切り替えなどがサポートされています。

なお、VDS サービスは、アプリケーションが VDS API への接続を開始した際に、VDS ローダー プロセスにより起動され、操作終了後には自動で終了します。

- 参考情報
About VDS (Windows)
https://msdn.microsoft.com/en-us/library/windows/desktop/aa381442(v=vs.85).aspx

 

イベント ソース : VDS Basic Provider について
===================================================
Windows Server 2003 および Windows Server 2008、Windows Server 2008 R2 で、以下のようなイベントが記録されることがあります。

************************************************************
イベントの種類: エラー
イベント ソース: VDS Basic Provider 1.0
イベント カテゴリ: なし
イベント ID: 1
日付: 日付
時刻: 時刻
ユーザー: N/A
コンピュータ: コンピュータ名
説明:
予期しないエラーが発生しました。エラー コード: xx@xxxxxxxx
************************************************************

VDS サービスは、デバイスやデバイス コントローラから情報を取得したり、操作を行うために Plug&Play マネージャ経由でドライバに対して要求を行います。
その要求が何らかの問題によりエラーとなった場合、予期しないエラーが発生したとして、本イベントが記録されることがあります。
なお、このエラーは、 2 つの情報を含んでおり、@ 前の値はエラー コード、@ 以降の値は内部関数の発生場所を示します。
記録されるエラー コードはイベントの発生状況により異なりますが、過去事例では以下のものが報告されています。

32@01000004 (ERROR_NOT_SUPPORTED)
D@01010004 (ERROR_INVALID_DATA)
2@01010013 (ERROR_FILE_NOT_FOUND)
490@01010004 (ERROR_NOT_FOUND)
1@01000003 (ERROR_INVALID_FUNCTION)
57@01010018 (ERROR_INVALID_PARAMETER)
1@02000018 (ERROR_INVALID_FUNCTION)

これらのエラー コードは過去事例において無視しても良いと判断されたものですが、本イベントが記録された際には、エラー コードのみで判断せず、その前後でどのような処理を行っていたかがより重要です。

通常稼働時に本イベントが記録される場合、デバイスや、デバイスへのパスに問題が発生していることが考えられます。
ただし、バックアップ処理などにより、一時的なパスの切断などが発生しており、そのタイミングで記録される場合、実害が発生していないようであれば、本イベントは無視できます。
例えば、バックアップ処理の中で、Diskpart を使用してディスクのオフライン操作を行っている場合などに、VDS サービスからの情報の取得要求が行われたものの、オフライン処理中だったために、取得に失敗し、エラーが記録されることなどがあります。

なお、以下の公開情報では、本イベントが無視できるケースについて記載されています。

文書番号: 979391
VDS 基本的プロバイダー イベント ID 1 HYPER-V ゲスト オペレーティング システムにログオンしています。
https://support.microsoft.com/kb/979391/ja

文書番号: 932446
システム センター Data Protection Manager 2006 に DpmBackup プログラムを使用すると、システム ログにエラー イベント:「エラー コード 1@01000003]
https://support.microsoft.com/kb/932446/ja

-------------------------------------------------------------------------------

変更履歴

2016 年 6 月 10 日

・一部のエラーコードについて記載が誤っていたため、修正。

(修正前)

D@0101004 (ERROR_INVALID_DATA)

(修正後)

D@01010004 (ERROR_INVALID_DATA)