揭秘 SATA 热插拔

揭秘 SATA 热插拔

我的 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 电源插头中包含的逻辑是被动逻辑,但它仍然存在。在硬盘针脚的图片中更容易看到,但它也存在于电源连接器中。注意到下面的一些针脚比其他针脚短吗?这是为了让针脚按特定顺序连接。(我不记得是哪个顺序,但我相信在电源线上,较长的针脚先接地并连接。)数据针脚也以相​​同的方式设置。

维基百科 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

您可以在以下位置查看我的回答:

https://serverfault.com/questions/690609/in-which-order-do-i-plug-the-sata-power-and-data-cables-for-hotplug/1137222#1137222

简而言之,在消费领域中热插拔不受支持。

相关内容