TOP MAP UP

181009 初版


Windows 記憶域 / Storage Pool / Storage Space がデータ保存手段として不適切な理由

※以下の文面はある程度確かそうな解析と、かなり感覚的な経験を元に記述していますので、内容については何ら保証するものではなく、各々に適切に判断して下さい。※

Storage Poolの冗長性を持つ仮想ディスクを構成する、物理ディスクの破損とその交換に至るシナリオは大体において次の通りとなっている。
・物理ディスクの一つが壊れる
・管理コンソールで警告が出ているので、該当の物理ディスクを記憶域から削除
・警告が消えたのちに、仮想ディスクが再構成される
・正常に戻る

所が実際の場合には次のような状況が多々起こる
・物理ディスクにDelayあるいはBADセクタが発生する(無反応になる訳ではなく、反応が悪くなる)
・不具合の生じている物理ディスクが接続されたSATAコントローラが無反応になる
・Storage Poolから見ると、二つ以上のディスクがいきなり消失したように見える
・この時の物理ディスクの反応具合によって、物理ディスクが復旧不可能なlost communicationに陥る。
・再起動などを行い、不具合の無い物理ディスク、あるいは不具合のある物理ディスクがたまたま復旧したとしても、lost communicationとなっているため、クオーラムを満たさない場合、絶対に復旧できない。

3-way等でクオーラムを満たしているように見える場合、あるいはget-physicaldisk等でlost communicationが少なくクオーラムを満たしている場合でも、記憶域が操作できない場合がある。
(恐らくこれでどうしようもない状態に陥るパターンが最も多い)

これはStorage Poolの構造に関係があるのだが(この構造は直接はユーザーには見えない)※以降は解析結果を参照のこと
Storage Poolはディスクが5以上ある場合、最大5の物理ディスクにSDDBという管理領域を保持する。
この管理領域はジャーナリングを行っており、基本的に行った操作をシリアライズして(このためにStorage Poolの管理領域は桁数の制限の緩い数値の持ち方をしている)お互いに整合性を確認し合っている。
恐らく想像だがこの管理領域のシリアライズの整合性が破たんした場合に(具体的に何をもって破綻とするかは不明:調査しきれていない)例え物理ディスクとして生きていて、セクタリードなどが可能であったとしてもlost communicationと判断する。
そして現時点での経験から述べるが「通常であれば5ある管理領域がお互いに補完し合って、いくつかが生きていれば不具合を修復」する所が(つまり幾許かの冗長性を保持していると想像)
このlost communication状態が発生する場合においては「5のうち1でも欠けると動作しない」という状況になるのではないかと思われる。つまり冗長性ではなく脆弱性が5倍?になるのではないかと思われる。

そしてこの状態になった場合、起動プロセスではこう判断される様だ
・OSが起動する
・個々の物理ディスクが記憶域を構成するか妥当性のチェック
・個々の物理ディスクの状態はともかく、記憶域としての妥当性チェック
・これが成功した場合において、仮に個々の物理ディスクが妥当でなくても、記憶域としての操作を受け付ける

この記憶域としての妥当性チェックが特定条件において、かなり脆弱になるケースがどうも存在するようだ。

以上よりStorage Poolが保存手段として不適切な理由を列挙する
・仮想ディスクの冗長性が高くても、管理領域の脆弱性が5倍?になるケースが存在する
・lost communicationになると解除する手段が今の所無い(これを解除するために始めた解析なのだが)
・SATAのディスクを使用している場合、かなり高い確率で脆弱性が高まるケースに遭遇する
・結果として3wayの仮想ディスクであろうが、ワーストケースで5倍?の脆弱性となり、使い続ければ必ずそのケースに遭遇する。
※ワーストケースにあたらない限りは3wayは3wayの冗長性を保持するので無意味な訳ではない。単にワーストケースにおいて無意味になるというだけの話である。