X

[FAQ]記憶域スペースで「重大な書き込みエラーのためオフラインになっています」とのエラーが表示されてディスクにアクセスできない

ここのところ、国内外のフォーラム等で記憶域スペースに関し「重大な書き込みエラーのためオフラインになっています。ドライブを追加してください」とエラーが表示されて、ディスクにアクセスできない症状について書き込みが散見されるようになりました。

英語では、Offline due to critical write failures; add drives のエラー文言になります。

症状として共通なのは、

  • 記憶域プールには問題が見られない
    (Get-StoragePoolで表示されるOperationalStatusは”OK” 、HealthStatusは”Healthy”、IsReadOnlyも”false”)
  • 仮想ディスクにも問題が見られない
    (Get-VirtualDiskまたは Get-VirtualDisk | FLで表示されるOperationalStatusは”OK” 、HealthStatusは”Healthy”、IsReadOnlyも”false”)
  • 仮想ディスクの上に作成されたディスクがオフライン、読取専用になっている

ということで、記憶域スペース/仮想ディスクのレイヤでは問題がみられず、TechNetフォーラムでの質問にも対応に苦慮しています。

原因は??

いくつかの事例を通じて、原因かもしれない2つのことが見えてきました。

(1) 物理ディスクのMediatypeが認識されていないのが原因?

Get-PhysicalDiskの出力で、Mediatypeが “Unspecified”になっていると、ディスクがオフライン、読取専用になることがあるようです。

PowerShellを管理者権限で実行し、

Set-PhysicalDisk -FriendlyName "物理ディスクのフレンドリー名" -Mediatype HDD

のように、MediaTypeを明示的に指定します。

物理ディスクのMediatypeは、記憶域プールに追加した物理ディスクでのみ変更ができます。記憶域プールに参加していない物理ディスクのMediatypeは変更できません。

その後、まだディスクがオフライン/読取専用になっている場合、ディスクの属性を修正します。

Get-VirtualDisk -FriendlyName <仮想ディスクのフレンドリー名> | Get-Disk | Set-Disk -IsReadOnly $false
Get-VirtualDisk -FriendlyName <仮想ディスクのフレンドリー名> | Get-Disk | Set-Disk -IsOffline $false

MediaTypeの指定は必要なの?

従来MediaTypeは、記憶域階層を利用する場合は必要でしたが、それ以外の場合は特に”Unspecified”でも問題がありませんでしたので、トラブルシュートでもあまり気にしていませんでした。

しかし、おそらくFCUあたりからだと思うのですが、トラブルに見舞われている事例において、Unspecifiedから正しく認識させることで解決に至る事例が散見されています。

記憶域プールに物理ディスクを追加したあとに都度MediaTypeを正しく明示的に指定する、または記憶域プールのデフォルトメディアタイプを指定しておくなどして、正しく認識されるように注意しましょう。

記憶域プールのデフォルトメディアタイプは、Set-StoragePoolで、-MediaTypeDefault 属性の値を設定することで指定できます。

(2)DiskPartを使ってディスクをオンラインにして、読取専用属性を外す

DiskPartを使って仮想ディスクをオンラインにする方法が、海外のTechNetフォーラムで案内されていました。以下の方法を試してみてください。

  1. 管理者権限でコマンドプロンプトを起動します
  2. diskpartと入力してエンターを押下します。
  3. list disk と入力してエンターを押下します。
  4. 仮想ディスクのディスクナンバーを確認します。状態がオフラインになっています。
  5. select disk <対象のディスクナンバー> と入力してエンターを押下します。

  6. online disk と入力してエンターを押下します。

  7. 仮想ディスクがオンラインとなったら、 attributes disk clear readonly と入力して、読取属性を外します。

  8. exit と入力してエンターを押下し、DiskPartを抜けます。その後、chkdsk <ドライブレター>: /r と入力して、chkdskで修復を実行します。

手順6まで実行できれば、仮想ディスクが読取専用でマウントできますので、データのサルベージが可能となります。

(3) ReFSのメタデータが不整合を起こしているのが原因?

ReFSでフォーマットしたボリュームが突如RAW状態になる問題でも記載しましたが、ReFSのメタデータ不整合が原因となり、ディスクをオフラインにしているケースがあるようです。

システムの完全シャットダウンとコールブートで復旧したという記載がありましたが、おそらくその理由はStorage space: The disk is offline because a data integrity scan is requiredあたりを見ていると、起動時に”Data Integrity Scan for Crash Recovery”のタスクが実行されたためではないかと思います。

“Data Integrity Scan for Crash Recovery” のタスクは、タスクスケジューラーのMicrosoft\Windows\Data Ingegrity Scanに登録されています。

この”Data Integrity Scan for Crash Recovery”を右クリックして実行することで、ReFSのボリュームを修復できるのではないかと考えています。

(2)でも修復できない場合、ぜひ試してみてください。

記憶域スペースやReFS周りでは、エラーのワーディングが適切でなかったり、エラーの粒度が荒かったりして、トラブルに遭遇してもなかなか解決に至らないケースが散見されます。それが使われない理由になっているのも否定できずとても残念に思っていますが、こういった知見を積み上げていくことで、活用が進めばいいなと考えています。

ださっち: