第 7 章 SysDB 系统数据库
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
SysDB 是 Arista 可扩展操作系统 (EOS) 最令人印象深刻的功能之一,它使 Arista 在竞争中脱颖而出。简单地说,SysDB 是交换机上的系统数据库,保存所有状态、变量和其他重要信息,以便进程访问。听起来并不惊天动地,不是吗?请继续阅读。
传统上,交换机(以及其他所有网络设备)都是使用单体代码构建的。当然,当我读到monolithic 这个词时,我会想到 Stanley Kubrick 的杰作《2001:太空漫游》(2001: A Space Odyssey)中围着巨石跳舞的猿猴。除了 "人性的火花 "这一点,这个比喻其实也不错。
Network+ 设备已经存在了几十年,其中许多都是非常成熟的产品,运行着非常成熟的代码。高管们喜欢用 "成熟"这个词来形容那些已经存在了足够长的时间,可以解决所有问题的产品。开发人员并不总是同意这个词的用法。
问题是,其中一些代码也已经存在了几十年。按照我们的单体类比,想象一下 2001 年首次推向市场的交换机。现在再想象一下,12 年后这台交换机仍在生产,软件也已经到了第 13 版左右,只不过我们不叫它第 13 版,而是叫它其他的名字,比如第 15 版。要知道,在许多文化中,数字 13 是不吉利的,尤其是那些崇拜单片代码的文化。
总之,想象一下,最初为交换机编写的软件占用了大约 10 MB 的磁盘空间。现在想象一下,在接下来的 12 年里,每年都有越来越多的功能被添加到代码中。想象一下,交换机的功能变得如此之多,以至于在这 12 年之后,代码消耗的磁盘空间增加到了 100 MB。
技术进步的速度令人震惊,今天作为标准产品的预期功能在 12 年前可能还无法想象。新硬件变得越来越复杂,这就需要更复杂的代码,而所有这些代码都要添加到原始代码库中。如果最初的编码人员没有预料到 12 年后的发展,他们可能就不会让原始代码易于扩展。也许,在过去的 12 年里,内存架构发生了变化。如果你和我一样老,你可能还记得 640 K 内存超出计算机所需内存的时代。如今,我的 Mac Pro 拥有 128 GB 内存。世事无常。我无法想象今天还能运行 DOS 机器。截至本文撰写之时,Windows XP 在 12 年前还风靡一时。你想要基于 Windows XP 的交换机吗?
这还不是全部。即使代码写得很好,而且多年来添加的例程也写得很好,但事实仍然是一大段代码被塞进了内存。如果你加载了一个支持生成树协议(STP)的映像,但你并不需要 STP,那么 STP 进程仍会留在内存中,占用空间。该进程不仅会占用空间,而且如果这一段代码崩溃了会怎样?由于该代码只是一大堆单片代码中的一个例程,整个交换机都会崩溃。真扫兴。
那么,一定有更好的办法,对吗?当然有!Linux 改变了服务器领域的一切,在 Network+ 领域也是如此。在 Linux 中,交换机运行一个内核和一个进程管理器。进程管理器负责管理每个进程(这也是它名字的由来),并在进程崩溃时重新启动它们。在这种模式下,如果 STP 崩溃,也不会连累交换机的其他部分。还是会这样?
为了正确保护 Linux 系统免受行为不端进程的影响,每个进程都应被写入使用自己的用户虚拟地址空间。在不涉及服务器架构讨论的情况下,请理解这种内存是受保护的空间,只有拥有它的进程才能寻址。如果使用这种模式编写,一旦 STP 崩溃,只有 STP 受到影响;交换机的其他部分将继续运行,不受影响。 ...