老爸有了个全新的 NAS

作者:Kyle Rankin

过去,判断一个人是不是 Linux 极客的真正标志,就是他家里堆放的电脑。 否则,如果没有大量的电脑和网络设备,你如何试验联网服务器呢? 如果你在一家大公司担任系统管理员,有时工作福利之一就是你可以优先获得退役的设备。 多年来,通过结合自己购买的一些东西和一些对于生产环境来说太旧的设备,我积累了一个相当大的家庭网络。 我自己家庭网络中一个主要的自豪之处是车库里的 24U 服务器机柜。 它有一个千兆顶部机架管理型交换机,底部有一个 2U UPS,中间是一台 1U HP DL 系列服务器,连接了一个 1U eSATA 磁盘阵列。 上面是一个滑出式 LCD 和键盘,以防我需要直接在服务器上工作。

这台 1U 服务器几乎充当了我所有主要服务器的角色。 它是网关路由器、本地邮件中继和我个人域的辅助 MX、DNS 服务器、DHCP 服务器,并且通过 eSATA 阵列,它成为了我们的家庭 NAS(网络附加存储)阵列,我们将其用于通用文件存储和备份。 一切通常都运行良好,如果你忽略电费和它占用的空间,它在当时确实是一个令人印象深刻的设置。

这里的关键词是“在当时”,因为如今,虚拟化和云计算的结合意味着你更有可能看到一个带着笔记本电脑的 Linux 极客,而不是一堆服务器。 随着计算机变得更快、更小、更便宜,我的 1U 服务器开始显现出它的老态。 考虑到我所有的鸡蛋都放在这个篮子里,我开始思考,如果服务器上昂贵的组件之一发生故障,我该怎么办。 虽然服务器到目前为止一直很稳定,但我意识到它不会永远持续下去,如果它真的坏了,我可以用更换现代硬件的成本来更换,例如,它的一个花哨的串行连接 SCSI 驱动器。 我最终研究了很多不同的选项,在本文中,我将描述我最终如何用比鞋盒还小、功耗低得多且相对便宜的东西,来替换那个 24U 机柜和其中的所有硬件。

这是一个 ARM 的世界

在搜索的开始,我开始走一条更传统的路线,使用一台廉价的 1U 服务器和一块现代主板,但考虑到这台机器要整天运行,我很快开始将主板缩小到小型、低功耗的解决方案。 当我开始考虑一些 micro ATX 解决方案时,我开始思考:我可以使用树莓派吗? 毕竟,最新版本的树莓派有一个相当快的处理器、相当数量的 RAM,而且它很便宜,所以即使一个本身不足以管理我所有的服务,两三个也可能奏效,而且不仅比标准主板更便宜,而且功耗也更低。

如果你多年来一直在阅读我的专栏,你就会知道我对用树莓派解决问题并不陌生——无论是控制啤酒冰箱的温度、创建游戏媒体中心、将 coreboot 刷入 X200 还是控制我的 3D 打印机。 不幸的是,当谈到家庭服务器,特别是 NAS 时,即使是最新的树莓派也有一些限制。

树莓派的第一个限制不是 CPU 或 RAM,而是网卡。 10/100 网卡对于房子周围的一些服务来说足够快,但是如果你现在要设置 NAS,那些大型媒体文件需要千兆网络,而树莓派上的 USB2 端口不足以驱动 USB 千兆网卡。

第二个限制是磁盘 I/O。 即使树莓派有一个千兆网卡,你的存储选项也仅限于你可以放在 microSD 卡或挂在 USB2 端口之一的硬盘驱动器上的东西,而 USB2 对于现代 NAS 来说太慢了。 如果树莓派有 USB3,你可以用 USB3 千兆网卡绕过网络限制,但就目前情况而言,I/O 速度太慢,甚至无法取代旧的 1U 服务器,后者在千兆网络上拥有 eSATA 磁盘。

所以树莓派出局了,但这让我开始思考——我知道还有其他廉价的 ARM 单板计算机,它们有不同的硬件选项。 如果我能找到一个具有体面的网络和存储 I/O 的,也许它可以成为一个竞争者。

我有那种感觉:Banana Pi

当我搜索具有更快 I/O 的树莓派时,我最终去到的第一个地方之一是 Banana Pi。 尽管名称相似,但这个项目与树莓派完全无关,即使该板的尺寸和价格(35 美元)相似,并且它内置了一个双核 1GHz ARM Cortex A-7 处理器和 1GB RAM,因此即使它的规格也与一些较旧的树莓派版本相似。

然而,Banana Pi 和树莓派之间的最大区别在于,它同时标榜千兆网络和 SATA2 端口! 这意味着我可以将旧 NAS 中的一个大型硬盘驱动器挂载到 Banana Pi 上。 这让我开始思考。 我目前的解决方案在软件 RAID5 中有许多大型硬盘驱动器。 虽然任何单个驱动器都不足以容纳我的文件,但我可以购买更新的更大的驱动器之一,而且这仍然比一些传统解决方案便宜。

当然,单个带有单个驱动器的 Banana Pi 无法解决我的容错问题。 如果驱动器发生故障,我就会陷入困境。 鉴于 Banana Pi 非常便宜,我开始将一些云计算方法应用于我的家庭网络。 与其担心单个、可能不稳定的服务器,不如将负载和容错分散到多个 Banana Pi 上怎么样? 在之前的一篇文章中,我介绍了在树莓派上创建 GlusterFS 集群的过程,我意识到 Banana Pi 在这种情况下会更好用。

我仍然不确定它会运作得有多好,但我足够确定,我首先购买了一个 Banana Pi 来测试它的性能,当我对它的性能相当满意时,我购买了第二个,并将它们设置在一个双节点 GlusterFS 集群中。 我使用 GlusterFS 多年了,这些年来我学到的是,设置 GlusterFS 很容易; 困难的是维护——尤其是在处理不可靠网络上的故障时。

我开始意识到,如果我真的想要这个集群可靠,我需要向集群添加第三个 Banana Pi。 除此之外,第三个节点将有助于对抗脑裂——当双节点集群的每个成员都认为自己是主节点时会出现这种情况——并且它将有助于分配负载。 虽然 Banana Pi 有足够的功率从主板上运行 2.5 英寸硬盘驱动器,但我想要使用的 3.5 英寸硬盘驱动器需要单独的电源。 随着我开始将所有 Banana Pi 加起来,这种安排开始看起来有点笨拙,并且我开始担心当一个新大文件上传到服务器并且必须对其进行分片和共享时,整体网络负载会怎样。 我开始怀疑我是否把它弄得太复杂了。

我感觉良好:ODROID XU4

大约在这个时候,我开始研究其他可能提供更多端口或更多资源的小型 ARM 计算机,并且我偶然发现了 ODROID XU4。 过去我曾对 ODROID 系列计算机有所了解,但到目前为止,我还没有真正需要过一台。

ODROID XU4 特别引起了我的注意,因为尽管它比 Banana Pi 贵两到三倍(我找到的最便宜的是 75 美元),但它的 RAM 是原来的两倍(2GB),并且有一个核 2GHz ARM 处理器。 现在,这是一些非常可观的硬件,更有可能处理我以前的四核 AMD 1U 服务器的所有负载。 它还有一个千兆网卡,虽然它没有任何 SATA 端口,但它确实有一些 USB3 端口,它们提供的带宽与 Banana Pi 上的 SATA2 端口和我旧的 1U 服务器上使用的 eSATA 端口相似。

由于 ODROID XU4 使用 USB3 而不是 SATA,我开始为我现有的硬盘驱动器定价独立的 USB3 enclosures。 当我查找 ODROID XU4 的 3D 打印外壳时,我在 Thingiverse 上注意到一个特别的项目,有人设计了一个可以将你的 ODROID XU4 安装在现有 USB3 驱动器 enclosure 上的外壳。 这个外壳是为 Mediasonic ProBox HF2-SU3S2 设计的,这是一个四驱动器 USB3 和 eSATA enclosure,售价约为 100 美元——大约是我要花在几个用于我的 3.5 英寸 SATA 驱动器的独立 USB3 enclosure 上的钱。

对于这个 enclosure 来说,比价格更重要的是,我意识到,由于驱动器将单独呈现给计算机,即使它们是通过一个 USB3 端口连接的,我也可以维护我现有的软件 RAID! 无需经历多层备份和恢复或 Linux 软件 RAID 的玄学——我可以像使用我的 1U eSATA 阵列一样即插即用。 这种迁移的便利性促使我下定决心,所以即使我家里有几个 Banana Pi,我还是决定订购一个 ODROID XU4 和 Mediasonic enclosure。 在等待硬件到货的同时,我最终打印出了特殊的 Mediasonic ODROID XU4 外壳。

回报

如今,大多数 ARM 板的好处是它们都倾向于提供至少标准的 Debian 镜像,所以一旦我的板子到货,就可以轻松设置一个类似于我现有服务器的 Debian 服务器,并将我所有的配置文件移植过来。 我设置大型服务器迁移的那一天实际上非常平静。 因为我的 RAID 配置文件已经复制到新服务器,所以只需将驱动器移动到新阵列并挂载它即可。 在我复制配置文件后,我的其余服务都开箱即用。

到目前为止,八核处理器对于我放在家庭服务器上的所有标准任务来说都绰绰有余,这台机器充当 DNS 服务器、辅助 MX、家庭 NAS 和许多其他服务,而不会出现任何问题。 我确信,如果我做了大量的媒体转码或其他事情,我可能会注意到 ARM 与经典 Intel 处理器相比速度有所下降,但是在使用这个新设置几个月后,对于我所做的一切事情来说,它似乎绰绰有余。

实际上,我在这个新设置中主要怀念的是虚拟化。 我有一个特定的图像库,我用它来与家人分享照片,但它没有跟上时代的步伐,所以我发现自己不得不在旧版本的 Ubuntu Server 的虚拟机中运行它。 此外,我真的想设置一个单独的备份服务器,而不是在同一台主机器上运行我的备份。 当然,我还有那些闲置的 Banana Pi,所以我能够将一个用于我的经典图像库,并将一个 SATA 驱动器连接到另一个,并将其变成一个不错的独立备份服务器,用于备份我的重要文件。

图 1. 我的新服务器机架

然而,这个解决方案的真正回报在于节能。 与我旧的服务器相比,这些 ARM 处理器消耗的功率非常小,而且我认为我可以在一年内仅通过节省的电费来支付整个升级的费用。 此外,我最终卖掉了我的旧服务器机柜,并释放了车库里的很多空间。 这个新解决方案可以放在角落里的一个或两个架子上。 总而言之,能够与时俱进,使用新的、小型的、低功耗的硬件真是太好了。 另外,我知道如果我现在遇到硬件问题,更换硬件的成本很低而且很容易获得。

资源

ODROID XU4 信息页: http://odroid.com/dokuwiki/doku.php?id=en:odroid-xu4

Mediasonic ODROID XU4 3D 打印外壳: https://www.thingiverse.com/thing:1125745

Kyle Rankin 是 Linux Journal 的技术编辑和专栏作家,也是 Purism 的首席安全官。 他是 Linux Hardening in Hostile NetworksDevOps TroubleshootingThe Official Ubuntu Server BookKnoppix HacksKnoppix Pocket ReferenceLinux Multimedia HacksUbuntu Hacks 的作者,也是许多其他 O'Reilly 书籍的撰稿人。 Rankin 经常就安全和开源软件发表演讲,包括在 BsidesLV、O'Reilly Security Conference、OSCON、SCALE、CactusCon、Linux World Expo 和 Penguicon 上。 您可以在 @kylerankin 上关注他。

加载 Disqus 评论