web-dev-qa-db-ja.com

$ extendが原因で外部USBドライブの安全な取り外しが失敗する

外付けUSB 3.0ハードドライブをUSB 3.0ポートに接続すると、安全に取り外すことができません。

どういうわけかウィンドウは常にジャーナルファイルを開いたままにします: enter image description here「常に」今回はドライブのみを接続し、10GBをコピーしましたVM後で切断したかった(コピー後15分など) 、すべてのコピーが行われました)。

ご覧のとおり、System以外に、ディスク上にハンドルを保持している他のプログラムはありません。再起動してみましたExplorer.exe と同様 - RemoveDrive.exe Uwe Sieberから 。運が悪い、ハードドライブのロックは常に残ります。

私の唯一の解決策は、プラグを抜く(データに損傷を与えるのが怖いのですか?)か、コンピュータを再起動する(常に役立つでしょう).

SSDハードドライブしか持っておらず、外付けディスクが通常のドライブであることに関係があるのでしょうか? USB 3.0ドライバー(NEC Electronics USB Hub)と関係があるのでしょうか?通常のUSB 2.0ポートを使用しているときは、この問題は発生しません。

ディスクを適切にアンマウントする方法に関するアイデアはありますか?

27
Dennis G

私は、MFT/TxF/NTFSメタデータのこの「ロック」をクリアするための考えられる説明またはより簡単な(読み取り:自動化/スクリプト化された)方法を探すことによって来ました。無数の状況で私のために働いた解決策があるので、私はこれをそこに捨てると思いました。私はそれを使って、このように動かなくなったあらゆる種類のUSBおよびeSATAドライブを取り外しました。問題は主に eSATAドックやUSBエンクロージャーなどの固定ドライブとしてマウントされるリムーバブルドライブのようです。 USBサムドライブでは、通常、この問題は発生しません。

この最後の違いに関する注意事項:USBキーの本体にSSDコントローラーで構成された奇妙な獣であるSandisk Extreme USB 3.0も固定ドライブとして表示されますが、不正に引っ張られることなく問題が発生することはないようです安全な削除が行われているので、速度と他の可能性のために少なくとも書き込みキャッシュをオフにしていると思います。この問題が発生することはなく、常に即時の削除が可能です。私は十分なテストを行っていなかったため、必ずしも完璧な例ではありませんが(これは逸話にすぎません)、「修正された」性質のため、この問題に対する感受性が明らかに欠如しているため、これに少し光を当てることができます。ただ考えるための食べ物。

<-ソリューション->

とにかく、簡単に言えば、ドライブをオフラインにする必要があります。これは、2つの方法のいずれかで実行できます。注:これを行うには少し短い方法がありますが、対象者がわからないため、ここでは途方もなく徹底した手順を示します。 diskpart.exeはスイッチやインラインコマンド/引数をとらないため、GUI方式がはるかに高速です。

  1. GUI:実行-> "diskmgmt.msc"->物理ディスクリスト(下部ペイン)でドライブを検索->パーティションではなくドライブ(左端の部分)を右クリック-> [オフライン]をクリック

または:

  1. CLI:実行->「cmd.exe」->「diskpart」と入力->「list disk」と入力し、ディスクを見つけます#->「select disk x」と入力します。ここで、xは最後のステップからのディスク番号です。 「オフラインディスク」。これで、コマンドプロンプトを終了するか、diskpartで「exit」と入力して、プロンプトを閉じることができます。

ノート:

  • ボリュームをオフラインにすることだけが重要です。これにより、ドライブのNTFSの保持が削除されますが、ディスクのオフライン化はより簡単で完全です。

  • ディスク番号は、diskpart.exeとdiskmgmt.mscで常に同じです。なぜなら、好奇心が強い/心配している/用心深い場合に備えて、同じ場所から情報を取得しているためです。

25
Rook

今日、偶然にもイベントログを確認しました。削除しようとした直後にこれを見つけました:

ログ:システム、ソース:Kernel-PnP、イベントID:225、レベル:警告

プロセスID 6436のアプリケーション\ Device\HarddiskVolume2\Windows\System32\Taskmgr.exeは、デバイスの削除または取り出しを停止しました[...]

そこで、タスクマネージャーを閉じて、安全な削除が機能しました。

10
David Macek

ボリュームを「ロック解除」するこのバッチスクリプトを作成しました。管理者として.batスクリプトを実行し、ボリュームを選択して、Enterキーを押すだけです。その後、通常どおり「安全な取り外し」を使用してユニットを取り外すことができるはずです。

@echo off
@cls

set tempfile="%TEMP%\diskscrp.dsk"

echo.
echo   === Disk removal tool ===
echo.
echo   Select the disk volume number
echo   (if the disk has multiple volumes, select any of them)
echo.
echo list volume | diskpart | findstr /C:Volume /C:---
echo.
set /p volume="   Selected volume: "
echo.

echo select volume %volume% >>%tempfile%
echo offline disk >>%tempfile%
echo online disk >>%tempfile%

diskpart /s %tempfile% | findstr /C:"not valid"

if "%ERRORLEVEL%"=="1" (
  echo   Disk has been unlocked successfully.  Try to safely remove it now.
)

del /F %tempfile%

このスクリプトは@Rookの提案に基づいているため、diskpartを使用してディスクをオフラインにします。これが行われると、すべてのハンドルが強制的に閉じられます。このスクリプトの違いは、ディスクが自動的にオンラインに戻るため、次回システムに接続したときに認識できることです。

5
Diego Queiroz

外付けドライブとWindows OSのコンボの大部分がこの問題を抱えています。

ボックス(ラップトップ)をスリープ状態にし、外部ドライブの電源が切れるまで10秒間待ちます(聞こえます)。次に、プラグを抜きます。

システムがスリープ状態の場合、すべてのI/O操作が完了し、I/Oバスが静止します。ドライブの電源が切れるのを待つのは、その上に「ベルトとサスペンダー」です。

(そのアプローチに対して偏執的すぎる場合は、休止状態を実行するだけで十分です。完全な電源オフは必要ありません。)

3
Daniel R Hicks

これらのファイルはトランザクションNTFS(TxF)に属していると思います。

Transactional NTFSは自動更新で使用されると聞きましたが、システムがこれを外部ディスクに配置し、安全な削除要求で停止できない理由がわかりません。 Fsutilリソース情報にアクティビティが表示されません。

Cmdコンソールで試してください:

fsutilリソース停止E:

または、それが役に立たない場合は、

fsutilリソースsetautoreset true

そして再起動します。コンピュータの管理/サービスでTxF関連のサービスを停止してみることもできます

1
Sem

今のところ、コンピュータをシャットダウンしてから取り外して外付けケーブルを外そうとするだけです。したがって、データの損失を試みてから簡単に削除できるように設定すると、マウントを解除せずに外すだけでデータの損失を防ぐことができます。

正直に言うと、ドライブが常に接続されているように見えてスタックしているMBRエラーのように聞こえます。この場合、電源がオンのときにドライブを取り外すと、MBRが損傷し、2つのオプションが残って、手動で修復できます。 MBR、またはMBR修復などのソフトウェアを使用してドライブに再度アクセスできるようにするか、gpartedなどのソフトウェアを使用してディスクを再度フォーマットし、エラーが発生する可能性が最も高い新しいパーティションテーブルを設定します。

1
user88311

最近、フラッシュドライブでも同じことが起こりました。あなたのように、私はアクティブな$ Extendハンドルを表示し続け、それらが私がドライブを安全に取り外すのを妨げていると思いました。私はこの質問に出くわし、Semのfsutil提案を試しても効果がありませんでした。私にとってうまくいったことは、ドライブを手動でアンマウントすることでした。フラッシュドライブがF:としてマウントされていたため、次のコマンドを実行しました。

mountvol f: /d

次に、ドライブを取り外し、再び差し込み、mountvol f: <volumename>を使用して再マウントし、しばらく使用しました。終了すると、アクティブなハンドルを確認したところ、以前に気付いたのと同じ$ Extendエントリが見つかりました。しかし、「通常の」安全な取り外しを行おうとしたところ、アクティブなハンドルにもかかわらず、成功しました。

これが私にとってうまくいった可能性が本当にあったかどうかはわかりませんが、他の誰かを助けるためにここに追加します。

0
ajk