Cointime

扫码下载App
iOS & Android

想攒一台 Arweave 矿机需要哪些配置?

项目方

作者: Gerry Wang

原文首发于:Arweave Oasis 推特


在以往的文章中,已经与大家分享了非常多关于 @ArweaveEco 核心机制的理论内容。但光说不练,总归是动动嘴皮子而已。本文就来介绍一下如何能够在理论基础上实际动手攒一台能够挖 $AR 的矿机。

原文档链接:

https://docs.arweave.org/developers/mining/mining-hardware

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

Arweave 挖矿主要有两个步骤:

  1. 同步数据(Syncing)与打包数据(Packing)
  2. 挖矿(Mining)

本文会聚焦在挖矿这个阶段所需的矿机组件配置。

Arweave 数据集(称为「Weave」)被整体分割为若干个 3.6TB 的分区(3,600,000,000,000字节)。

截至 2024 年 3 月,分区数量已经达到了 50 个。随着用户数据上传,以及未来的 AO 平台的更多数据,这个数字会随时间推移而增长。

Arweave 协议非常强力地激励矿工去存储整个数据集或多个完整数据集副本(称为“完整副本”)去进行挖矿。

存储了完整副本的矿工可以选择运营一个单一节点,从所有 50 个分区来读取数据。当然他们也可以操作多个节点,每个节点从数据的一个子集中读取数据块,并相互协调以组装完整副本。这称为「协作挖矿」(协作挖矿是 2.7.2 版本新增的功能,可以阅读《Arweave 最新 2.7.2 版本升级了什么?》)。

在所有情况下,挖矿的主要瓶颈通常是硬盘的读取带宽:你需要至少维持每个 3.6TB 分区的平均读取吞吐量为 200 MB/s。

下面我们将概述组建矿机的主要考虑因素,并提供一些配置示例。

矿机的挖矿配置因机而异,我们还不能证明特定组件之间的兼容性。所以在组建你自己的矿机时,需要验证组件之间的兼容性。

挖矿平台(Mining Platform)

目前有两种挖矿配置:

  1. 拥有完整副本的单节点挖矿;
  2. 多节点挖掘各自的部分数据副本,并将其协作组装为一个完整数据副本。

到目前为止,主要的策略是采用多节点/协作挖矿方法。**随着 Weave 的不断发展,我们相信这种策略会越来越受欢迎。

我们现在就以一个节点存储了 16 个分区数据的情况作为案例,其配置表如下:

然后与 3 个或者更多这样的节点协作来覆盖完整数据副本。

Notes:当然,矿工还可以配置存储 16 个以上分区的单个节点,比如说完整 50 个分区的单个节点。但作为只拥有部分副本的矿工也可以加入一个能够与其他矿工协作的矿池来有效地挖掘。

存储带宽(Storage Bandwidth)

矿工将面对的最大瓶颈会是存储读取的带宽。具体来说,每个 3.6TB 分区至少需要保持平均 200MB/s 的从存储硬盘到 CPU 的读取吞吐量。所涉及的主要组成部分有:

  1. 机械硬盘 (HDD)
  2. 主机总线适配器 Host Bus Adapter HBA (可选 SAS 扩展器)
  3. 主板上的 PCIe 插槽

让我们更加深入地讨论下每个组件。

1. 机械硬盘 (HDD)

对机械硬盘 HDD 的主要要求是能够提供每 3.6TB 分区平均 200MB/s 的读取吞吐量。

由于现代 7200rpm 的 HDD 通常额定速度为 200MB/s,最简单以及较推荐的方法是为你计划挖掘的每个分区购买一个 4TB 的 HDD。额外的 0.4TB 用于存储与 Weave 数据相关的元数据信息。

然而,矿工可能会发现不同的配置在不同情况下的会更有利可图,例如:

  1. 在 4 块 3TB HDD 硬盘上存储 3 个分区
  2. 使用 8TB HDD,为每个 HDD 分配 1 个分区,并将额外的空间用于不经常访问的存储。

同样,SATA 和 SAS 硬盘都可以很好地工作,你只需要确保硬盘、线缆和其他组件之间的兼容性。但这些需要对硬件部件之间做足够的测试才可以得出结论。

2. 主机总线适配器(Host Bus Adapter HBA)

大多数主板并没有集成足够的 SATA 连接器来支持 16 个以上的存储磁盘,因此你可能至少需要一个 HBA 卡。市面上有很多不同的 HBA 可供选择。

第一个问题需要了解的是:你将连接多少个磁盘到 HBA?一旦你有了这个数字,您就可以通过以下属性来选择 HBA:

  1. SAS 版本;
  2. SAS 通道数;
  3. 可选项:SAS 扩展器;
  4. PCIe 通道数和 PCIe 版本号
  5. 内部或外部 SAS 端口
  6. 其它参数

让我们用假设每个节点有 16 个 SATA 磁盘的示例来配置它们。

16 块 SATA 硬盘总共需要 16 × 1.2Gbps = 25.6 Gbps 的持续平均读吞吐量。

注意:我们不建议使用 RAID。一般来说,软件和硬件 RAID 都不能抵消成本和复杂性,并且在某些配置下可能会损害性能。

SAS 版本

SAS (串行 SCSI) 是一个数据传输协议. 有 3 个不同速度标准的 SAS

  • SAS-1: 3 Gbps /通道
  • SAS-2: 6 Gbps /通道
  • SAS-3: 12 Gbps /通道

所有标准都是可互操作的,但是当按照不同的 SAS 标准组合线缆和外设时,数据传输吞吐量由最慢的那个组件来决定。例如,如果你将 SAS-1 扩展器连接到 SAS-3 HBA,其吞吐量将是每通道 3 Gbps,而不是每通道 12 Gbps。

因此,我们建议尽早确定一个标准,并选择符合该标准或更高标准的所有组件。

我们建议使用 SAS-2 或 SAS-3,因为这将有助于确保在将来决定添加更多磁盘时,SAS 速度不会成为其瓶颈。

SAS 通道数

HBA 卡的产品名称以数字和字母结尾,如 8i, 16i, 16e。指代的是 HBA 卡支持的 SAS 通道数。

每个 HBA 连接器(通常是 Mini-SAS 连接器,但也有其他端口)有 4 个通道。因此,一个「SAS-2 LSI HBA 16i」 卡有 4 个连接器,每个连接器有 4 个 SAS 通道,总共有 16 个通道。16 个通道 × 6gbps = 96gbps 的总吞吐量。

在不使用 SAS 扩展器的情况下,每张 HBA 卡的通道都可以直接连接单块 HDD 硬盘。因此,如果希望支持 16 块硬盘,则需要一张 16 通道(有时称为 16 端口)的 HBA 卡。每块硬盘需要 1.2 Gbps 的读带宽,这远低于 SAS 的带宽。

建议使用 16i 或 16e HBA 卡连接 16 块硬盘。

你可能已经注意到,每张 HBA 卡通道理论上都有足够的带宽支持多块硬盘。例如,一个 6Gbps 的 SAS-2 通道理论上可以支持 5 块 1.2 Gbps 硬盘。要实现这一点,您需要添加 SAS 扩展器。

SAS 扩展器

使用 SAS 扩展器可以将多块硬盘连接到 HBA 卡上的每个 SAS 通道。在使用 SAS 扩展器时,调整 SAS 版本尤为重要。例如,如果你使用带有 SAS-2 的 HBA 卡的 SAS-1 扩展器,并尝试将 4 块硬盘附加到每个 SAS 通道,则较低的 3 Gbps 的 SAS-1 吞吐量将限制你的读取速率。

使用 SAS 扩展器还需要一个额外的 PCIe 插槽,并且它是一个需要进行故障排除和更换维护的组件。由于这些原因,我们不建议使用 SAS 扩展器,除非你准备好应对额外的复杂性。

PCIe 通道数和 PCIe 版本号

通过 PCIe 插槽从 HBA 卡到主板是组件的最后连接 。

为了确保 PCIe 带宽不会成为整体吞吐量的瓶颈,我们建议使用带有 8 个 3.0 版本 PCIe 通道的适配器。这 8 个 PCIe 3.0 可以提供 62.4 Gbps 的带宽,最多可使用 39 块硬盘。

内部 vs. 外部

关于 HBA 的另一个注意事项:产品编号末尾的字母(即16i vs. 16e)指的是「内部」vs「外部」连接器。16i HBA 卡将 Mini-SAS 连接器暴露在机箱内部,16e HBA卡将 Mini-SAS 连接器暴露在机箱外部。这里我们没有建议,因为这取决于你计划挂载硬盘的位置。

其它参数

由于计算机系统是复杂的,而且组件变化很大,因此系统中可能存在与 HBA 和硬盘不同的其他带宽限制。你可能需要检查系统中任何其他组件的规范,以确保它们不会成为读取带宽的瓶颈。

3. 主板上的 PCIe 插槽

正如上面在 HBA 部分中提到的,我们建议使用 8 通道 PCIe 3.0 或更好的版本来连接 HBA 和任何 SAS 扩展器。在购买主板时,需要记住这一点,以确保它有足够的正确类型的插槽来容纳 HBA 卡和任何 SAS 扩展器。

Note: 同步数据(Syncing)与打包数据(Packing)阶段

前面的硬件配置主要关注挖矿阶段。在开始挖矿之前,你需要下载完整的副本(截至 2024 年 3 月为 177 TB),然后将其打包到你的挖矿地址下。打包是一个 CPU 密集型的加密过程( Weave 数据使用你的挖矿地址进行对称加密)。一般来说,矿工下载数据和打包数据是并行进行的。

此阶段的瓶颈在于网络下载带宽和 CPU 容量。例如,如果下载带宽为 1 gbps,则需要 16 天以上才能下载完整的数据集。下载速度越快,同步数据集的速度就越快。然而,一旦开始挖矿,100 - 200 mbps 的速度就足够了。

下载了一些数据后,还必须将这些数据进行打包处理,将其转变成该挖矿地址下的唯一副本。16 核 Ryzen 9 7950x 每秒可以打包大约 90mb 的数据,这意味着使用单个 16 核 Ryzen 9 7950x 需要大约 22 天的时间来打包完整的数据集。由于这两个阶段(同步和打包)可以并行发生,因此这个具有 1Gbps 下载带宽和 16 核 Ryzen 9 7950x 的示例矿机可以在 22 天内同步和打包完整的数据集。

这一切的可取之处在于,每个副本只需要下载和打包一次数据。一些矿工将租用 CPU 时间和带宽来减少这一阶段的时间。


🔗 关于 PermaDAO:Website | Twitter | Telegram | Discord | MediumYoutube

💡 PermaDAO 社区由 everVision 发起、Forward Research(Arweave 官方) 赞助,是围绕 Arweave 共识存储为主题建立起来的 「共建者社区」。贡献者的所有工作量将成为数据共识。让我们从「数据共识」开始,探索陌生人工作协作的新模式一去中心化自治组织。

「捉虫」计划

若您在本文中发现错误,包括错别字、病句、描述错误、表意不明、描述冗余等问题或其他问题,可以向我们反馈,反馈将获得激励。点击「这里」反馈。

反馈有效期:文章发布时间后30天内。

评论

所有评论

推荐阅读