記憶域プールに設定したボリュームがデタッチ状態となってしまう

いつも弊社製品をご利用いただきまして誠にありがとうございます。
Windows プラットフォーム サポートの吉永です。

今回は弊社にお問い合わせいただきました “記憶域スペースにて作成いただいた仮想ディスク” がメンテナンスに伴うデタッチの実施後や、サーバー再起動実施後に正しくアタッチが行われなかった場合に、それ以降自動でのアタッチが行われなくなるという点についてご紹介させていただきます。

なお、記憶域スペースは Windows Server 2012 / Windows 8 からの新機能となっており、ソフトウェア定義ストレージ (ディスクの仮想化) 機能を提供しております。
複数の物理ディスクをプールとして管理し、その中から必要な容量の仮想ディスクを切り出して利用することで、物理ディスクを複数束ねて、物理ディスクの容量以上のディスクを利用したり、I/O の負荷を分散させたり、また、物理ディスクの耐障害性などを実現することができます。
詳細については、以下の情報をご参照ください。

<参考情報>
記憶域スペースの概要
URL : https://technet.microsoft.com/ja-jp/library/hh831739(v=ws.11).aspx

記憶域スペースを用いて仮想ディスクを作成いただいた場合、作成したディスクはサーバーにアタッチ (接続)した状態でご利用いただくこととなります。
また、標準では、自動でのアタッチが有効になっているため、サーバーの再起動などを実施いただいた場合についても、サーバー起動時に自動でアタッチされる動作となっております。

しかしながら、この 「自動でのアタッチが突然行われなくなったと」 いったお問い合わせをいただくことがございますが、これは作成いただいた仮想ディスクの IsManualAttach と呼ばれる属性による動作となります。

IsManualAttach 属性について

IsManualAttach は仮想ディスクのアタッチを手動で実行するかどうかの属性です。
この属性については、以下の 2 通りの属性がございます。

<IsManualAttach : False>
> 手動でのアタッチが無効の状態。
そのため、サーバー再起動時には自動でのアタッチが行われます。

<IsManualAttach : True>
> 手動でのアタッチが有効の状態。
そのため、サーバー再起動時には自動でのアタッチは行われません。

なお、上記の属性については、 Get-VirtualDisk コマンドにて確認が可能です。

■ 実行コマンド Get-VirtualDisk |fl

■ 実行例 IsManualAttach : False (or True) -------------------- Get-VirtualDisk |fl 実行例より抜粋 -------------------- FriendlyName : 記憶域階層 HealthStatus : Healthy Interleave : 262144 IsDeduplicationEnabled : False IsEnclosureAware : False IsManualAttach : False >>>>> こちらのステータスが対象となります。 ------------------------------------------------------------------------------

IsManualAttach 属性が変更される動作について

上記の IsManualAttach属性については、仮想ディスク作成時の規定では、 IsManualAttach : False となっているため、サーバー再起動時にも自動で仮想ディスクのアタッチが行われます。
ただし、以下のようなシチュエーションが発生した場合、IsManualAttach の属性が False から True に変更されます。

<手動でのデタッチを行った場合>
> サーバーマネージャーなどから手動でのデタッチを行った場合、 IsManualAttach の属性は False から True へと変更されます。
なお、デタッチを行ったのち、同様にサーバーマネージャーなどから手動でアタッチを行っても、IsManualAttach 属性は False のままとなります。

<サーバー再起動時などに自動でのアタッチに失敗した場合>
> IsManualAttach が無効で自動でのアタッチが行われる環境において、サーバー再起動時などにディスクへの接続を行うことができず、自動でのアタッチに失敗した場合、 IsManualAttach の属性は False から True へと変更されます。
そのため、そのままの場合については、自動でのアタッチは行われません。

IsManualAttach 属性が False から True になるシチュエーションについては、上記の通りとなりますが、True へと変更された属性は、自動的に False に戻ることはございません。

対処策

先述させていただきましたように IsManualAttach は一度 True に変更されると、それ以降 False に戻ることはございません。

そのため、メンテナンスなどに伴い手動でディスクのデタッチを行った場合や、何らかの障害により、自動でのアタッチが行われなかった場合などのシチュエーションが発生した場合については、それ以降自動でのアタッチが行われなくなります。

よって、これらの状態を回避されたい場合については、以下の方法にて対応をいただければと存じます。

  1. 作業後に IsManualAttach 属性の変更を行う

    メンテナンスなどに伴い、手動でのデタッチを行う場合は、作業終了後、以下のコマンドにて IsManualAttach 属性の変更を行うことで、自動でのアタッチを再度有効にすることが可能となります。
    実行コマンドは以下となります。

    <IsManualAttach を有効にする> Set-VirtualDisk -FriendlyName <仮想ディスクのフレンドリ名> -IsManualattach $True

    <IsManualAttach を無効にする> Set-VirtualDisk -FriendlyName <仮想ディスクのフレンドリ名> -IsManualattach $false

  2. スタートアップ プログラムとして、アタッチ コマンドを実施する

    意図せず、手動でのアタッチが有効となり、それ以降自動でのアタッチが行われないことを避けるためには、スタートアッププログラムとして、アタッチ コマンドを実行させることで、 IsManualAttach 属性にかかわらず、毎回コマンドによるアタッチを行うことが可能となります。
    実行コマンドは以下となります。

    ■ 実行コマンド connect-VirtualDisk -FriendlyName <仮想ディスク名>

    ■ ステータス
    アタッチされた場合にも、戻り値などはございません。
    また、すでにアタッチされている場合についても、同様に戻り値はございません。
    なお、実行結果については、前述させていただきました “Get-VirtualDisk |fl” にて確認が可能でございます。

    ■ 実行例 PS C:\Users\Administrator> connect-VirtualDisk -FriendlyName 記憶域階層 PS C:\Users\Administrator>

注意事項

先述させていただきましたように IsManualAttach が True になる要因については、何かしらの要因により、自動でのアタッチを行えなかった場合と、手動でのアタッチを行った場合となります。

そのため、”スタートアップ プログラムとして、アタッチ コマンドを実施” いただく場合については以下の点にご注意いただく必要がございます。

  • スタートアップ プログラムにて、コマンドによるアタッチを実施いただく場合についても、当該のディスクへのアクセスを行うことが出来ない場合については、アタッチが行われません。
  • 通常、IsManualAttach が True になった場合については、手動でのデタッチが行われた、もしくは自動でのアタッチを行えなかった場合となるため、自動でのアタッチが実施されなくなった場合はそれらの要因が発生したことを認識いただくことが可能となります。
    ただし、IsManualAttach の属性に限らず、コマンドによるアタッチを実施した場合については、 IsManualAttach の属性の変化を検知することが出来ない場合がございますので、その点についてはご留意いただく必要がございます。

以上のことより、毎回自動でアタッチが実施されないと運用上影響が発生する場合については、上記の内容を踏まえ、スタートアップ プログラムとして、アタッチ コマンドを実施するかどうかについてご検討いただけますと幸いです。

本ブログが少しでも皆様のお役に立てますと幸いです。