各位优秀的互联网人,大家好:
今天我们采访了来自Oxide Computer Company的 Bryan Cantrill。
云计算一直是计算行业的杰作,许多企业甚至政府的计算基础设施都转向云服务。这使得这些公司和政府几乎完全隔离了由于许多云提供商的庞大规模而可能出现的任何硬件问题,这使得他们能够在解决硬件问题的同时自动将虚拟机迁移到其他系统。但出于各种原因,例如合规性原因、成本等,并非所有内容都可以甚至应该迁移到云端。这意味着有些人可能不得不坚持使用本地计算,但在硬件故障的情况下自动迁移的云模型仍然相关,这就是 Oxide 的用武之地。
Oxide 正在构建的实际上是一个本地云。首先,Oxide 的理念是以与超大规模提供商(AWS、GCP、Azure 等)相同的方式对待服务器机架。因此,您无需直接访问服务器中的单个节点并运行工作负载,而是在 Oxide 控制面板中启动虚拟机,就像在 AWS 或 Azure 中一样。这允许在发生硬件故障时自动进行虚拟机故障转移。现在,为了促进这种类似云的行为,Oxide 正在构建自己的机架,类似于您可以在超大规模数据中心找到的机架。上周我在湾区时,有机会采访了他们的首席技术官 Bryan Cantrill,询问他们的硬件以及他们正在做什么。
希望大家喜欢!
为了简洁和可读性,以下文字经过编辑。
乔治:你们好互联网人!今天,我们来到了 Oxide Computer Company,布莱恩,我也和我在一起。
布莱恩:嘿!
乔治:你是谁?你在 Oxide 做什么?
BRYAN:大家好,我是 Bryan Cantrill,我是 Oxide Computer Company 的首席技术官,我们在埃默里维尔的办公室,我们的办公室和实验室,有点像我们在埃默里维尔的剧场。
我们是一家电脑公司!我们是一家现代化的计算机公司,我们是一家机架规模的计算机公司。
所以,这就是你身后的 Oxide 机架,我们所做的——我们的观察是,如果你看看那些大规模部署计算的人——亚马逊、谷歌……超大规模,对吗?他们都建造了自己的计算机。我们(我和我的联合创始人)在一家公共云公司 Joyent,该公司被三星收购了——
乔治:有趣!
布莱恩:这很有趣!而且,我们……在三星收购该公司之后,他们确实试图以三星规模进行部署。我们被部署在商品装备上;我们部署在 Dell、Supermicro、一些 HP、一些 Arista…以及呃…
乔治:尝试匹配所有这些东西可能非常困难。
BRYAN:当我们达到规模时,一切都崩溃了。
乔治:我可以想象。
布莱恩:公平地说,硬件和软件方面的一切都出了问题,但不同的是,有了软件,我们实际上可以修复它。我们修复了一些软件系统,但是剩下的问题就是那些位于硬件/软件边界的问题。而且……这非常令人沮丧,你会想,“其他人是怎么做到的?”你知道,他们已经制造了自己的机器。
乔治:那么,是什么让……(如果你想向观众展示)其中之一呢?
布莱恩:对!这是一个 Oxide sled,看起来不像普通的服务器计算机,对吧?
乔治:不,不,不是这样。它看起来像一把刀片。
布莱恩:它看起来像一把刀片,对吧。事实上,如果你看背面……它甚至看起来更像一把刀片。让我取下那里的 Kapton 胶带…首先,它在电源中盲目配合,我们 – 就像每个大规模运行的人一样 – 我们在机架上下运行直流母线。所以你有一个实际的电源架,其中包含[桥式]整流器,这些整流器然后将你从交流电变为直流电,你在母线上运行直流电,
乔治:直流 48 伏?
布莱恩:呃,是的,54v。这就是每个人大规模运行的方式,带有直流母线。
…您无法从戴尔、惠普、Supermicro 购买基于直流母线的机器、基于直流母线的机架!他们会告诉你没有人想要它。
乔治: [怀疑的声音]嗯……
布莱恩:对,完全正确!
乔治:这个存在的事实告诉我事实并非如此!
BRYAN:确实如此,我很欣赏的一件事是……我们已经积累了我们拥有的服务器架构。
这种传统的[服务器]架构随着时间的推移而不断积累,直到我们重新开始,你才真正意识到有多少东西被它破坏了!您评论的其中一件事是噪音;安静多了。
乔治:是的,而且,它就在镜头外,但现在有一个机架跑到我的右侧……你可以听到它,但这不是微小的噪音。这是一种非常……几乎是风吹过的噪音。这正是它的本质。
布莱恩:好的,你知道什么有趣吗?我们设计这个东西并不是为了听起来舒服,……
乔治:结果就是这样?
布莱恩:结果就是这样。您会欣赏的一件事是,当您看到传统服务器中令人不愉快的声音时……是的,您会听到来自后面那些小风扇的声音;其中一部分也来自电源上的风扇。因为你有那些交流电源……
乔治:这就像 40 毫米风扇。
布莱恩:那些是“小”风扇,还有那些交流电源,你把它们拆开……它们都塞满了。因此,[粉丝]必须克服很高的静压;那些粉丝们辛苦了!而且很热。当然,那个风扇是靠交流电源吹的,所以你有两个。所以现在我们在每台服务器上都有两个交流电源,所有这些电源线……就像,整个事情一团糟。
而且……这只是开始;直流母线对我来说只是一个开始。
乔治:所以,说到……嗯,你说的是基本的——计算机的启动方式,通常是从所谓的基本输入输出系统、BIOS 开始,
BRYAN: BIOS…是的。
GEORGE:现在,在 2000 年代初,它被 UEFI 取代了,
BRYAN: UEFI,是的,安腾送给世界的礼物!
乔治:是的,虽然这对于普通笔记本电脑或台式机来说非常有效,但当你达到这种规模时,
布莱恩:这没有道理。
乔治:为什么呢?
布莱恩:因为它给了你这种你实际上并不想要的选择权。当你拥有这种规模的东西时 – 并且我们与我们的硬件共同设计了我们的主机操作系统 – 你不需要那种启动的可选性……我不需要在这个东西上启动 DOS!
乔治: [笑]你不想在这些机器上运行 DOS?!
BRYAN:好的,这会很有趣,但是……我们实际上不需要这些。但我们在 BIOS 中保留了所有这种古老的选项。 BIOS 的一个大问题是 BIOS 必须引导系统才能引导系统。
所以 BIOS 必须做的事情之一……它需要找到类似的问题,我如何启动这个东西?我实际上需要执行 I/O,从某处提取启动映像。 I/O,正如我们所知,一切都很复杂……你不能只是像“做 I/O”,就像,我们实际上必须启动 PCIE 引擎,你必须启动所有 CPU……所以你正在做所有这些工作来启动系统,然后你找到你想要启动的映像,现在你必须说,“好吧,现在我们必须假装我们从未在这里”。
因此,当它执行第一个操作系统指令时,它会尝试 – 我们称之为“向后设置机器”,使机器*看起来*它尚未启动。但实际上,*整个城市*已经建成,并被犁过;随着时间的推移,操作系统实际上可以看到它的产物。有一种东西叫做系统管理模式,SMM……
乔治: [笑]啊,是的,如果我没记错的话,有些人称之为“环-2”?
BRYAN:没错,环-2,以及那种平台初始化层,可以在SMM 中填充任何它想要的东西。
乔治:我仍然觉得很搞笑——我认为是惠普? – 尝试在 SMM 中放入日历,这就像……你为什么要这样做?! [笑]
BRYAN:他们这样做是因为他们想在不控制系统软件的情况下增加硬件的价值。
因此,做到这一点的方法就是将该软件塞入他们控制的系统软件中,即 SMM,但从实际将这个东西作为服务器运行的角度来看,这对我来说只是一个问题。我不想有环-2。所以对于我们来说,SMM是空的。因为另一件事是…为什么你最终会进入SMM?无论出于什么原因!如果你查看架构手册,它可以出于任何原因进入 SMM,可以在那里停留任何时间长度……它是未指定的,你必须等待。
乔治:那么,你如何解决这个问题呢?
BRYAN:所以对于我们来说,我们确实在 SMM 模式下有一些东西:如果你曾经进入过 SMM 模式,我们会让系统陷入恐慌。因为,无论如何我们都不应该进入SMM。因此,如果我们进入 SMM 模式,我们就会关闭系统并进行故障转储。
如果我们看到这种情况发生,那就太疯狂了,对吧?因为这意味着……但我们还没有看到这种情况发生,我们想这样做是为了确保是否有什么东西错误地进入系统管理模式。
但我们根本没有使用系统管理模式,我们也根本不想有 BIOS。
乔治:是的,那么你是如何解决这个问题的呢?
BRYAN:是的,这很困难,事实上,我们当时并没有真正意识到这一点……AMD 认为我们无法实现这一目标,显然谷歌尝试过这一点但失败了。如果谷歌尝试过某件事但失败了,这对人类来说一定是不可能的?!
乔治: [笑]嗯,通常他们所做的就是成功,然后声称他们失败了,然后就取消了产品。
BRYAN: [笑] 没错,这很艰难,需要我们与 AMD 密切合作。我认为 AMD 并不真正相信我们能够成功,
乔治:这是……我什至不会说这不是一个小问题——这是一个非常复杂的问题。
BRYAN:是的,因为您正在执行平台初始化的*最低*层。
GEORGE:人们忘记了,平台初始化就像,[AMD] 内存训练,调出 PCIE,
布莱恩:没错。
乔治:记住,是什么启动了系统?嗯,很多时候,就像你尝试访问 BMC 一样,BMC 位于 PCIE 总线上,它必须被启动并初始化,所以 BMC 会出现很多复杂的问题,
BRYAN:说到 BMC,我们还把它扔进了海里!
因此,BMC——底板管理控制器——计算机中的计算机……我们觉得 BMC 已经变得太大、太复杂了。从我们的角度来看,BMC 不应该位于 PCIE 上。你真正想要的是环境;你想要电源控制,它需要在自己的网络上,……基本上就是这样。它的工作实际上是为主机 CPU 倒杯咖啡。
乔治:我希望有人递给我一杯咖啡!
BRYAN:所以我们消除了 BMC,并用我们所说的服务处理器(SP)取代了它,有点回到订单模型……所以如果你在这里查看这个计算雪橇,可能很难在那里看到,那就是我们的服务处理器。
这是意法半导体的部件,这个部件有点有趣,因为它不需要散热器,对吧?这是 400 MHz 部件!这比我刚上来时的机器还要快;比我在 Sun Microsystems 拥有的第一个工作站要快得多。
GEORGE:这是什么,比原来的 x86 快 80 倍? [编辑:原来的 8086 是 5 MHz,400 MHz 正好快 80 倍 – 良好的记忆力和快速的算术!]
布莱恩:没错。所以这就像是,当我们实际上拥有足够的计算能力时,为什么我们要采用这种 BMC 并在其上运行这种多用户操作系统。我们做了自己的操作系统,我们也在那里拿了一张白纸。我认为我们正在四处寻找最好的品种,但我们没有找到任何我们完全喜欢的东西。
我们没有发现的一件事是操作系统具有这种多用户传统,它们知道如何加载程序……这绝对是有道理的。操作系统可以加载以前从未见过的程序的想法使其变得有价值、变得可用!
乔治:我的意思是,如果你想一想,每次关闭系统电源并重新启动操作系统时;本质上操作系统是这样的,我是全新的,然后你就以 Steam 为例……它不知道 Steam 是什么。
布莱恩:对,是的,完全正确。
乔治:所以操作系统必须找出程序并启动它。
BRYAN:所以即使在基于微控制器的操作系统中,他们仍然有程序加载的想法。我们想要程序,但我们不想在此加载外国程序;我们想要 – 当它实际启动时,我们希望它能够意识到其中的所有内容。
所以 Hubris 是我们的操作系统 –
乔治:我喜欢傲慢这个名字,然后——
BRYAN:谦虚是为调试者准备的。因此,Cliff Biffle,这位狂妄自大的先驱工程师——这当然是程序员的致命罪过之一——这个想法是对“天啊,你正在开发自己的操作系统,做自己的操作系统的狂妄”的认可!当然,调试器就是谦卑。
有趣的是,这种模型——Cliff 在 OSFC 做了一次精彩的演讲,我的同事 Matt Keeter 也对我们在这个东西上构建的一些调试基础设施做了精彩的演讲——该模型让我们能够将 Hubris 保持为一个非常严格的形象。因此,Hubris 知道它实际启动时将要运行的所有任务;该图像包含所有任务。它不加载外部程序,这正是此类固件所需要的。
乔治:是的,你不希望有人能够——即使你有物理访问权限……我可以改变这一点吗?
BRYAN:很好的问题,所以如果您有物理访问权限,您可以在此处加载新图像。但是,这里有一个信任根,该信任根会知道该图像 – 除非你是 Oxide 这样做 – 它会知道该图像实际上尚未由 Oxide 签名。所以我们实际测试图像。
乔治:现在,你能……假设我可以以某种方式访问一个节点,我只有时间去搞乱一个节点。您在一个大机架中有一个节点,您能否重新…本质上为该微控制器下载一个新的系统映像?
BRYAN:您可以创建自己的图像,但它会知道这不是氧化物图像。
乔治:诺诺,我的意思是,它可以从不同的雪橇上拉出一个图像,一个已知的良好图像吗?
BRYAN:哦哦,是的,不,您需要足够的资源才能真正通过我们的服务处理器网络,因此您必须确定此图像的损坏程度。如果你在这里放一块砖,那就有问题了……
乔治: [笑]
BRYAN:因此,作为一个实际问题,我们对此非常小心,微控制器有 A 面和 B 面,因此,如果您确实在其上放置了不良图像,则可以回滚到另一面,依此类推。这个东西确实是经过设计的——它适合启动和操作计算机的目的。与 BMC 不同,BMC 的真正设计目的是使服务器看起来像桌面。
乔治:是的。我想,好吧,我们在这里跑了很长时间,但是……最后一个问题 – 始终是我的最后一个问题,你最喜欢的奶酪类型是什么?
布莱恩:噢…这是一个很好的问题。我……嗯,上帝,我的意思是我喜欢美味的切达干酪。
乔治:这一点我同意你的观点。
布莱恩:实际上,我也很喜欢瑞士奶酪,不仅是瑞士奶酪,还有瑞士奶酪,所以是很好的埃门塔尔干酪,类似的东西,但我的孩子们不太喜欢。我想我在这方面是相当传统的。
乔治:我百分百同意。非常感谢你,布莱恩,谢谢你的观看!比如,点击订阅,执行所有这些操作,评论……这确实对算法有帮助,我们必须安抚算法之神。
所以,非常感谢!
布莱恩:谢谢!
如果您喜欢这些内容,那么如果您想花一些钱购买薯条和奶酪,请考虑前往Patreon或PayPal 。还可以考虑加入Discord 。
原文: https://chipsandcheese.com/p/an-interview-with-oxides-bryan-cantrill