磁盘驱动器是直接连接到每个独立服务器上的,并且可以通过全局分布式文件系统(如谷歌的GFS【2】)来进行管理,也可以作为网络附加存储 (NetworkAttachedStorage,NAS)的一部分,直接连接到集群级的交换网络。NAS是初始化部署的更简单的方案,因为它将这些低端服务器通常是IU(U是unit缩写,其尺寸由作为业界团体的美国电子工业协会(EIA)决定)大小或使用刀片式机箱。
保证数据管理和完整性的责任推给了NAS应用提供商。相比之下,将磁盘集直接连接到服务器节点需要集群级的容错文件系统。实现这一点比较困难但是可以降低硬件成本 (磁盘可以利用已有的服务器封装)和网络占用率 (每一个服务器网络端口都相当于动态地在计算任务和文件系统之间共享)。这两种途径的复制模式也是完全不同的。NAS在装置内通过复制或纠错功能提供额外的可靠性,而像GFS之类的系统,其复制是在不同的机器之间来实现的,进而需要占用更多的网络带宽来完成写入操作。然而,像GFS这样的系统在整个服务器或机架损毁之后依然能够保持数据的可用性,并且可以允许更高的集合读取带宽,因为相同的数据可以从多份复件中读取。以较高的写入开销来换取更低的成木、更高的可用性,以及更高的读取带宽,这对于许多Google的工作负载来说都是合理的解决方案。让磁盘与服务器共置,另外一个好处就是,它允许分布式系统软件充分利用数据局部性。在本书剩余的部分里,将会假设这样一个模型,其中分布式磁盘直接连接到所有的服务器。
一些数据中心,包括谷歌的数据中心,之所以部署桌面级磁盘驱动器而不是企业级磁盘,是由于在两者之间存在着巨大的成本差异。这些数据中心的数据几乎总是通过分布式方式(像 GFS)进行复制,这会降低桌面级磁盘的故障率。不仅如此,由于磁盘驱动器的实际可靠性经常严重偏离制造商的规格,企业级磁盘驱动的可靠性优势并不明显。例如,Elerath和Shah[14]指出了许多比制造工艺和设计对磁盘可靠性影响更大的因素。