2014.11.20:ページ内の情報を大幅に改訂。ページタイトルも変更。
改訂前の全文は、ページ下部にコメントアウトで残してあります。
2014.08.24: 誤訳や解釈の間違いの指摘を受け、内容の大幅修正。
2014.08.14: 初出
はじめに
- LFS・・・NTFSボリュームのログファイルシステム
省電力化や、Diskパフォーマンスアップのため、Windows8以降、LFSはバージョンアップした。
- Windows7以前のNTFSとログファイルに互換性はない。
- 正しい手順で外付けHDDを取り外すか、またはWindows8を終了させた場合は、LFSのバージョンはWindows7と同じものに戻り、互換性は保たれる。
- Windows7以前とWindows8以降でNTFSボリュームのDiskを共用する場合は、慎重に扱う必要がある。
- このページは当初、「Windows8/8.1で外付けHDDを認識しない、一定条件で外付けHDDのファイルが消えちゃう問題」の解決方法として公開していたページです。
- しかしこの情報は「外付けHDDのファイルが消えちゃう問題」や「ファイルの巻き戻り現象」の直接の原因ではない、との指摘を受けたため、当時の情報を取り下げ、当時の情報を大幅に改訂しています。(ページ下部のコメントアウトに当時の情報あり)
このページの情報のソース
Windows 8 volume compatibility considerations with prior versions of Windows - TechNet Articles
上記リンク先の内容を元に作成しています。
ただし、直訳ではありません。
※以下ページでほぼ全文のほぼ直訳の内容紹介を行っています
Windows8以降とそれ以前のWindowsの、Diskの互換性とその注意事項について -その1
・その2 ・その3
このページの内容
Windows8以降、NTFSのログファイルがバージョンアップされた事と、バージョンアップさせずにWindows8を利用する方法のみ、取り上げています。
まえおき終わり。以下本文です。
USB外付けストレージの場合:
デバイスマネージャー上の設定でOK
まずはじめに。
USB 外付けストレージの場合、デバイスマネージャー上でキャッシュポリシーを「クイック削除(既定)」に設定するだけでもOKです。
▲クリックで拡大
※画像はWindows7のもの。
この状態であれば、外付けストレージのLFSバージョンが2.0に上がる事はありません。以前のWindowsと互換性を保ったまま利用できます。
※ただしこの方法が有効なのは、「ホットプラグ」扱いで利用できるストレージに限ります。
以下、複数のOSでデュアルブートする場合や、USBストレージを高パフォーマンス接続したい場合に用いる方法です。
Windows 8/8.1にて、LFS(ログファイルシステム)のバージョンを上げない方法
※レジストリを操作します。
※以下の方法は自己責任にて行ってください。
以下は、「高速スタートアップが有効な状態」かつ「シャットダウン中にUSB外付けHDDを外したい」場合などに有効な技です。
※高速シャットダウン無効の場合や、安全な取り外しを徹底する場合は、この操作は必要ありません。
この方法が通用するPC環境
Windows 8/8.1 、Windows Server 2012
HDD/SSD(NTFS)の LFS バージョン が 2.0
まず、LFSバージョンの確認
コマンドプロンプト(管理者)を起動して
fsutil fsinfo ntfsinfo C:
と入力する。(C:には検査したいドライブのレターを入れる事)
うちのWindows8.1機で「fsutil fsinfo ntfsinfo」した結果
▲クリックで拡大
Windows8/8.1の場合、通常はLFSのバージョンは2.0になっています。
(結果がLFS1.1の場合は、外付けHDDを接続し、同じように「fsutil fsinfo ntfsinfo」でLFSバージョンを確認してください。外付けHDDのLFSも1.1の場合は、外付けHDDのデータが消える危険性は無いと思われます。)
ちなみに、Windows7以下では・・・
▲クリックで拡大
「fsutil fsinfo ntfsinfo」した場合に、LFSのバージョン表示は行われません。
この確認は、Windows8上で行いましょう。
レジストリの変更
ドライブのLFSが2.0だった場合は、以下のようにレジストリを変更します。
regeditを起動し、
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem
に移動し、
DWORD値「NtfsDisableLfsUpgrade」を作成し
の値のデータを 0 → 1 に変更する。
注意:
変更後は一旦PCを再起動または完全シャットダウンしましょう。
コールドブートを行わなければ変更が反映されません。
LFS バージョンの再確認
PC再起動後、再び「fsutil fsinfo ntfsinfo C:」と入力する
▲クリックで拡大
「LFSバージョン」が「1.1」となっていれば、NTFSボリュームはWindows7以前と互換性が保たれた状態になっています。
この状態が確認できたら、外付けHDDなどを接続し、同様に「LFSバージョン」が「1.1」となっている事を確認しましょう。
手元の環境でのテストでは、内蔵ストレージ、外付けストレージ、共にLFS 1.1で作動させれば、高速シャットダウン中に外付けHDDを取り外し別OSで使用しても問題が発生しない事が確認できました。
注意および補足
- Windows8/8.1をLFS1.1で利用すると、(わずかですが)Diskのパフォーマンスが落ちます。
- Windows Updateや、不意の電源断などが発生すると、レジストリの設定が元に戻る場合があると思われます。定期的にチェックを行いましょう。
Windows8/8.1のLFSバージョンを下げる方法の紹介は以上です。
ここから下は、紹介元リンク 「Windows 8 volume compatibility considerations with prior versions of Windows - TechNet Articles 」の中の一部、LFSバージョンについての記載部分を要約したものになります。
大きな変更点
- Windows 8以降では、ディスクアクセスの効率化や省電力化を進めるため、NTFSボリュームのログファイルシステム(LFS)を変更し、バージョン1.1から2.0へアップグレードしています。
- Windows7以前、NTFSディスクのログファイルシステムは「LFS1.1」で管理されていました。
- Windows8/8.1にマウントしたDisk (NTFS ボリューム)は、自動的にLFS2.0にアップグレードされます。
- LFS1.1と2.0には互換性がありません。
- つまり、一度Windows8/8.1に接続しLFS2.0となったHDDは、そのままではWindows 7/Vista/XPで正しく読み書きできません。
- Windows8/8.1 から正しい手順でDiskをアンマウントした場合のみ、NTFSボリュームが LFS1.1 へダウングレードされ、XP/Vista/7 でも利用可能になります。
- 正しい手順
・Windows8の完全シャットダウン
・USBデバイスの「安全な取り外し」の利用
・Windows8の再起動(起動時再び2.0になる)
・Windows8の高速スタートアップ中止したシャットダウン
など。 - これにより、NTFSディスクはWindows7以前との互換性を保ちます。
- 高速スタートアップが有効になっていると、シャットダウン時にLFS2.0からLFS1.1へのダウングレードは行われません。
- 正しい手順
Windows8/8.1に接続したHDDは、正しい手順で取り外さない限り、NTFSボリュームのログファイルシステム(LFS)のバージョンが2.0のままとなり、以前のOS(Windows7など)では中身を正しく読み書きする事が出来なくなります。
この状態のまま XP/Vista/7 などで利用すると、LFS2.0のディスクにLFS1.1のファイルが書き込まれてしまいます。そしてそのディスクを再びWindows8に接続すると、古いOSで書き込んだファイルは読めない事になります。
そして最悪の場合、「不正なボリューム」扱いとなり、チェックディスクが起動してしまい、ストレージ内のデータが失われる可能性があります。
Windows8は、どのような挙動をしているのか
(XP/Vista/7など)以前のWindowsに新しいLFS2.0を持ったNTFSディスクをマウントするのを防ぐ為、また互換性を保つために、Windows8では、新しい仕組みを追加しています。
- 各種NTFS (ブートドライブやキャッシュポリシーを高パフォーマンスに設定した)ストレージは、Windows8に接続された際、LFS2.0にアップグレードされます。
- 「完全なシャットダウン」や「再起動」、「リムーバブルディスクの安全な取り外し」を行った場合は、LFS2.0のNTFS ボリュームはマウント解除される際に、自動的にLFS1.1にダウングレードされます。
- これによって、Windows8から「きちんと取り外された」NTFSボリュームは、以前のWindowsでも正常に作動します。
上記の挙動は、外付けストレージ・内蔵ストレージ、共通です。
Windows8とWindows 7/XPなどをデュアルブートしたいけどうまく行かない・・・と言う場合も、同様の現象(LFSバージョンの不整合)が発生しています。
解決方法(問題発生を防ぐ方法)
OS起動中は、以下の約束を守るようにしましょう。- OS起動中にUSB機器を取り外す場合は「安全な取り外し」を行う
参考: Windows8/8.1の 外付けHDD の取り外し方法
また、シャットダウン中に外付けHDDを取り外したい場合や、過去のOSとマルチブートを行いたい場合などは、以下のうち、いずれかの方法をとりましょう。
- 「高速スタートアップ」を無効にする
(サイト内解説ページ) - LFSのバージョンを1.1のままWindows8/8.1を利用する
(ページ上部で解説)
2014/08/24追記部分:ツッコミ頂きました
2014/08/24修正。予想が大幅に外れていました。
ツッコミ頂いた部分の引用http://peace.2ch.net/test/read.cgi/win/1399344284/565
- 565 名前:名無し~3.EXE[sage] 投稿日:2014/08/22(金) 20:26:11.43 ID:x1BbAgSu
- https://freesoft.tvbok.com/win8/general/external-hdd_2.html
また懲りずにわけわかんないこと言ってるし。
- >確定情報
>「Windows8/8.1では、新しいNTFSボリュームに論理ドライブを利用している」
>これについてはMicrosoftのサイトにソースがあります。
>ソースの原文部分
>To help prevent prior versions of Windows mounting a NTFS - volume with the new log file version, we’ve added logic to the NTFS driver in Windows 8 which does the following:
えーと、もしかして logic を論理ドライブとかいうものだと思ったの?
「新しいログファイルのボリュームを以前の Windows にマウントするときのために、
我々は Windows 8 の NTFS ドライバーに次のようなロジックを付け加えた」
って書いてあると思うんだけど。
>「論理ドライブでは、ログファイルがPC別で管理されている」
ログファイルは NTFS メタデータの $Logfile。一個しかない。複数確保する意味もない。
>「OS終了時、または安全な取り外しまではオリジナルのログファイルは変更されない」
即時更新しなきゃジャーナリングにならないでしょ。
ジャーナリングがなんなのかまず勉強しよう。
勘違いする可能性大なので先に言っておくが、
ジャーナリングログは管理情報を記録するもので、データ本体は記録しない。
- あくまでファイルシステムとしての不整合を防ぐための仕組なので。
よってジャーナリングによる復旧で巻き戻りが発生しても、データが巻き戻ることはない。
要するに、ログファイルの互換性の問題は、
事態をさらに悪化させている可能性はあるものの、
高速スタートアップによる破損の直接の原因ではない。8同士でも発生するんだからね。
ファイルの巻き戻りについては、ファイルキャッシュの仕組上起こり得るということを自分を含め何人も説明しているので過去ログ読んで。
外付けHDDのファイルが消えちゃう問題では2度目の重大なミスのご指摘です。
ありがとうございます・・・ひたすらありがとうございます・・・
未解決部分について
ご指摘頂いたスレッドで「ファイルの巻き戻りについては、ファイルキャッシュの仕組上起こり得る」とご指摘頂いているのですが、これが理解出来ない状態です。。。
参考・補足
過去のWindowsでも、NTFSのバージョンはそれなりに上がっており、古いOSと新しいOS間でHDDを使いまわすと不具合が発生する時代がありました。
OSのバージョン | NTFSのバージョン |
Windows 95 / 98 / Me | NTFSの利用は不可 |
Windows NT 3.51 Windows NT 4.0(SP3まで) | NTFS v1.2 |
Windows NT 4.0(SP4以降) Windows 2000 Pro/Server | NTFS v3.0 |
Windows XP Windows Vista Windows Server 2008/R2 Windows 7 | NTFS v3.1 (Vista以降はシンボリックリンクのサポート) |
NTFSストレージは、Windows Me以前では(特殊なドライバーをインストールしない限り)読み書きは不能です。
Windows NT 4.0(SP3)で使用していたHDDをWindows XPやVistaの増設HDDとして接続すると、その時点でNTFSのバージョンが上がってしまい、元のPCにHDDを戻すとアクセスできなくなる現象がありました。
今は、再びそういう過渡期にきている・・・・そういう事だと感じました。
※ここから下に修正前の記事がコメントアウトで記載されています。
「Windows8で外付けHDDのファイルが消えちゃう問題の原因はこれだ」という情報を信じ、かつ拡大解釈して書いてしまい、色眼鏡をかけて原文読んでしまったようです。また何度も修正が加わっているので、非常に読みにくいです。