本次讨论汇集了七位世界一流的存储专家,是新的 CTO 圆桌论坛系列的第一期,重点关注商业计算社区面临的近期挑战和机遇。该系列由 专业委员会监督,旨在为 IT 管理人员提供专家建议,以便他们在投资新架构和技术时能够做出更好的决策。这是讨论的第一部分,第二部分计划在以后的期刊中发表。
考虑到 Usenix 和 服务于相似的群体,Usenix 执行董事 Ellie Young 慷慨地邀请我们在 2008 年 2 月 27 日于圣何塞举行的 Usenix 文件和存储技术会议 (FAST '08) 期间举办我们的小组讨论。Young 和她的工作人员在会议期间为我们提供了极大的支持, 的所有人都非常感谢他们的努力。
—Stephen Bourne
主持人
MACHE CREEGER Emergent Technology Associates 负责人
参与者
STEVE KLEIMAN Network Appliances 高级副总裁兼首席科学家
ERIC BREWER 加州大学伯克利分校计算机科学系教授;Inktomi 联合创始人(被 Yahoo 收购)
ERIK RIEDEL 希捷科技希捷研究部门接口和架构部门主管
MARGO SELTZER 哈佛大学 Herchel Smith 计算机科学教授、工程与应用科学部教授;Sleepycat Software 创始人(被 Oracle 公司收购);Oracle 公司架构师
GREG GANGER 卡内基梅隆大学电气与计算机工程教授、计算机科学学院教授;并行数据实验室主任
MARY BAKER 惠普实验室惠普公司研究科学家
KIRK McKUSICK Usenix 协会前主席;BSD 和 FreeBSD 架构师。
CREEGER 欢迎各位。今天我们讨论的存储问题是人们现在正在接触到的,以及他们可以在近期内期待遇到的问题。我们不妨从能耗开始,看看会讨论到哪里?
BREWER 最近,我决定从头开始重建我的 Microsoft Windows XP PC,并且第一次尝试使用 32GB 闪存卡代替硬盘驱动器。我已经使用网络附加存储来存储所有重要的东西,并且本地磁盘上的信息可以很容易地从分发 CD 中重新创建。闪存消耗更少的能量,并且更安静。
虽然这看起来像个好主意,但效果并不理想,因为 XP 显然在启动期间会大量写入其 C 盘。写入闪存不是一个好主意,因为设备的写入次数和带宽都有限制。即使闪存的读取时间很棒,但我发现 Windows 机器上的启动时间非常差。它比我更换的驱动器还要慢,所以我不得不回到系统中的磁盘。但我仍然喜欢这个想法,并且觉得我启动 PC 所需的东西应该是一个低功耗的闪存设备,具有大约 32GB 的存储空间。
RIEDEL 这突出了新技术采用中的一个问题。在软件被适当修改以匹配新硬件之前,您无法获得全部好处。我们今天运行的许多软件都很旧。它是为某些范例、某些硬件集设计的,并且随着我们转向新硬件,旧软件不匹配了。
CREEGER 我也有类似的经历。在我的家里,我的家人沉迷于 MythTV——一个免费的、开源的、客户端-服务器 DVR(数字视频录像机),它在 Linux 上运行 (http://www.mythtv.org/)。考虑到能耗,我想尽可能地摆脱硬盘驱动器。我首先尝试无盘化,并从服务器上进行客户端的网络启动。我发现要让网络启动的 Linux 客户端配置成我想要的方式非常困难。像 NFS(网络文件系统)这样的东西不容易实现,如果你想包含一个小标准集之外的东西,你必须做一个自定义内核。
由于我想要小尺寸的客户端机器,并且担心发热和噪音,所以我看了一下闪存,但很快注意到它的写入次数有限。因为我对我的出站写入没有很好的把握,所以闪存似乎不是我需求的特别好的候选者。
我最终选择了笔记本电脑硬盘驱动器,这似乎是最好的折衷方案。笔记本电脑硬盘驱动器具有大量的存储空间,相对便宜,可以抗震,不会产生大量热量,并且运行不需要太多电力。对于小型视听客户端计算机,笔记本电脑硬盘驱动器似乎是我目前最合适的解决方案。
RIEDEL 希捷一直在销售专门为 DVR 优化的驱动器。问题是我们不将它们卖给零售渠道,而是卖给 TiVo 和 Comcast 等集成商。最初,优化是为了声音。我们减慢了磁盘寻道时间,并对材料进行了其他处理,以消除咔哒咔哒的声音。
最近,电力问题更加令人关注。您必须在功率和存储容量之间取得平衡。当您使用笔记本电脑驱动器时,它是一个带有较小盘片的较小驱动器,因此位数较少。对于大多数 DVR,您仍然关心您可以存放多少高清节目(典型的一小时高清电视使用的存储容量是标清电视的五倍以上)。
BAKER 谈到噪音!我们在家有三个 TB 的存储空间。我以前的亚麻壁橱现在变成了机房。虽然存储设备应该可以愉快地放在标准的家庭环境中,但有了三个设备,我就会遇到过热故障。我们家没有空调,但亚麻壁橱里有。存储设备有多安静都无所谓,因为空调真的很吵。
CREEGER 我们在这个小小的缩影中发现的是人们需要考虑的权衡。家用服务器正在成为家庭基础设施的一部分,人们必须处理电力、发热和噪音问题。
McKUSICK 我们家有七台机器,我们想将电费降到每千瓦时 59 美分。我们购买了 Soekris 盒子,它将支持闪存或笔记本电脑硬盘驱动器 (http://www.soekris.com/)。盒子使用 6 瓦加上连接的存储设备的功耗。
我们尝试的第一台机器是我们的 FreeBSD 网关。我们使用了闪存,效果很好。FreeBSD 在进入多用户模式之前不会写入任何内容;因此,我们能够将我们的网关配置为几乎无写入。
有了最初的成功,我们专注于我们的 Web 服务器。我们发现 Web 服务器 Apache 一直在写入东西,我们的第一个闪存设备在 18 个月后写入失败。但是闪存技术似乎正在改进。在我们用 2 倍大小的设备替换它之后,它受写入的影响没有那么严重了。更换后的设备已经稳定运行了将近三年。
SELTZER 我那些研究闪存的人声称,写入问题很快就会成为过去。
KLEIMAN 是的,也不是。写入限制会随着时间的推移而下降。然而,只要容量增加得足够多,使得在给定的写入速率下您不会过快地用完它,就可以了。将闪存视为消耗品是正确的,您必须以这种方式组织您的系统。
McKUSICK 但是磁盘也是消耗品;它们的寿命只有三年。
KLEIMAN 磁盘绝对是消耗品。它们在五年后也会过时,因为您不想使用相同的功率来旋转只有当前技术四分之一存储空间的东西。
闪存的意义深远。我已经算过了。在我记忆中,主内存和磁盘在每 GB 美元方面的比率大约为 100 比 1。闪存正好位于中间。事实上,如果您查看预测,至少在原始成本基础上,到 2011-2012 年,闪存将在每 GB 美元方面与高性能硬盘驱动器重叠。
然而,闪存在每随机 I/O 操作美元方面比硬盘驱动器好两个数量级。硬盘驱动器在随机和顺序访问模式之间存在 100 比 1 的带宽差异。在闪存中,情况并非如此。读取和写入之间的差异可能在 2 比 1 或 3 比 1 之间,但动态范围要小得多。
GANGER 在这方面它更像 RAM。
KLEIMAN 是的。我的理论是,无论是闪存、相变内存还是其他东西,在内存层次结构中都有一个新的位置。几十年来一直存在一个巨大的空白空间,现在被填补了,很多东西都需要重新思考。这有很多含义,我们才刚刚开始看到冰山一角。
BAKER 很多人都同意您的观点,并且在未来几年内观看它会很有趣。有一个 JouleSort 基准竞赛 (http://joulesort.stanford.edu/),您尝试在一定的约束条件(性能或尺寸)下,以最低的功率对特定的数据集进行排序。到目前为止的获胜者一直在试验闪存。
KLEIMAN 我去了一个网站,该网站对世界上最大的数据库进行了排名。我认为最大的 OLTP(在线事务处理)数据库在 3 到 10 TB 之间。我从我在 Oracle 的朋友那里了解到,如果您缓存 OLTP 数据库的 3% 到 5%,您将获得很多有趣的东西。这意味着价值几千美元的闪存可以缓存当今已知的最大 OLTP 工作集。如果几千美元就能做到,您就不需要花费数十万美元的企业级 hoo-ha。
对于 Teradata 和 Netezza 等公司,您必须问,为了 DSS(决策支持系统)而重新组织数据的所有这些事情是否还有必要。
CREEGER 对于在得梅因苦苦挣扎以从现有 IT 基础设施中获得更多收益的可怜的 IT 管理人员来说,您是说他们真的应该关注提供闪存缓存的现有供应商吗?
KLEIMAN 不。我实际上认为闪存缓存是一种临时解决方案。如果您考虑这个问题,缓存对于磁盘来说很棒,因为聚合是有好处的。如果我在网络上有大量的磁盘,我可以获得比我专用于我的单个磁盘更好的性能,因为我有更多的手臂为我工作。
对于基于 DRAM 的缓存,我从聚合中获得了好处,因为 DRAM 非常昂贵,很难将其专用于任何单个节点。对于基于网络的闪存缓存,这两者都不成立。通过将其放在网络上,您只能获得闪存性能的一小部分。我认为闪存会迁移到两侧:主机和存储系统。它不会单独存在于网络中。
CREEGER 人们可以利用哪些产品或架构?
KLEIMAN 当然。我认为在未来几年内,缓存将很重要。这是一种简单的方式。将一些 SSD(固态硬盘)放入人们拥有的一些缓存产品或阵列中,这很容易。很多人会使用 SSD。我只是在谈论长远来看。
CREEGER 这提高了整体性能,但另一个问题呢:功耗?
KLEIMAN 我对功耗持怀疑态度。人们构建所有这些架构来降低功耗,但功耗最低的磁盘是您不拥有的磁盘。您最好将东西压缩成最压缩的形式。我们已经看到,如果您可以删除存储系统中所有重复的副本,并使其只有一个实例,那么您可以消除大量原本需要供电的存储空间。当同一组可执行文件有数百个副本时,这可以节省大量能源。
SELTZER 您绝对正确。消除重复有助于降低功耗。但这并不矛盾;这是一种不同的电源管理方式。如果您查看存储成本,它不仅是初始成本,还有长期成本,例如管理和电力。电力占了很大一部分,而重复数据删除是减少电力的一种方法。任何类型的低功耗设备,其中闪存就是一个例子,都将越来越吸引人们,因为电力变得越来越昂贵。
KLEIMAN 我同意。闪存可以处理许多非常昂贵、高功耗的工作负载——繁重的随机 I/O。但我是在假设磁盘仍然存在的情况下工作的。从每 GB 美元的角度来看,长期来看,闪存和磁盘之间至少存在 5 比 1 的比率。
SELTZER 如果购买闪存盘比旋转磁盘贵五倍,那么我必须使用闪存盘多长时间才能在五年内从节省的电力中弥补 5 倍的成本,而不是旋转磁盘?
KLEIMAN 这是一个合理的观点。当您不访问闪存时,它消耗的功率非常少。鉴于电价正在上涨,即使对于“胖”驱动器,五年寿命内的电力和冷却成本也可能接近驱动器的原始成本。但这仍然不是 5 倍。磁盘厂商正在研究低功耗运行和空闲模式,这些模式可以将功耗降低一半或更多,而不会增加超过几秒钟的访问延迟。这会将情况改善到仅比驱动器的原始成本高 50%。
看看基于磁带的迁移系统。做出错误决定的代价非常惨重,因为您必须找到磁带,将其放入驱动器,然后等待一两分钟。旋转磁盘或一组磁盘几乎相同,因为它可能需要超过 30 秒。通常,这些磁带系统在预期行为是首次数据访问时间可能为一分钟的情况下是成功的。显然,经典的例子是备份和恢复,这就是我们今天看到自旋下降主要使用的领域。
如果您想将这些想法应用于通用、所谓的“非结构化”数据,在这种情况下,很难让人们知道访问这个特定的数据集可能会有明显的延迟,那么很难获得好的结果。在所需的磁盘全部旋转起来之前,试图访问旧项目文件或跟踪搜索结果的人员已经打电话给 IT 部门了。借助低功耗运行模式,首次访问时间是合理的,并且节省的电力是可观的。顺便说一句,过去几年数据增长的大部分是非结构化数据。
RIEDEL 这就是关键解决方案的来源。看看 EPA 最近关于数据中心能源之星的提案正在做什么。它解决了一系列您需要考虑电力的领域。它有一个关于设备中电源管理功能的部分。它可能被编写成这样:如果您完成以下五件事中的两件,您就可以获得能源之星标签——例如,在重复数据删除、精简配置或自旋下降之间进行选择。
但是,如果您查看规范的核心部分,则有一个部分侧重于空闲功率。这是我们在存储方面面临重大问题的地方。CPU 厂商可以使 CPU 空闲。如果没有什么可做的,那么它就会进入空闲状态。问题是存储系统仍然必须存储数据,并在数据请求到来时做出响应。这意味着数据就绪时间和准备就绪时间非常重要。在这些情况下,人们确实需要了解他们的数据。存储系统的最佳空闲功率是关闭整个系统,但这不会让人们访问他们的数据。
我们以前从来没有真正小心过,因为我们不必小心。您可以继续花费瓦特并投入更多设备。当您开始问“我实际在使用哪些数据以及我如何使用它?”时,您就必须进行预测。
KLEIMAN 我的观点是,在您必须关闭磁盘之前,重复数据删除、压缩和低功耗运行模式有很多唾手可得的成果,我们可以花接下来的四五年时间只做这些事情,并节省比自旋下降更多的能量。
RIEDEL 我们将不得不更多地了解数据和应用程序。看看我们都知道的早期技术的历史:RAID。进行 RAID 有多种原因。您这样做是为了可用性、保护数据和获得性能优势。在某些领域,RAID 没有任何好处。当我们问客户为什么要使用 RAID 时,没有人知道哪些好处对他们更重要。
我们花了所有时间送他们去参加培训课程,教他们各种 RAID 级别以及如何计算 XOR。他们知道的是,如果他们想保护他们的数据,他们必须将其调到 RAID5,如果他们有闲钱,他们想将其调到 RAID10。他们不知道他们为什么要这样做,他们只是说,“这就是我应该做的,所以我会这样做。” 对数据和应用程序如何被使用没有更深入的理解。模型不存在。
SELTZER 我认为这不会改变。我们将不得不找出与电源管理相当的 RAID,因为我认为人们不会以这种方式了解他们的数据。这不是人们知道或理解的东西。
McKUSICK 或者他们将在磁盘前面放置闪存,这样您就可以关闭磁盘电源。您可以将其转储到闪存中,然后在磁盘可用时更新磁盘。
BREWER 无论如何,许多磁盘都有一些 NVRAM(非易失性 RAM),所以我感觉可以吸收写入突发,同时驱动器唤醒。我们应该能够隐藏它。至少在我的消费者案例中,我知道一个磁盘可以处理我的读取负载。企业级更复杂,但我们可以关闭很多磁盘。
KLEIMAN 我不同意。闪存缓存可以帮助企业中使用的许多应用程序。然而,由于存在 10 比 1 的成本因素,在某些领域,闪存没有增加任何好处。您必须让磁盘显示出来,以便解决缓存未命中问题。这很难预测。
我们早已过了可以删除某些东西的程度。通常,您不知道什么是重要的,什么是不重要的,并且您无法花费时间和金钱来弄清楚。因此,您最终保留了一切,这意味着在某种意义上,一切都具有相同的价值。问题是您需要在所有数据中达到一定的最低可靠性或冗余度,因为很难区分什么是重要的,什么是不重要的。这不仅仅是 RAID。人们会想要制定灾难恢复策略。他们不会只保留一份东西,无论是否使用 RAID。
RIEDEL 在我部门最近举行的一次讨论存储功耗的活动中,我们有一个关于 CPU 缩放系统的供应商演示。当系统管理员感觉他们正在接近峰值功率时,他们可以访问主控制台并将所有处理器回退 20%。这是一个他们今天正在运行的系统,他们这样做没有恐惧。他们认为应用程序是平衡的,并且不知何故,所有应用程序——Web 服务器、数据库服务器——都将适应一切运行速度慢 20% 的情况。
当我们小组看到这一点时,我们清楚地认识到,我们将不得不弄清楚存储的等效方案是什么。我们需要能够架构存储系统,以便管理员可以选择说,“在接下来的几个小时内,我需要它消耗少 20% 或 30% 的电力。”
CREEGER 我早期学到的一个口头禅是,在数据库中,更多的 spindle 更好。更多的 spindle 允许您拥有更多的并行性和更宽的数据路径。你们现在都在说的是,我们必须挑战这一点。更多的 spindle 更好,但代价是什么?是的,我可以在一个 spindle 上运行数据库,但它不会是一个特别响应迅速的数据库。它不会拥有 10 个 spindle 数据库的所有性能,但运行成本会更低。
KLEIMAN 如果您考虑数据库示例,我对此不太了解。您可以将大部分工作集放在闪存上。您不必担心旋转它。
SELTZER 这是这里的关键见解。闪存有两个吸引人的特性:它可以很好地处理随机 I/O 负载,并且非常节能。我认为您必须考虑这将如何在存储层次结构中发挥作用,以及它将如何提供帮助。
在某些情况下,您可能将闪存用作性能增强器、功率增强器或两者兼而有之。这又回到了 Erik Riedel 的观点,即今天的人们不知道他们为什么要使用 RAID。闪存很可能也是如此。
GANGER 搜索引擎的通用模型是您想要拥有一个特定的集群来处理给定的负载。当您想要增加可以处理的负载时,您基本上可以复制整个集群。使其易于管理的是复制单元。
当圣诞节前夜服务负载较低时,您实际上可以关闭许多副本的电源。虽然我不相信这已经完成,但随着电力成本继续成为一个更大的问题,这似乎是应该做的事情。在这些系统中,已经存在很大程度的复制,以便在高负载期间提供更多的 spindle。
CREEGER 你们都说有很多唾手可得的成果可以利用。今天是否有像服务器虚拟化那样深刻的事情可以做?
KLEIMAN 服务器虚拟化的配套是存储虚拟化。像快照和克隆这样的东西会获取您要运行的整个黄金映像,并立即创建一个副本,以便只有已更改的部分是额外的。您可能拥有 100 台虚拟服务器,它们认为有 100 个映像,但它只有一个黄金映像和差异。这节省了惊人的成本。这与服务器虚拟化中发生的事情相同;它几乎是镜像。
过去几年出现的是共享基础设施的能力。您可能有一个基础设施,但它仍然是 100 个不同的映像;您实际上并没有共享数据。自从我们拥有克隆技术以来,这种情况在过去五年中发生了变化。这使您可以获得巨大的所谓精简配置节省。
BREWER 我不同意之前说过的某些话,即删除东西变得困难。我认为删除是一项基本人权,因为它触及了什么是私人的,以及您对关于您的数据的权利。我希望能够删除我自己的东西,但我也希望能够从不再信任的、拥有关于我的数据的群体中删除。这在很大程度上是一个法律问题,但我讨厌感觉技术上的事情会让我们远离删除能力。
KLEIMAN 这是一个很好的观点。虽然花费智力精力来决定您要删除什么是很困难的,但是一旦您花费了精力,您就应该能够删除。事实是,删除某些东西非常困难。您不仅必须处理磁盘本身,还必须处理在您“删除”它们后驻留在磁盘上的位,以及副本和磁带上的备份。
我们当前产品的一部分,以及我们继续努力的方向,是能够细粒度地加密信息,然后丢弃密钥。这会删除信息本身、信息的副本以及磁带上的信息副本。
SELTZER 这有两个方面。我同意这是删除问题的一个很好的解决方案,但它让我担心,因为您可能会产生意想不到的后果,即您现在遇到了密钥管理问题。考虑到我自己跟踪密码的能力,如果我丢失了密钥,我就会永远丢失我的数据,这种想法有点可怕。
KLEIMAN 我们有一项技术可以做到这一点。它变成了一个分层密钥管理系统。Margo 是对的。当您关心做这样的事情时,您必须认真对待它。一旦您丢失或删除了该密钥,它就真的、真的、真的消失了。
SELTZER 考虑到我对快照的最大喜爱来自于我无意中删除了我不想要的东西的那次,无意中删除密钥真的让我害怕。
KLEIMAN 这就是人们不会这样做的原因,对吗?我认为这将出于非常特定的原因,并带有预先考虑的意图,即“看,出于法律原因,因为我不想被起诉,我不希望这份文件在五年后仍然存在。”
今天,数据所有权具有非常真实的负担。例如,您有义务保护诸如客户的信用卡号或社会安全号码之类的东西,而这种义务具有真实的成本。当您想要解除这种负担时,这为您提供了一种方法。
SELTZER 我听到了,并且在某种程度上我相信它,但在另一个层面上,我不禁想到弹出的对话框,上面写着“您真的要这样做吗?” 我们都被训练成点击它们并说“是”。我担心人类会多么认真地对待绝对删除。
RIEDEL Margo,您指出了一个更大的问题。今天,所有安全技术的关键问题之一是可用性基本上为零。关于网页安全性,人们愿意点击和忽略的东西令人惊讶。只要页面上的某个地方有一个锁图标,就可以了。
BREWER 如果我们将删除作为一项权利,这将得到解决。我可以期望我的业务关系在我们的关系结束后删除所有关于我的记录。行业会弄清楚的。如果您展望 30 年,鉴于那里存在的东西,您可以推断出的数量比今天已知的关于您的数量要糟糕得多。
BAKER 这令人难以承受,而且无法收回。一旦它在那里,就无法控制。
CREEGER 既然我们都同意应该有一种方法让信息具有某种生存时间或能够在未来的某个方向消失,那么我们可以提出什么建议?
SELTZER 这里存在一个根本的冲突。我们知道如何使用加密进行真正的删除,但对于每项好处,都有成本。作为一个行业,我们已经证明安全性的成本太高了。为什么我们的系统不安全?没有人愿意为可用性或性能付出代价来获得真正的安全性。
在删除方面,存在类似的成本效益关系。有一种方法可以提供好处,但永远丢失数据的风险成本太高,以至于存在紧张关系。除非我们提出不同的技术,否则这种根本的紧张关系永远不会完全解决。
BREWER 如果您想要的是改变主意的时间,我们可以稍等一段时间再丢弃密钥。
SELTZER 我听到的最好的方法是您随着时间的推移丢弃密钥的位。丢弃密钥的一位允许通过少量努力进行恢复。丢弃第二位,它变得更难,依此类推。
BREWER 但最终,要么您能够让它消失,要么您不能。您必须愿意接受删除的含义。经验总是告诉我们,当您删除您宁愿保留的东西时,会感到后悔。
本文发表在 2008 年 8 月出版的 Communications of the 杂志上。
最初发表于 Queue 第 6 卷,第 6 期—
在 数字图书馆 中评论本文
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 总存储顺序);这些方法提高了系统性能,但代价是使系统行为的推理更复杂且易出错。