2022年1月の月例更新プログラム(Bリリース)では、ReFS形式でフォーマットされたドライブが正常にマウントできなくなるという重大な問題が報告され、1週間後の定例外の更新プログラムで修正されました。しかし、この問題の影響を受けるのは、利用できないとされている、「サポートされていない使い方」をしていた場合というオチが付いていました。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「ReFS」は「Resilient File System(回復性のあるファイルシステム)」の略で、「Windows Server 2012」からサポートされている、比較的新しいファイルシステム形式です。そのボリュームに保存していたデータが、更新プログラムのインストールの影響でアクセス不能になるなんて、ジョークにもならない重大事です。
問題の影響を受けたのは、「USB外部ドライブを含むリムーバブルメディア」でReFSを使用していた場合のようです。そして、以下のドキュメントに記載されているように、ReFSはリムーバブルメディアでの使用はサポートされていません。
インターネットアーカイブサイトでさかのぼってみたところ、確認できる限り、ドキュメント上の公開または更新日が「2016年1月3日」の時点から、この記載は存在しました。ReFSのもともとの制限であり、その後、このサポートが追加されることなく、現在に至っているということです。
そもそもReFSは、大規模な記憶域サーバ向けの大容量ボリュームや巨大なファイルをサポートし、オンラインのまま自己修復する機能、仮想ハードディスクの高速な複製(マージ)機能、階層化記憶域のサポート(SMRディスクのサポートを含む)など、高度な記憶域機能を提供するために設計されたものです。あまり知られていませんが、Windows Server 2012で導入された「記憶域スペース(Storage Spaces)」の一部です。
つまり、USB外付けディスクをReFSでフォーマットして使うという、サポートされていないというか、あまり意味のない使い方をしていた場合、2022年1月のBリリースインストール後にボリュームが「RAWディスク」と表示され、正常にマウントできなくなったということです。幸い、1週間後にその問題の修正を含む定例外の更新プログラムが提供されたので、サポートされていない使われ方でしたが、一応、“回復性”の約束は守られました。
ただし、KB5010691のサポート技術情報には以下のような注意書きがあります。
注 この解決は、ReFSバージョン2ボリュームにのみ適用されます。
Windowsの標準的なファイルシステムといえば、「NTFS(NT FileSystem)」です。NTFSは「Windows XP」のNTFSバージョン3.1から、その後、新しいバージョンは提供されていません。最新の「Windows 11」もNTFSバージョン3.1です。
そのため、Windowsのバージョンが違っても、NTFSバージョンの違いが問題になることはないはずです。ただし、NTFSに新機能が追加されていないというわけではなく、バージョン番号を維持しながら、つまり下位互換性を維持しながら、さまざまな新機能が追加されています。
一方、ReFSにはさまざまなバージョンがあります。Windows Server 2012で最初に正式版として登場したときは、ReFSバージョン1.1でした。その後のバージョンを以下に示します。以下の表1はWindows Serverをベースに書いていますが、同じバージョンのサポート(公式サポートではない場合もあります)はクライアントOSにも含まれます。Technical PreviewやInsider Previewで提供されたバージョン(バージョン2.0と、表から抜けているバージョン3.x)もあります。
Windowsのバージョン | ReFSのバージョン |
---|---|
Windows Server 2012 | ReFSバージョン1.1 |
Windows Server 2012 R2 | ReFSバージョン1.2 |
Windows Server 2016(RS1) | ReFSバージョン3.1 |
Windows Server, version 1703(RS2) | ReFSバージョン3.2 |
Windows Server, version 1803(RS4) | ReFSバージョン3.3 |
Windows Server 2019(RS5) | ReFSバージョン3.4 |
Windows Server 2022(FE) | ReFSバージョン3.7 |
Windows 11(CO) | ReFSバージョン3.7 |
表1 ReFSのバージョン |
ReFSバージョン2.0は「Windows Server 2016 Technical Preview 2」のときに存在しました。最初のReFS 1.xの後継として、「ReFSバージョン2」として開発されていたのです。つまり、正式バージョンでいえば、「Windows Server 2016」のバージョン3.1以降で狭義のReFSバージョン3.xは、広義のReFSバージョン2ということができます。
Windowsのドライバフォルダ(%Systemroot%\System32\Drivers)には、「refs.sys」と「refsv1.sys」という2つのNT ReFS FS Driverが存在します。おそらく前者がそのバージョンのWindowsがサポートする最新のReFSバージョンまでに対応したReFSバージョン2用、そして後者がレガシーなReFSバージョン1用ということなのでしょう。
似たようなバージョン表現は、SMB(Server Message Block)にもあります。
ReFSはバージョンに厳格で、重要な注意点があります。それは、「下位互換性が“読み取り専用”でマウントされた場合にのみ提供される」ということです。
例えば、Windows Server 2016でフォーマットしたReFSボリューム(バージョン 3.1)のボリュームを「Windows Server 2019」に読み取り専用でマウントすれば、バージョン3.1を維持したまま、読み取り専用でファイルやディレクトリにアクセスできます。
しかし、単純にマウントすると、マウントする際にWindows Server 2019のReFSバージョン3.4にアップグレードされてしまうのです。そのボリュームをWindows Server 2016に再び戻しても、もう正常にマウントすることはできません(RAWディスクになります)。
実際にやってみましょう。Windows Server 2019でフォーマットしたボリュームを「Windows 10」(ただし、バージョン1809以降)にマウントしても、何も問題は起きません(画面1)。
このボリュームをWindows 11に接続すると、既定で新しいボリュームの自動マウントが有効になっているため、自動的にマウントされ、ReFSバージョン3.7になってしまいます(画面2)。
これをWindows 10に戻すと、RAWディスクになってしまい、自動マウント機能に「フォーマットしますか?」と問われることになります。「ディスクのフォーマット」をクリックしてしまうと、データは永遠に失われてしまいます(画面3)。
WindowsのバージョンによってReFSバージョンは細かくバージョンアップされてきているため、今回の更新プログラムの問題がなかったとしても、リムーバブルメディアでReFS形式のボリュームを扱うと、自分でデータを葬り去ってしまうという、こんなトラブルは容易に想像できるでしょう。
インプレースアップグレードでは問題になることはありませんが(アップグレード後に最新のReFSバージョンに自動アップグレードされます)、別バージョンのWindowsのマルチブート環境では似たような問題が発生します。
ReFSのバージョンが勝手にアップグレードされてしまうのを回避するには、まず、Windowsの自動マウント機能を「無効」にし、その後、ボリュームを接続して、ディスク(またはボリューム)に読み取り専用属性を設定してからマウントします。この操作は全て「DISKPART」コマンドからもできますが、とても面倒な操作です(画面4)。このことだけでも、異なるバージョンのWindows間でやりとり可能性のある外付けドライブで、ReFSを使うべきではないことがよく分かるでしょう。
岩手県花巻市在住。Microsoft MVP 2009 to 2022(Cloud and Datacenter Management)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.