为什么磁盘驱动器无法(物理)连接到 2 台以上的计算机?

为什么磁盘驱动器无法(物理)连接到 2 台以上的计算机?

我的一个朋友问是否可以将磁盘驱动器连接到多台计算机,我直接回答“否”,但我意识到我能想到的任何不便之处几乎都很容易解决。所以我重新考虑了我的立场:如果这不可能,为什么?

我一直在想,最明显的问题是:

  • 读/写冲突(但可以通过排队操作或事务解决)
  • 可用性(但至少一个电源足以维持其工作)
  • 我能想到的大多数其他问题都不是在硬件层面,而是在驱动程序层面以上

此外,存在非常常见的方法,即多个驱动器跨越逻辑驱动器,并且网络文件系统几乎一致地处理这些问题。

然而,这似乎并不是什么常见的事情——我的假设哪里错了?

答案1

我认为这个问题很容易解决。所以我重新考虑我的立场:如果这不可能,那为什么呢?

因为几乎没有现有的文件系统支持这一点。大多数文件系统的假设是单台计算机拥有完全控制权。

有一些文件系统和技术确实支持多台计算机连接到它。 其他认为这根本不可能的答案是不正确的,或者至少是不完整的。

一种相对常见的设置是这样的。取一个标准驱动器,将其放入支持 iSCSI 的存储机箱中,在同一个 iSCSI lun 上设置两个 VMware ESXi 主机并使用 VMFS。 VMFS 是集群文件系统专门设计用于多个系统访问。但正如我提到的,您需要专门为此设计的硬件。如 iSCSI、光纤通道或其他一些技术。

VMware VMFS(虚拟机文件系统)是 VMware, Inc. 的集群文件系统。它由 VMware ESX Server 和该公司的旗舰服务器虚拟化套件 vSphere(及其前身 VMware Infrastructure)使用。[4] 它被开发并用于存储虚拟机磁盘映像,包括快照。多台服务器可以同时读取/写入同一个文件系统,同时单个虚拟机文件被锁定。

Windows 2012R2 上的 NTFS 还支持两个系统同时访问。这是使用微软称之为集群共享卷

答案2

这一切都与界面以及系统架构方式有关。

一开始,你有一个单独的驱动器控制器和一个需要特殊设计才能工作的硬盘。后来,你有了 IDE,它内置了用于控制驱动器的电子设备。

但是,计算机用于与驱动器通信的协议是为单个主机和 X 个设备设计的 - 例如,SCSI 和 ATA 具有具有类似命令的网络变体,但它们仍然是一个主机对多个客户机。您需要一个驱动器通信协议,可以“礼貌地”处理来自多个系统的请求、缓冲内容并存储它们。因此,实现这一点的“最佳”方法是将复杂性交给处理以太网、存储协议等的主机系统,并将该成本分摊到多个驱动器上。

您的物理接口是设计为暴露给一个主机(使用点对点或总线接口)而不是多个主机(使用星型或总线拓扑)。

它仍然是真的新的,但类似于新的希捷 Kinetic 硬盘- 它们是使用本国的以太网接口,将被视为一个可以直接连接(或通过交换机连接)到多个驱动器的“硬盘”,使用旨在连接多个主机的协议。本质上,您将每个驱动器视为自己的系统。微处理器已经变得足够便宜和强大,以至于每个驱动器运行一个小型“服务器”,通过以太网/ip 连接它,并在驱动器本身上发送/接收/缓冲和存储数据。

因此,您可以做到这一点,但设计选择与历史上截然不同。没有什么可以阻止您(如果您碰巧是 HDD 制造商)投入小型操作系统、廉价的 arm 处理器和以太网接口,并构建一个能够处理许多客户端的微型直接网络连接硬盘。您只需要能够/愿意抛弃以 DAS 为中心的物理、电气和信号协议,这些协议迄今为止在个人系统、存储和各种 SAN/NAS 阵列中运行良好。

答案3

我认为问题在于与 PC 的连接存在限制。SATA 和 SAS 的电气设计不适合连接到 1 个以上的系统,而且由于它是串行协议,我认为 USB 也不行。(也就是说,我认为问题在于需求不足,并且硬件/逻辑比操作系统层低)

这意味着访问驱动器的逻辑在物理上需要抽象 - 而事实上最合乎逻辑的方法是使用网线和转换器之类的东西,这在很多方面(但不完全是)就是 NAS。

(我注意到@Zordache 说过有些文件系统可以支持这一点——在 Linux 世界中,GFS 和 OCFS 很常见,但是http://en.wikipedia.org/wiki/List_of_file_systems在“共享磁盘文件系统部分 - 因此可以在操作系统和更高级别上使用”中列出了一大堆。

文章从技术层面讨论了这个问题——根据定义NAS允许共享存储,DAS只能单一——并且常见的磁盘协议都是DAS。

答案4

您可以通过网络连接到单个驱动器(这需要特殊的文件服务器,但我的廉价家用路由器可以做到这一点)。它可以处理文件冲突、锁定和其他问题。基本文件 IO(SATA、PATA)不能处理这种情况,它只能读取和写入扇区。

电源 - 如果连接到不同的电源,则可能会烧坏它,因为电源相位不同。

相关内容