やっぱりWin10って手抜きOSじゃないですか!その2 - 外伝前篇

副題:取り外し可能なデバイスの非互換問題の詳細

【ネタ】やだ。やっぱりWindows 10って手抜きOSじゃないですか!その2
アクセスが多かったので、技術的観点からもう少し整理したものを紹介します ・ω・

リムーバブルメディアのデータが消失する問題。
どうも、Windows 8からあったらしいのですが、ユーザー数が少なかったため、影響を受けるユーザーはそれほど多くなかった模様。
ところが、Windows 10への強制アップグレードによってユーザー数が急激に増えたため、この問題が一気に表面化したって感じみたい。

なので、 その2の記事に関しては、

『やだ、Windows 8の問題が Windows 10でも直ってないじゃないですか!』 ってのがただしいです

詳しくは TechNet Wiki にまとまっているのですが、なんで Microsoft 公式技術情報に載ってないのか…謎です


Windows 8より前のバージョンを使用する場合の互換性に関する注意事項

概要
この記事では、複数のオペレーティングシステムを利用するユーザー向けに、Windowsの8とそれより前のバージョンの間で物理的にNTFSボリュームでストレージ・デバイスのサポートされているブート構成を変更する場合のWindows 8で導入されたいくつかの設計変更について説明します。

背景
Windows 8構築ブログで詳細を説明したように、Windows
8には、とても短時間で起動できるハイブリッドブートがあります。Windows
8の新しいシステムでは、カーネルセッションを終了するのはアクティブなユーザーをログオフするのではなく、システムが休止状態にした時になりました。こ
れは、実行中のシステムプロセス、デバイス、およびファイルシステムのメモリ状態が休止ファイルに保存され、マウントが解除およびシャットダウンされてい
ることを意味します。
再開したときに休止ファイルはドライバが初期化され、メモリ状態を再開する読み込まれ、ユーザ・セッションを準備します。
フルブートを実行する必要がないことにより、システムを起動するのに必要な時間が劇的に減少します。 また、Windows 8ではログファイルのI / O回数を減らすためにNTFSに工夫を凝らしています。

 NTFS
は実際に適用されディスクに保存される前に、システムのメタデータをファイルに変更を記録するためにログファイルを使用しています-これは、先行書き込み
ロギングの基本原理です。
この方法は、予想外の汚れたマウント解除(電源遮断によって引き起こされるなど)が発生した場合にディスク上のメタデータ構造の整合性を確保することがで
きます。 ログ・ファイルのI /
Oの数を低減するために、書き込みには、レコードが書き込まれている方法を変更する必要があり、その結果、フォーマットのバージョン番号が1.1から
2.0に増加しています。
これら二つの変更は基本的に、より良いパフォーマンスを提供するために一緒に動作するように設計されていますが、特定の
設定や、複数のWindowsバージョンを持つシステムとの間や、物理的にNTFSボリュームを移動するユーザーに互換性がなくWindows
8の上で固有の依存関係があります。

Windows 8に実装された高速スタートアップの話ですね。
高速スタートアップに対応するために、ディスクのフォーマットも改良されて、バージョンが上がっていると。
ただし、複数のOSでのマルチブートや、取り外しを行う場合に限っては互換性がなく、固有の問題があるということですね。

追加の背景
前のセクションで説明したように、変更はでシステムの性能は向上します。I / Oの数を低減するために、Windows 8ではログファイルの構造がNTFSに作られ、そして潜在的に低消費電力で動作するようになりました。
ただし、この変更によって、新しいログのフォーマットが以前のバージョンのntfsでは(ログの内容が認識できない形式であるため)壊れたボリュームとして判断され、認識できないという副作用があります。これによってログファイルの破損状態を消去し、きれいな状態にファイルシステムを返すよう、ファイルシステムのメタデータの整合性を確認するた
めに再起動時にchkdskを実行するように設定されます。
 前のバージョンのWindows で新しいバージョンのログファイルを持ったNTFSボリュームがマウントされることを防ぐために、我々はWindows
8でのNTFSドライバに新しいロジックを追加しました:
 ・NTFSボリュームがきれいに
(そのような完全なシャットダウン、再起動、または安全な削除上のように)
取り外された場合、NTFSはWindowsのすべての以前のバージョンによって認識されるものに、ログ・ファイルの構造およびバージョン番号が「ダ
ウングレード」する。
これはNTFSボリュームを有するストレージ装置をきれいに別のオペレーティングシステムで使用するためにWindows
8から除去されるとき、破損したNTFSボリュームと認識されることなく取り付けることができるようになります。
 ・(ブート時の記憶装置や、「パフォーマンスの最適化」が設定がキャッシュ・ポリシーで設定された)NTFSボリュームがシステムに接続されていた場合、NTFSはログファイルの構造およびバージョンをWindowsの8でのみ認識できる形式に「アップグレード」します。
Windows
8の新しいログファイルの構造を使用することにより、使っているデバイスが最適なパフォーマンスで、かつ潜在的に低消費電力で動作することを保証するのに役立ちます。
NTFSはまた、起動時に任意の内部接続ストレージデバイスのログファイルの構造およびバージョンをアップグレード(またはホットスワップ後)になります。

 注:ほとんどのUSBフラッシュキーはポリシーで「素早い取り外しのために最適化する」設定になっているため、新しいログ構造とバージョン番号にアップグレードされず、ダウンレベルによる非互換性の可能性を持っていません。典型的なデバイスとしては、「リムーバブルメディア」と「ホットプラグ対応」として報告しているものがあります。

どうやら、安全な取り外しをした時は、以前と同じバージョンのファイルシステムに戻す処理をやってるようですね。
でも、大事なのはそこではなくて、接続するたびに、何も書き込んでいなくて、メディアをアップグレードするための書き込み処理をやっているので、そこで引っこ抜くと取り外し可能なメディアが破損する可能性があるってことですね。これは知らなかったなぁ…。
しかも、わざと、破損したデータとして認識するように互換性がないデータでWindows 8/10側で処理してるらしい…。

私の経験上の話なんですが、Windows Vistaや7のCHECKDISKでUSB破壊されたことが何度かあるので、CHECKDISK自体に、バグがあるんじゃないかなと思っています。

多分、USBメモリを 低いバージョンのOSに差したときには修復するかきれてもしない方が安全。
やるなら、高いバージョンのOSでやりましょう

殆どのUSBメモリは高速スタートアップに対応してないから大丈夫だよって書いてますが、実際はそうじゃないものも結構見かけるので、そのあたりが不具合の元凶になってるような…。

Windowsブートのシナリオへの影響

複数のWindowsのバージョンを持つシステムはハイブリッドブート状態から再開されると、別のバージョンのWindowsを選択するための選択画面を提供する前にブートプロセスは完全にWindowsの8を復元して起動するようにボリュームを再マウントします。
ユーザーが別のバージョンを選択した場合、システムは(アクティブなファイルシステムをマウント解除し、今度はWindowsのすべての以前のバージョンとの互換性のあるものにログファイルの構造およびバージョンをダウングレードすることを可能にする)再起動し、システムがロードされますバージョン。
ほとんどのシナリオでは、これは認識されていないログファイルの構造およびバージョン番号のNTFSボリュームをマウントする以前のバージョンのWindowsにはなりません。しかし、ハイブリッドブートの設計の一部として、Windows 8のカーネルは、再起動が要求されずに、マシンが休止されると、このように任意のマウントされたファイルシステムを起動するためにマウント解除する機会がなく、完全にシャットダウンできません。 その結果、アクティブなファイルシステムは、Hibernate後に互換性のあるログバージョン1.1にダウングレードされません。 したがって、Windows 8マシンから移行したシステムはアクティブなファイルシステムを含む物理ドライブを取り外し可能メディアは休止され、Windowsの以前のバージョンにそのドライブを接続すると破損としてマークされていたボリュームになります。
ボリュームの破損状態をクリアする完全なCHKDSKの実行をすれば、健全な状態に戻ります。  あなたは、Windows 8以前のバージョンのWindowsとの間で、SATAまたはSASを介して接続された、物理的に取り外し可能な「パフォーマンスの最適化」に設定されたのキャッシュ・ポリシーを持つストレージデバイス、またはストレージデバイスになることが予想されるデバイスのいずれかを使用している場合、ハイブリッドブートを無効にするかまたは『マウント時に2.0にログファイルの構造とバージョン番号をアップグレードからNTFSを防止する』ためのレジストリキーを設定することをお勧めします。
これらのいずれかの手順を選択するかは、あなたのボリュームが新しいログファイル構造体にアップグレードされているか、お使いのストレージデバイスのキャッシュポリシーがどうなってるか判断した上で決定します。 どのようにする方法方法についての詳細は、次の記事に記載します。

これはマルチブートで、Windows 8を完全にシャットダウンしなかった場合に、別のバージョンのOSを起動すると、ドライブが破損状態になる原理を説明しています。
設定で、Windows 8のこのメカニズムを無効にすることができるし、それを推奨してるわけですね・ω・

サポートされているマルチOSブート構成

ハイブリッドブートは、Windows 8が起動されるように根本的な変化を導入したように、以下では、Windows 8を起動するためのサポートされる構成の詳細を示します。

 ・Windowsの8を含む複数のWindowsバージョンを、起動する場合、Windows 8のブートローダーを利用していればサポートされます。 Windows 8のブートローダーが利用されていることを確認するには、Windowsの以前のバージョンをインストールした後 、あなたのシステムにWindows 8をインストールするようにしてください。

 ・ Windowsの8を起動するための非Windows 8のブートローダーを利用することはサポートされていません。Windows 8のブートローダーが上書きされたり、Windowsの以前のバージョンからのブートローダーと交換することができるWindows 8をインストールした後更にパーティションに以前のバージョンをインストールする場合、最も簡単にこのシナリオが発生し得ます。認識していないサードパーティ製のブートローダーを利用したハイブリッドブートはサポートされていません。

要するに、Windows 8以前のバージョンのOSを上書するな。
まぁ、これは、昔からの基本原則ですよね
サードパーティのブートローダーは使ったらだめってことですね。

ちょっと長くなるので、後篇に続きます

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です