SATA 是否可以用于将两台计算机连接在一起,就像交叉以太网电缆一样?
我知道 SATA 没有“网络”功能,即使控制器可能有多个端口,驱动器也不会“看到”彼此,并且在 SATA 中,一个设备充当主机(计算机),而另一个设备是某种“客户端”(存储驱动器)。
但是,是否有人尝试制作一个内核模块,使一台计算机显示为“客户端”(以便主机的 SATA 控制器将其检测为标准硬盘),然后设置为伪以太网链路或非常高速的串行链路(然后pppd
在其上运行并进行联网)?
注意:我知道这是一个不专业且完全愚蠢的想法,我只是出于好奇才问的。
答案1
在简单看了 SATA 规格后,我最初充满希望,因为 SATA 不仅能与磁盘设备通信,还能与驱动器外壳通信。
但是看起来不可能使用 SATA 将两台计算机连接在一起,主要是因为它是主机/设备拓扑。这意味着主机发送一个特殊的“主机到设备”命令,而设备则发送不同的“设备到主机”命令。
有一些通用的双向“数据”命令可用于交换数据包,但我怀疑这些命令必须以正确的“主机到设备”请求和适当的“设备到主机”响应为前提。我猜想 PC 无法发送“设备到主机”消息(因为它们是主机),而这正是这需要的,但我在这一点上可能是错的。如果 PC 可以发送设备到主机命令,那么是的,您可以通过 SATA 建立主机到主机链接。
但是,即使您可以做到这一点,您也无疑需要定制电缆,因为使用标准 SATA 电缆意味着两台 PC 都在同一对线上传输数据,并且都在同一对线上接收数据(其中没有人传输数据,因此它们永远不会收到任何数据!)您需要破解以太网交叉电缆的 SATA 等效物,以交换 TX 和 RX 线。
我认为这个问题与 USB 的问题非常相似。您无法使用裸露的 USB 电缆将两台计算机连接在一起,因为它们都是主机,没有设备可以通信。但是,有些 USB 设备会从两个主机接收数据并将其传递,这样每个主机的 USB 控制器都会认为它正在与设备通信(技术上确实如此),从而允许通过 USB 进行主机到主机的通信。
对于 SATA,也可以做同样的事情,即您有一个设备,两个主机控制器都连接到该设备,并且它们各自都认为自己正在与设备通信。您仍然需要自定义驱动程序来使 SATA 设备显示为网络设备,但这是可行的。
然而,这只适用于非常短距离的连接,因为 SATA 的最大电缆长度为一米。因此,如果将特殊的 SATA 转换器设备放在中间,则两个 SATA 端口之间的距离必须小于两米(包括从主板或扩展卡到机箱外部的距离)。
答案2
不是,因为它是一种存储协议。但 PATA 可以(有点)。而且PCI Express 可以。
答案3
据我所知,这还没有实现。我无法判断这是否有可能,但我可以说,实现这样的目标需要付出巨大的努力和代码量。
SATA 的主机-客户端设置仅用于存储,不用于网络。因此,您要么需要
- 自己编写网络驱动程序
- 找到一种方法来包装新接口的现有驱动程序,或者
- 放弃传统的网络,而是编写一个驱动程序来镜像客户端的存储,以便主机可以看到它。
这三种方法都有很大的缺陷,但我认为,从理论上讲,这是可行的——最终结果可能仍不会像你想象的那么快。不过,这是一个有趣的想法。