我们一直听到这样的说法。磁盘空间的成本正在直线下降。您当地的CompUSA很乐意以300美元的价格向您出售一块200GB的ATA硬盘,这大约合每太字节1,500美元。在线购买甚至更便宜——1太字节的硬盘空间只需1,281美元(例如,使用7块迈拓EIDE 153GB ATA/113 5400-RPM硬盘)。
那么,为什么有人会花36万美元向XYZ存储系统公司购买一个16太字节的系统呢?我的意思是,存储有什么难的?问得好。
您现在面临的是典型的自建还是购买的决策:为了节省成本而自己构建是否值得?让我们分析一下“自建”过程需要什么。
您前往CompUSA,希望找到一台低端PC,您可以在其中塞满一堆硬盘。选择不是很多,因为大多数机箱只能容纳两个硬盘,但最终,您发现了一个超级塔式机箱,它能够胜任这项任务。您把它拖回办公室,用您信赖的螺丝刀,设法在里面塞进了六块200GB的硬盘。
但是主板上的ATA控制器只有两个端口——一个用于系统磁盘,一个用于CD-R——而且都被占用了。您断开CD-R的电缆,并将其作为辅助设备重新连接到主ATA控制器电缆。几次重启后,您确信您的系统仍然可以工作,并且所有数据驱动器都已通电。
到目前为止,您设法没有严重伤害自己,尽管第三次您不得不打开机箱重置主/从跳线时,您的手被其中一个锋利的边缘划伤了。没问题。您为了崇高的事业流血了。
现在是时候弄清楚如何将六个驱动器连接到主板了。您有一个空的辅助ATA控制器,可以容纳两个驱动器,但这仍然剩下四个。在网上搜索,您找到了几家销售ATA控制器卡的供应商,价格约为100美元。您购买了一张,以及一些额外的ATA扁平电缆。几天后,您设法连接了所有驱动器。您启动系统,瞧,您看到了驱动器 E、F、G、H、I 和 J,或者 /dev/hdc、hde、hdf、hdg、hdh、hdi 和 hdj(取决于您的操作系统版本)。
现在您需要使用某种RAID保护。RAID,即独立磁盘冗余阵列,是一种将多个硬盘组合成一个逻辑单元的方法。不幸的是,硬件RAID对于ATA驱动器来说仍然相当不可靠。然后您查看软件选项:Linux有MD,Windows有其RAID保护(在服务器版本上)。因此,您安装了您的软件RAID。我们假设您在这方面没有任何实际问题,除了几次重启和重新安装。
现在您已经拥有了1.2太字节的存储空间,而这只花了一天非常繁琐的工作。太棒了!还剩下14.8太字节。
又过了一个星期左右,您设法拼凑了14个这样的存储系统,这为您提供了超过16太字节的原始存储空间。您将它们全部插入您的网络——在购买了一个廉价的100兆位交换机将它们连接在一起之后——然后您开始配置和保护所有14个系统。
您现在准备好开始使用您的存储了吗?还不太行。
最后的障碍是让您的存储密集型应用程序访问存储。应用程序访问数据有两种方式:直接从本地主机访问和通过远程主机间接访问。本地主机访问通常通过存储区域网络 (SAN) 或直接连接架构完成。使用您新的14节点存储系统,您将无法使用这种直接访问方法。您的应用程序将驻留在单个节点上,并且一次只能访问1.2太字节的数据。其他13个节点将无法访问。即使您的应用程序是分布式的,14个节点中的每个节点也必须以某种方式隐式地知道哪些数据驻留在哪个节点上。这是大多数应用程序根本不是为此而构建的。
您的另一个选择是间接访问。导出网络文件系统 (NFS) 或通用 Internet 文件系统 (CIFS) 是远程托管存储的常用方法。应用程序主机挂载文件系统并开始工作。然而,对于您的14节点系统,您的应用程序服务器将不得不挂载14个单独的文件系统。与直接方法类似,您的应用程序必须以某种方式隐式地知道哪些数据驻留在哪个文件系统上。您还必须管理14个文件系统的权限、安全性和性能。这需要大量的Perl脚本。
您的DIY存储系统的成本看起来不再那么吸引人。考虑到廉价服务器、磁盘和一个廉价交换机的成本,我们正在谈论您的定制、管理困难的16太字节系统需要50,000美元。尽管如此,这与36万美元相去甚远。
那么,最初的问题是什么:“如果您的本地CompUSA会以300美元的价格向您出售一块200GB的ATA硬盘,这大约合每太字节1,500美元,为什么有人会花36万美元向XYZ存储系统公司购买一个16太字节的存储系统?”
答案当然是时间就是金钱。如果您没有时间,如果您不想头疼,购买预配置的专用存储系统可能是有道理的。另请注意,如果高性能是必需的,那么您就陷入了困境——购买系统是唯一的选择。DIY方法可以节省大量资金,但性能损失非常真实。
但是,如果您有时间,如果您预算紧张,如果您可以忍受这些麻烦,“自建”替代方案是值得考虑的——特别是如果您是一位有能力的系统管理员或软件工程师,并且不害怕创建一些自定义管道(并且您有一点受虐狂)。在这种情况下,这是一个极好的,尽管有风险的选择。
JOSH COATES,Scale8的创始人兼首席技术官,领导着该公司创新存储和文件系统技术的开发。通过他在研究实验室和领先的企业计算公司的工作,他赢得了可扩展集群技术领域远见卓识者的声誉。在加州大学伯克利分校,他开始从事分布式系统工作,并且是工作站网络 (NOW) 组和千年项目的一部分。他还是一位三人团队的成员,该团队在16节点基于英特尔的集群上打破了并行排序的世界纪录。在Scale8之前,Coates曾在Inktomi工作,开发网络缓存软件应用程序。
最初发表于Queue 第1卷,第4期—
在数字图书馆中评论本文
Pat Helland - 关注您的状态以保持心态
随着应用程序进入分布式和可扩展的世界,它们经历了有趣的演变。同样,存储及其近亲数据库也与应用程序并肩发展。很多时候,存储和应用程序的语义、性能和故障模型都在微妙地跳舞,以支持不断变化的业务需求和环境挑战。规模的扩大确实搅乱了局面。本文着眼于其中的一些问题及其对系统的影响。
Alex Petrov - 现代存储系统背后的算法
本文更仔细地研究了现代数据库中使用的两种存储系统设计方法(读取优化的B树和写入优化的LSM(日志结构合并)树),并描述了它们的使用案例和权衡。
Mihir Nanavati, Malte Schwarzkopf, Jake Wires, Andrew Warfield - 非易失性存储
在大多数执业计算机科学家的整个职业生涯中,一个基本的观察结果始终成立:CPU的性能和成本都远高于I/O设备。CPU能够以极高的速率处理数据,同时为多个I/O设备提供服务,这一事实对各种规模系统的硬件和软件设计产生了广泛的影响,几乎与我们构建它们的时间一样长。
Thanumalayan Sankaranarayana Pillai, Vijay Chidambaram, Ramnatthan Alagappan, Samer Al-Kiswany, Andrea C. Arpaci-Dusseau, Remzi H. Arpaci-Dusseau - 崩溃一致性
数据的读取和写入,是任何冯·诺依曼计算机最基本的方面之一,其微妙性和细微差别令人惊讶。例如,考虑在具有多个处理器的系统中访问共享内存。虽然一种称为强一致性的简单直观的方法最容易让程序员理解,但许多较弱的模型也得到了广泛使用(例如,x86总存储顺序);这些方法提高了系统性能,但代价是使关于系统行为的推理更加复杂且容易出错。