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


26

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

Windows总是以某种方式使日记文件保持打开状态: 在此处输入图片说明 “总是”,因为这一次我仅连接驱动器,复制了10GB的VM,然后希望断开连接(例如,复制后15分钟,所以所有复制都完成了)。

如您所见,除了System之外,没有其他程序在磁盘上保留句柄。我试图重新启动explorer.exe以及RemoveDrive.exe从乌韦·塞伯。运气不好,硬盘上的锁始终存在。

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

可能只有我有SSD硬盘,而外部磁盘是常规驱动器,这与我有关系吗?可能与USB 3.0驱动程序(NEC Electronics USB集线器)有关吗?使用常规USB 2.0端口时,我永远不会遇到此问题。

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


如果这些答案中的任何一个是解决方案,请随时投票或将其标记为答案。
user88311 2013年

Answers:


25

我通过寻找可能的解释或更简单的方法(阅读:自动/脚本)来清除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之间的磁盘编号始终相同,因为它们是从同一位置提取信息,以防万一您感到好奇/担心/谨慎。


1
白痴,这看起来很棒。等不及要尝试了。是的,对于我来说,这总是发生在固定驱动器上-通常是托管VM的外部驱动器。仍然存在一个问题:将外部驱动器设置为脱机之后该怎么办?只是拔掉插头?安全移除?
丹尼斯·G

这对我有用。
hattenn 2014年

这看起来很有用,谢谢。如果仅由任务管理器引起问题,则@elieux的答案是最简单的。
Reg Edit

只是回顾一些老问题,我检查了您注意到的Uwe Sieber removedrive.exe的链接,我觉得它可以通过相同的机制来工作(就实际意义而言,脱机和拆卸非常接近,前者用于物理驱动器(是否仿真,例如iSCSI卷),而用于已挂载的分区/卷(即C:,X:等)...如果不确定它们在工作表下的工作方式类似,使用了“ -e”选项。按照removedrive.exe的说明:“” [-e]尝试卸下并弹出,如果移除失败“”
Rook

最后,看起来Uwe Sieber自己解释了在代码/ API和错误级别起作用的机制的基础:codeproject.com/Articles/13839/…–
Rook

10

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

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

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

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


优秀!这为我解决了这个问题。现在,为什么Microsoft不能将这些信息放在显示“程序”仍在使用驱动器的对话框中呢!
Reg Edit

太好了,这也为我解决了这个问题。Windows10。发现我在自动启动中有Taskmgr。那么,为什么Taskmgr会锁定USB驱动器?
weberjn

尽管脱机(请参阅@rook的答案)和fsutil的东西过去对我有用,但今天却没有。ProcessExplorer认为做锁定只是“系统”。无论如何,EventViewer都显示出与您相同的罪魁祸首(TaskManager),因此我将其关闭,我感到很高兴。
mpag

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%

该脚本基于@Rook建议,因此diskpart用于使磁盘脱机。完成此操作后,所有句柄都将被强制关闭。该脚本的区别在于,它会自动使磁盘恢复联机状态,因此下次将其连接到系统时就可以识别它。


甜!尚未使用它,但我感谢您为使其他人变得更容易而付出的努力...我已经获得了一些其他实用程序,这些实用程序提供了更多信息(即Hotswap !: mt-naka.com/hotswap/index_enu.htm)可移动/固定驱动器比内置Windows驱动器好,但是还没有找到一种基于脱机的快速,肮脏的解决方案,所以这很棒!
2015年

3

大部分外部驱动器/ Windows OS组合都可能出现此问题。

我要做的是睡在盒子里(一台笔记本电脑),然后等待十秒钟,以使外部驱动器断电(我能听到)。然后拔下电源。

如果系统处于睡眠状态,则所有I / O操作均已完成,并且I / O总线已停顿。最重要的是,等待驱动器掉电是“皮带和吊带”。

(请注意,如果对于这种方法过于偏执,则进行休眠应该就足够了。应该不需要完全关闭电源。)


解决方法,但这应该可行。
丹尼斯·G

1

现在,您可以通过以下方法尝试断开外部连接:关闭计算机,然后拔下电源,然后尝试丢失数据,然后对其进行设置以便于卸下,以防止在不拔出电源而直接拔出电源时防止数据丢失。

坦白地说,这听起来像是MBR错误,其中驱动器卡住了,发现自己总是被插入,在这种情况下,如果您在通电时拔出驱动器,则可能会损坏MBR并留下2种选择,请手动修复MBR或尝试使用MBR Repair之类的软件来再次访问驱动器,或尝试使用gparted之类的软件来再次格式化磁盘并设置最有可能发生错误的新分区表。


“然后将其设置为易于移除” <-您能否详细说明您的意思?我怎么知道驱动器认为它总是插在电源上,即不是外接USB驱动器?
丹尼斯·G

在关闭电源状态下卸下驱动器并重新启动计算机后,再次插入驱动器,然后单击属性,硬件,单击驱动器,属性,策略,进行优化以快速移除。编辑:在您的问题中,您声明它实际上是一个外部USB驱动器。
user88311 2012年

在大多数情况下,系统会安装带有“快速删除”标志的外部驱动器。而且,据我所知,此设置应使其“极不可能”简单地拔出驱动器会引起问题。
Daniel R Hicks

1

我相信这些文件属于事务性NTFS(TxF)。

我听说自动更新使用了事务性NTFS,但不知道系统为何要将其放置在外部磁盘上,然后在安全删除请求后无法停止它。Fsutil资源信息未显示任何活动。

在cmd控制台中尝试:

fsutil资源停止E:

或者,如果没有帮助,

fsutil资源setautoreset true

然后重启。您也可以尝试在“计算机管理/服务”中停止与TxF相关的服务


这是非常有趣的东西!下次发生时,我会对其进行调查。
丹尼斯·G

2
但是...不起作用。执行fsutil resource stop <drive:>sysinternals时handle.exe不显示任何句柄。因此将其删除,但是当我尝试安全删除它时,手柄又回到了原来的位置。
丹尼斯·G

0

最近,我在闪存驱动器上发生了同样的事情。像您一样,我一直显示有效的$ Extend手柄,并认为它们阻止了我安全地卸下驱动器。我偶然发现了这个问题,并尝试了Sem的fsutil建议。对我有用的是手动卸载驱动器。由于我的闪存驱动器安装为F :,因此我运行了:

mountvol f: /d

然后,我拔下驱动器的电源,将其重新插入,使用重新安装mountvol f: <volumename>并使用了一段时间。完成后,我检查了活动手柄,并看到了我之前注意到的相同的$ Extend条目。但是,当我尝试进行“正常”安全移除时,尽管手柄处于活动状态,但还是成功了。

我不知道这是否对我有用,但我在这里添加是为了对其他人有所帮助。


我认为$ extend东西是一条红鲱鱼-还有其他一些原因使Windows无法卸下驱动器。
Daniel R Hicks

同意,这一认识是我发布此答案的最大原因。我一直在毫无意义地追逐$ extend问题,发现这些句柄不会对安全移除造成任何问题。我只是希望,既然那个红鲱鱼使我想到了这个问题,也许这个答案将对下一个不幸的渔夫有所帮助:)。
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.