我的 BIOS 中有一个选项,可以在单个端口上启用热插拔。我有一个用于安装 HDD 和 SSD 的滑动外壳(只不过是一个电源转接器和一个 SATA 端口),它允许我在实际移动驱动器之前切断驱动器的电源。
我很喜欢在那里插入和移除 HDD/SSD 的便利,而不必每次都关闭计算机。
但在研究 SATA 热插拔时,在昂贵的企业解决方案中,零可靠的信息。我甚至尝试查看专利。我找不到任何可靠的来源告诉我热插拔在消费者世界中有多可靠/不可靠。
所以,我的 BIOS、主板和机箱确实支持热插拔。我从未见过驱动程序在规格中提到热插拔,即使是企业级驱动程序也是如此。为了这种便利,我将面临多大的数据丢失风险?
然后,除了硬件之外,还有软件问题。我需要操作系统支持吗?是否有任何 AT 命令必须发出才能拔下驱动器,或者它是否会自动将其停在断电状态?在软件方面有一个稍微知情的讨论这里
编辑:发现了一些有关热插拔的更多信息。来自西部数据:它说每个根据标准定义支持 SATA 的驱动程序都已经支持热插拔。
因此,SATA 兼容设备无需进一步修改即可实现热插拔,并为强大的热插拔解决方案提供必要的构建模块,通常包括:即使在插座断电的情况下也能进行设备检测(服务器应用的典型特征)
预充电电阻器可在驱动器插入期间被动限制浪涌电流
热插拔控制器可在驱动器插入期间主动限制浪涌电流
来源:http://wdc.custhelp.com/app/answers/detail/a_id/941/~/hot-swap-or-hot-plug-wd-sata-drives
但是,上述内容引发了另一个疑问。它说:
为了充分利用串行 ATA 硬盘的热插拔功能,您必须使用串行 ATA 电源连接,而不是传统 (Molex) 电源连接。传统 (Molex) 电源连接不支持热插拔。
我的一些驱动程序是从 molex->sata 电源连接的,只是因为我的 PSU 上没有 sata 电源端口。据我所知,一些 molex 和 Sata 电源来自同一个 12V 导轨。而且 SATA 插头似乎没有任何逻辑。它只是愚蠢的塑料。这是否意味着我是安全的,并且文档指的是支持 sata 和 molex 的驱动程序?
答案1
为了这种便利我将面临多大的数据丢失风险? 除非驱动器坏了,否则数据丢失的风险并不大。HDD 在处理意外断电方面非常可靠。SSD 在处理意外断电方面不太可靠。话虽如此,如果驱动器上没有活动,热插拔是相当安全的。我几乎每天都这样做。
我需要操作系统支持吗? 不,驱动器并不关心操作系统。如果操作系统不支持热插拔,则意味着操作系统可能需要重新启动才能检测驱动器,并且它不会向驱动器发送命令以更优雅地关闭。最坏的情况是操作系统崩溃,但驱动器会没事。请记住,只要驱动器上没有活动,那么拔下它就很安全。
是否有任何必须发出的 AT 命令来拔下驱动器,或者它是否会自动在断电时停止运行? 有命令可以强制驱动器停下磁头,但驱动器上没有活动时也会这样做。无法保证断电时会自动停下磁头,因为我们无法保证它有足够的电量来做到这一点。
哦,这里有一个警告。某些操作系统可能会延迟将数据发送到驱动器,或将文件系统信息保存到驱动器。这时您应该使用“安全移除”或“卸载”功能。这仅适用于新写入的数据。
答案2
并且 SATA 插头似乎没有任何逻辑。它只是愚蠢的塑料。
这是错误的。SATA 电源插头中包含的逻辑是被动逻辑,但它仍然存在。在硬盘针脚的图片中更容易看到,但它也存在于电源连接器中。注意到下面的一些针脚比其他针脚短吗?这是为了让针脚按特定顺序连接。(我不记得是哪个顺序,但我相信在电源线上,较长的针脚先接地并连接。)数据针脚也以相同的方式设置。
答案3
我买了一个 SATA 托架,它物理上允许热插拔。所以我在想这个问题。现在我得到了奇怪的结果。在从 nvme 启动的 Linux 中,热插拔有效。但在从 SATA 驱动器加载的 Linux 中,热插拔另一个驱动器会导致重新启动。我不确定是否涉及一些内核参数,稍后会探索。并且还将使用 Windows 操作系统进行测试。
在 Linux 中,我使用了以下命令,其中我选择了我认为可能相关的字段:
$ lsblk -d -o NAME,MAJ:MIN,RM,HOTPLUG,MODEL,ROTA,TYPE,TRAN,SUBSYSTEMS,VENDOR
它说我的固态硬盘不可移动(注意R M和热插拔列):
NAME MAJ:MIN RM HOTPLUG MODEL ROTA TYPE TRAN SUBSYSTEMS VENDOR
sda 8:0 0 0 Samsung_SSD_850_EVO_500GB 0 disk sata block:scsi:pci ATA
sdb 8:16 0 0 Samsung_SSD_860_EVO_500GB 0 disk sata block:scsi:pci ATA
sdc 8:32 1 1 Portable_2_Plus 1 disk usb block:scsi:usb:pci Live Gam
nvme0n1 259:0 0 0 Samsung SSD 960 EVO 1TB 0 disk nvme block:nvme:pci
但是,我不知道 lsblk 的信息有多准确。至少,我注意到 sdc 显示为可旋转磁盘(ROTA 为 1),但这是错误的,因为它只是一张 SD 卡。
即使在 uefi bios 中为每个端口启用热插拔后,RM 和 HOTPLUG 字段仍保持为 0。奇怪……我认为至少 HOTPLUG 字段应该变为 1。然后,我在一台没有硬件 raid 的超微服务器上额外检查了这些内容(因此,背板上只插入了几个 sata ssd),它们肯定是可热插拔的,但是,RM 和 HOTPLUG 也始终为 0,尽管在服务器的 bios 中启用或禁用了热插拔设置。
答案4
您可以在以下位置查看我的回答:
简而言之,在消费领域中热插拔不受支持。