由于 $extend,安全移除外部 USB 驱动器失败

Den*_*s G 27 usb mount external-hard-drive

将外部 USB 3.0 硬盘驱动器连接到我的 USB 3.0 端口时,我永远无法安全地将其移除。

不知何故,窗口总是保持日志文件打开: 在此处输入图片说明 “总是”,因为这次我只连接了驱动器,复制了一个 10GB 的虚拟机,然后想断开它(比如复制后 15 分钟,所以所有的复制都完成了)。

如您所见,除了System之外,没有其他程序在磁盘上保持句柄。我尝试重新启动explorer.exe以及RemoveDrive.exe从 Uwe Sieber重新启动。不幸的是,硬盘驱动器上的锁始终存在。

我唯一的解决方案就是拔掉它(而我害怕损坏数据?)或重新启动计算机(总是有帮助,不是吗?)。

这可能与我只有 SSD 硬盘驱动器和外部磁盘是普通驱动器有关吗?可能与 USB 3.0 驱动程序(NEC Electronics USB Hub)有关吗?使用常规 USB 2.0 端口时,我从来没有遇到过这个问题。

关于如何正确卸载磁盘的任何想法?

Roo*_*ook 28

我是通过寻找可能的解释或更简单(阅读:自动化/脚本化)的方式来清除 MFT/TxF/NTFS 元数据上的“锁定”。我想我会把它扔在那里,因为我有一个在无数情况下对我有用的解决方案。我已经用它来移除各种像这样卡住的 USB 和 eSATA 驱动器。问题似乎主要是作为固定驱动器安装的可移动驱动器,例如 eSATA 坞站或 USB 机箱中的驱动器。USB拇指驱动器对我来说似乎没有这个问题。

关于最后一个区别的一个值得注意的项目:Sandisk Extreme USB 3.0,一个奇怪的野兽,由一个 USB 钥匙的主体中的 SSD 控制器组成,也显示为一个固定驱动器,尽管它似乎没有问题被毫不客气地和没有任何安全删除都在完成,所以我猜它至少会关闭任何写入缓存,因为它的速度和其他潜在的东西,因为它似乎从来没有这个问题,总是保持其即时可删除性。不一定是一个完美的例子,因为我在我的测试中没有彻底(这只是轶事)但由于它的“固定”性质,它可能会对此有所了解,但显然对这个问题缺乏敏感性。只是深思熟虑。

<--解决方案-->

无论如何,简单地说,您需要使驱动器脱机。您可以通过以下两种方式之一执行此操作。注意:有一些更短的方法可以做到这一点,但这里是非常彻底的步骤,因为我不了解我的听众。GUI 方法是迄今为止最快的,因为 diskpart.exe 不采用开关或内嵌命令/参数。

  1. GUI:运行 -> "diskmgmt.msc" -> 在物理磁盘列表(底部窗格)中找到您的驱动器 -> 右键单击​​驱动器(最左边的部分),而不是分区 -> 单击“离线”

或者:

  1. CLI:运行 -> "cmd.exe" -> 输入 "diskpart" -> 输入 "list disk",找到你的磁盘 # -> 输入 "select disk x",其中 x 是你上一步的磁盘号 -> 输入“离线磁盘”。现在您可以退出命令提示符或在 diskpart 中键入“exit”,然后关闭提示符。

笔记:

  • 重要的应该是使卷脱机,因为这将消除 NTFS 对驱动器的占用,但使磁盘脱机更简单、更彻底。

  • diskpart.exe 和 diskmgmt.msc 之间的磁盘 #s 总是相同的,因为它们从同一个地方提取信息,以防万一你好奇/担心/谨慎。


小智 11

今天,我突然想到查看事件日志。我在尝试删除后立即发现了这一点:

日志:系统,来源:Kernel-PnP,事件 ID:225,级别:警告

进程 ID 为 6436 的应用程序 \Device\HarddiskVolume2\Windows\System32\Taskmgr.exe 停止移除或弹出设备 [...]

所以我关闭了任务管理器和安全删除工作。


小智 5

我创建了这个批处理脚本来“解锁”任何卷。只需以管理员身份运行 .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%
Run Code Online (Sandbox Code Playgroud)

此脚本基于@Rook 建议,因此它用于diskpart使磁盘脱机。完成此操作后,所有手柄都将被强制关闭。此脚本的不同之处在于它会自动使磁盘重新联机,以便下次连接到系统时可以识别它。


use*_*311 1

现在,您可以尝试通过关闭计算机然后拔下电源插头来断开外部连接,从而尝试丢失数据,然后将其设置为轻松删除,以防止在简单拔出电源插头而不卸载它时丢失数据。

老实说,这听起来有点像 MBR 错误,驱动器卡住,认为自己始终处于插入状态,在这种情况下,如果您在通电时拔下驱动器,可能会损坏 MBR,并给您留下 2 个选项,即手动修复MBR 或尝试使用 MBR 修复等软件再次访问驱动器,或使用 gparted 等软件再次格式化磁盘并在最有可能发生错误的位置设置新的分区表。