【探索】windows系统下安全移除用SATA线(开启热插拔)直连主机的机械硬盘的方法

您所在的位置:网站首页 关掉硬盘 【探索】windows系统下安全移除用SATA线(开启热插拔)直连主机的机械硬盘的方法

【探索】windows系统下安全移除用SATA线(开启热插拔)直连主机的机械硬盘的方法

2023-11-12 19:20| 来源: 网络整理| 查看: 265

大容量的机械硬盘现在已经普及了,我想大多数人买机械硬盘都是为了进行数据的“冷备份”,不需要一直连接在电脑上,一方面平时机械硬盘的空闲会白白增加机械硬盘的使用时间缩短寿命,另一方面是为了防止电脑病毒扩散,威胁资料安全,亦或是加快开机时间(只要连接有机械硬盘,bios就需要等待机械硬盘起转和就绪,来尝试读取机械硬盘里有无启动项,这个过程会增加大约5秒左右的开机时间),因此通过直接热插拔可以说是比较省钱省心(不需要买转成USB接口的硬盘盒子,此外现在的3.5寸硬盘盒子没几个质量是让人满意的,各种掉盘、过热……)而且最能保留传输性能(SATA直连)的选择了。

在windows系统下常见的移除硬件操作就是右下角的“删除硬件”,相信用了这么久,各位都习惯了点击“删除硬件”然后拔硬盘,可是这么做真的安全吗?

经过我的观察,硬盘直连主板时,即使主板BIOS开启热插拔,在windows里“弹出硬件”了,在windows系统下硬盘也不会停转。如果想要硬盘带电执行清空缓存、磁头归位并关闭电机的安全关闭操作,在我发现今天的新方法前(下面会提到)只有在系统休眠或者关机的时候(而且关机或休眠前还不能点击弹出硬件,原因在下面会提到)才行,或者用硬盘盒转接,通过硬盘盒上的控制芯片安全地关闭硬盘,不然手动拔线时磁头总是会有断电缩回的“咔嚓”声,再次连接时硬盘SMART信息中“磁头意外缩回”这一项(描述可能不准确,明白大概意思就行)就会增加。windows这系统设计也不人性化,不像linux可以通过命令行手动开关硬盘的电源,windows里硬盘的开关机API到现在似乎也没公布出来,可以说到现在都是无解的。

如果想要做到安全,之前每次用完硬盘就得关一次机,虽然现在一次开关机的时间已经比较短,还能等得起,但是如果此时你的迅雷正在往固态盘(系统盘)里下载东西或者电脑上挂着一堆任务呢?所以说这么做有时候实在是有点麻烦和显得鸡肋了。

 

 

 

 

终于,今天我找到了一个既安全,又不用电脑关机的方法了,下面介绍给大家,所有输入命令的操作都建议复制粘贴文章里的例子,然后进行修改(要修改替换的是中括号"[]"、"【】"和里面的内容):

本方法需要用到希捷的SeaChest工具(用以向硬盘发送安全关机指令),下载方法如下:进入希捷官网,语言切换为简体中文,在顶部的选项卡里找到“支持”,鼠标悬停在上方,下面就会出现具体选项,找到“软件下载”这一项点击进入,之后按下“Ctrl+F”组合键,输入"seachest",用浏览器自带的搜索工具搜索,结果有两个,找到带有绿色文字的链接,点击进入后往下翻,找到“SeaChest Utilities(CLI)”这项点击“下载”就可以下载了。

下载解压后找到“Windows”文件夹中的“SeaChest Utilities_APR2022_Win64_Setup.exe”双击安装(如果有选项的话记得勾上“创建桌面快捷方式”)。这个exe的文件名可能因为软件更新而改变,记住是"Windows"文件夹里的"...setup.exe"即可。

 

 

需要移除硬盘时,需要进行的第一步就是让硬盘“脱机”,也可以叫作“下线”。下面展示用命令行进行这步操作的方法(用GUI窗口操作这一步的方法在这个方法的下一段):双击桌面的“SeaChest Utilities”图标进入cmd命令行窗口(这里其实也可以不用双击图标自己手动启动cmd窗口,不过通过双击桌面的这个快捷方式,会引导cmd进入(cd)到安装路径下,也就是exe可执行文件所在的路径下,运行程序时就不需要手动cd到exe可执行文件所在的路径下,比较方便。这个快捷方式的作用说白了也就是上面说的这些。不过如果不了解cmd命令,那就按照双击桌面图标的方式走,不会错),先输入"diskpart",按回车,这一步是调用windows系统自带的磁盘管理工具;待工具启动完毕就绪之后,输入“list disk”,按回车,找到你想要拔出的硬盘的编号(举例:磁盘 0),然后输入"select disk 0"(对应刚才例子中的“磁盘 0”,磁盘编号是几就是“disk [几]”),这一步是选中磁盘【【 这里分享一个窍门,可以在启动diskpart工具前(如果这时已经启动diskpart,就要再输入"exit"退出工具),先输入"SeaChest_PowerControl_x64_windows.exe --scan",按回车,来获取硬盘的列表,这个列表里的信息比diskpart工具里展示的要更详细一些,能看到硬盘的型号和序列号,这样能更加方便地辅助判断需要移除的机械硬盘的编号。据我观察,列表里面的“Handle”编号(PD0、PD1……)中的数字(0、1……),和上面提到的系统自带工具diskpart里用"list disk"命令列出的表格里的磁盘编号(磁盘 0、磁盘 1)中的数字(0、1……)是一致的,也就是说接下来就只需要按照上面的步骤,还是先输入"diskpart"启动工具,待工具启动完毕就绪之后,直接选择磁盘(“PD0”对应的[编号]就是“0”),输入命令"select disk [编号]",这样就行了。如果不放心的话,输入"list disk"按回车,检查一下两个列表对应的编号是否一致再决定选择哪个磁盘也可以(我推测存在虚拟磁盘的情况下编号可能会不一致) 】】   ;然后输入"offline disk",按回车,这一步会把当前需要移除的硬盘的句柄全部移除(下线),断开这个磁盘所有分区的数据访问(放心,你的数据和分区都在)。"offline disk"这一步需要等待一段时间让操作完成,完成后会有成功的信息弹出,如果失败也会有提示(可能是没有退出占用的程序,或者选择了系统所在的磁盘),而且操作成功后查看资源管理器,是看不到被操作的硬盘的分区的。这一步操作过后还是可以向磁盘通信的,也就是设备管理器里还是会显示这个硬盘。如果需要拔掉多个硬盘,重复"select disk [编号]"和"offline disk"直到所有磁盘都完成"下线"操作,完成之后记得输入"exit"退出diskpart(这点也很重要!总之用完diskpart工具后一定要输入"exit"退出,才能输入diskpart专用命令之外的命令)。添加这一步是为了确保安全,确保系统知道你不会访问这个磁盘上数据分区里的文件和数据,之后用SeaChest工具向硬盘发送"spindown"这个收磁头、马达停转的关机的指令,让硬盘停转之后,就能最大程度地保证磁盘不会被重新唤醒起转,不过offline方法有个副作用,下一次连接硬盘就需要键盘按下WIN+R组合键,输入cmd,回车,唤出命令提示符窗口,在命令提示符窗口下手动依次输入diskpart、list disk、select disk 【编号】、online disk,然后挨个命令按回车了(最后别忘了输入"exit"退出diskpart工具!),也就是说需要手动复个位,让硬盘恢复“在线”状态,数据才能被访问,这一点要谨记,否则如果忘记的话你很可能认为你的硬盘坏了。

 "offline disk"的命令行操作也可以换成用GUI界面的方式执行,方法是:按下WIN+R键盘组合键,输入"diskmgmt.msc"后按回车,在你想要移除的磁盘上的“磁盘 0【换行】基本【换行】1111 GB【换行】联机” 那块矩形区域上右击鼠标,在弹出的菜单里点击“脱机”即可,脱机完成后左上角会多出一个“红色圆圈中白色向下箭头”的图案。如果需要区分是哪块硬盘,就在刚才提到的右键菜单里点击“属性”进行查看。用GUI窗口的这种方法更直观,感觉上也更便捷一些。和offline命令行方法一样,下一次连接硬盘后就需要输入"diskmgmt.msc"后按回车,查找可能存在的脱机磁盘(左上角会有一个“红色圆圈中白色向下箭头”的图案),在磁盘上刚才提到过的相同矩形区域上右击鼠标,在弹出的菜单里点击“联机”,让硬盘恢复“在线”状态,数据才能被访问。

退出diskpart工具或者关闭磁盘管理工具窗口后,接下来的操作就只能用cmd命令窗执行了。

如果刚才全程都是用cmd命令窗执行的,在确认退出diskpart工具(输入"exit"退出工具),并显示出“退出 DiskPart...”字样后,先输入"sc stop vds"后按回车(成功或者失败不需要在意,只要确定服务是关闭的即可),关闭可能残留在后台的虚拟磁盘服务,防止磁盘停转后被这个服务唤醒,再输入"SeaChest_PowerControl_x64_windows.exe --scan"后按回车;

如果刚才是用磁盘管理工具窗口来操作,没有打开过cmd命令窗的,就需要先关闭这个窗口,然后双击桌面的“SeaChest Utilities”图标进入cmd命令行窗口,先输入"sc stop vds"后按回车(原因和上面一样),再输入"SeaChest_PowerControl_x64_windows.exe --scan"后按回车。

如果刚才就执行过"SeaChest_PowerControl_x64_windows.exe --scan"命令来辅助查找磁盘的(在上面的“这里分享一个窍门,可以在启动diskpart工具前……”),可以跳过"SeaChest_PowerControl_x64_windows.exe --scan"这一步,但是不能跳过"sc stop vds"。

接下来在显示出的列表里,或者之前命令的输出记录里,查找你想要移除的硬盘对应的“Handle”编号(PD0、PD1……),然后输入"SeaChest_PowerControl_x64_windows.exe -d PD[编号] --spinDown",按回车,如果有多个硬盘需要移除,一条命令执行完毕后,直接按键盘方向键里的“↑”拷贝上一条命令,然后用键盘上的“←”“→”键移动到“PD[编号]”字样(PD0、PD1……)那里,用退格键删除那个数字编号,输入一个新编号后继续按回车,如此循环反复,直到所有磁盘都停转,这一步是最关键的,“--spinDown”那里尤其要注意大小写,“spinDown”中的D一定要大写,其余字母小写,否则会出现不认命令的情况;另外,SeaChest的spindown命令可能不适用于所有的机械硬盘,如果遇到了执行命令后还不能让硬盘停转的情况,就需要找这个硬盘的硬盘厂商的专用工具来执行spinDown了,如果找不到专用工具,就还得重新让硬盘上线(方法在上面的“有个副作用,下一次连接硬盘就需要……”那里),用关机/休眠的方法来保证移除时的安全。不过我估计使用了spinDown命令后磁盘还是不能停转的情况应该属于少数情况,因为扫描时SeaChest能显示非希捷的硬盘,在SeaChest工具使用说明里,这条命令的说明也没有标出“(Seagate Only)”字样,而且我也用自己的西数HC320和希捷银河st8000nm017b这两个企业级空气盘测试过,两个不同品牌的机械硬盘都能够做到在上述方法下安全停转,这就代表着spindown命令应该具备一定的通用性。

 

 

成功执行完上面的一步,确认所有硬盘已经停转之后,最后就可以按照“先拔SATA数据线,再拔SATA电源线”(SATA电源线的接口和线是又扁又宽的那个,而且SATA电源线的接口里有15个金属片,另一条就是SATA数据线了。提示到这里如果还不能分清两根线区别的,请自行百度>︿<)的步骤放心地拔掉所有的硬盘了。

这里有几点要注意一下:在上一步执行完spinDown命令之后,千万别因为好奇打开Diskgenius、HDTune、Victoria等磁盘检测和管理软件,也不要使用系统自带的硬件弹出工具,或者打开设备管理器后“扫描检测硬件改动”(虽然说我这边测试过在单独打开设备管理器的情况下,并不会唤醒硬盘起转,不过还是建议连设备管理器都不要打开),否则硬盘还会起转,而且如果你用了系统自带的弹出工具,弹出过后,硬盘在硬件上会和电脑脱离联系,除非重新插拔SATA数据线,否则一条指令都发不过去(也就是说不能手动停转了,关机/休眠的方法也会失效!)。上面发现的在磁盘“下线”、spinDown以后,依旧会让硬盘起转的这些操作应该算是比较特殊和少见的,但是也不能掉以轻心,可能过个大概10分钟后就会因为其他未知的原因,硬盘又自己转起来了,所以spinDown执行完毕,确认所有硬盘已经停转后,请在确保安全的情况下尽快断开SATA直连热插拔机械硬盘的SATA数据线连接(SATA的15pin电源线连着估计问题应该不大),此外,如果上述安全删除步骤的操作对象是:SATA扩展硬盘柜、光驱位SATA硬盘口、PCIE转SATA的扩展卡、SATA硬盘电源管理开关……等SATA转换扩展设备上的SATA机械硬盘,此外还有3.5寸或2.5寸硬盘盒子上的SATA机械硬盘,尽快关闭这些SATA转换扩展设备的电源开关或者断开硬盘的连接。

 

 

讲完了安全拔SATA线的步骤,顺带再提一嘴连接SATA线时的注意事项。连接硬盘前,请确保在主板BIOS里,SATA外设的工作模式为“AHCI”,并开启所有SATA接口的“热插拔”(Hot Plug)选项。注意!是所有接口的!怕你只设定了一两个接口的热插拔,然后插错!不然在开机状态下电脑很大可能是不会识别新连接上的硬盘的。之后和拔出时的顺序一样,也是“先插SATA数据线,再插SATA电源线”。这些注意事项其实有点经验的人都知道,我这里再提醒一下也是以防万一。

哦对了,还有一个很多人都不知道的注意事项我说一下:硬盘连接好且正常起转后(没有敲盘、异响等硬件故障),如果迟迟等不到盘符出现,先尝试一下,进入设备管理器,在所有设备的根节点上(也就是你的计算机名上)鼠标右键单击,然后单击弹出菜单中的“扫描检测硬件改动”让电脑刷新一下,一般过个几秒盘符就出现了,如果还是没出现盘符,而且上次也是按照这个方法移除硬盘的,你也不知道发生了什么,就说明这可能是你忘了关键的步骤导致的,这个步骤在上面的“有个副作用,下一次连接硬盘就需要……”那里。上面两个列出来的可能情况是最有可能发生的,如果排除了上面两点,还是看不到盘符,估计就是硬盘出问题了,当然也有可能是你把所有分区都故意隐藏了或者硬盘压根就没分过区,不过这个可能性非常小。这种情况可能是里面的数据被破坏损伤,或者是硬盘的硬件故障了,建议马上给硬盘断电。如果硬盘没有异响等明显机械故障,可以尝试用上面的spindown命令停转,我个人认为这样可能比较好;但是如果已经出现异响等明显机械故障,赶紧一只手按住硬盘(防止你情绪激动下,没有妥善固定硬盘直接单手拔线,从而让硬盘飞出的悲剧发生),另一只手火速拔掉SATA电源线(注意!是电源线!),这个时候就不要计较拔出时安全不安全了,因为你的数据最重要,再晚个几秒,可能一些数据(包括重要的磁盘固件区域)都被磁头划没了,到时候恢复不出来哭都来不及。给硬盘断电之后取下硬盘妥善保存,并赶紧找个专业的数据恢复机构看看。

 

 

 

 

这个安全移除的方法【【   前提是在windows系统下,还有就是可能需要满足是机械硬盘(机械硬盘都是用SATA协议的,移动硬盘虽然转换出来后是USB协议,但是里面原本的2.5寸硬盘也是用的SATA接口)。至于固态SATA硬盘(非M.2接口),我也不确定spindown命令是否有效,如果无效的话,用这套方法与用系统自带的“删除硬件”在安全性上说应该是没有区别的,不过如果是固态SATA盘(非M.2接口),我感觉直接用系统自带的弹出工具问题似乎不大;至于M.2还有nvme,估计和本方法彻底无缘了  】】不仅适用于SATA硬盘直连的情况,我推测应该还适用于SATA扩展硬盘柜、光驱位SATA硬盘口、PCIE转SATA的扩展卡,以及可能会装在电脑各个位置上的SATA硬盘电源管理开关(一般带有弹簧按钮,可能还会配有电源指示灯,能够根据用户的需要,装在在光驱位、PCIE位,或者USB扩展位等地方,用以在开机状态下,同时控制各个SATA硬盘电源开闭状态的装置)等SATA转换扩展工具,SATA转成USB协议的3.5寸或者2.5寸硬盘盒我估计也适用于这个方法,我用上述方法测试过自己的两个3.5寸硬盘盒子,这两个盒子装载的西数HC320和希捷银河st8000nm017b都能实现安全停转。spindown命令是通过SATA数据线传递的,我估计说成是通过SATA的通信方式似乎也行,毕竟有可能中间有协议转换之类的,理论上只要能访问硬盘的数据,spindown命令就有可能传过去,所以上面写到spinDown这个步骤时,我将这些场景下最后一步断开硬盘连接的注意事项都写了进去。

 

 

 

 

如果真的能有效应用到上述这些场景,这个安全移除方法的意义是非常大的。据我了解,这些用于SATA扩展和转换的工具在关机方式上,很多都是不向硬盘发送安全关机指令,而是直接强制断电的,比如上面提到的“SATA硬盘电源管理开关”和“光驱位SATA硬盘口”,没有一点技术含量。而且就算是可以做到用芯片安全关机的硬盘盒,也可能有失效的时候,比如在特定windows版本系统下弹出后会有硬盘不停转的情况发生,就比如我的一个盒子在win7下弹出,硬盘没有停转(后来用上述方法成功在win7下手动停转了),win10下则没问题。更别说还有某些垃圾盒子滥竽充数,移除时直接强制断电的。有了这个方法之后,我相信我们可以更好得保障热插拔机械硬盘时的安全,守护好自己硬盘的健康。

 

 

 

最后再强调一下,通过SATA线直连主机进行热插拔的机械硬盘如果你在意手动强制拔出硬盘的损伤的话,千万别用系统自带的移除工具,一旦点了系统自带的移除工具,硬盘是不会停转的,而此时再想挽回已经不行了,因为硬盘从硬件层面上已经和系统脱离联系,不能发送关机指令了(也就是说,此时关机/休眠法也无效),除非重新插拔SATA数据线让硬盘再次上线,否则这种情况下是没有办法让硬盘自己“无伤”停转的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3