前言
某些价值上可能难以认同,例如Chia官方宣称的本该被销毁的硬盘用于耕种是有意义的。硬盘被销毁了,不再产生电力浪费,而继续运行还将持续,虽然相对于其他方式,已经好很多了。对于Chia,本身至少还是在持续进行中的。本文演示Chia在CentOS 7 Linux 操作系统部署,在类似的操作系统都是可以参考的。
二进制部署
#!/bin/bash
wget https://download.chia.net/latest/x86_64-Redhat-cli -O chia.rpm && yum install chia.rpm -y && rm -f chia.rpm && echo "ok"
解释:&&用于当上一步正常结束,才能运行下一步。因此,只有当正常下载rpm包,正常安装,正常删除下载的文件,才能最终输出 ok 字样。
Chia在Linux的部署一般就是这么简单。在RPM系可以通过上述命令进行,而deb系可以通过apt方式进行。安装结束后,程序本身无需额外的依赖即可直接运行。
#!/bin/bash
if [[ "$HOSTTYPE" =~ ^x86 ]]; then
wget https://download.chia.net/latest/x86_64-Ubuntu-cli -O chia.deb && dpkg -i chia.deb && rm -f chia.deb && echo 'ok'
else
wget https://download.chia.net/latest/ARM64-Ubuntu-cli -O chia.deb && dpkg -i chia.deb && rm -f chia.deb && echo 'ok'
fi
对于debian系环境,例如debian\ubuntu之类的操作系统,Chia官方还提供了arm64运行环境的官方包。
在Bash中,我们可以直接通过$HOSTTYPE方式获取当前操作系统的运行环境。例如在常见的x86操作系统,64位的硬件运行64位系统,输出为“x86_64”。
实际上x86 32位运行环境也没有安装异常的问题。
上述安装流程,除了下载可能需要因为国际网络情况,国内由于没有CDN节点因此下载速度可能受到影响,总体后续的安装速度还是可以的。在atom D410处理器的系统上安装也不过寥寥数秒。
为了部署速度、安全性各方面考虑,建议只通过官方的链接获取最新版本。当获取到最新版本之后,如果本地需要部署比较多的数量,可以自己分发。例如自己本地搭建HTTP静态服务器提供文件分发。
上述均为cli部署方式,部署后没有GUI运行页面,只能通过命令行控制台chia调用。如需页面就将上述的下载链接中cli字样替换为gui,即可安装图形化版本。
图形化版本需要本地安装桌面环境,对系统环境具有一定的依赖。大规模部署管理角度,安装cli即可。
如果需要在非官方支持的运行环境运行,可以进行手工部署,也可以获取上述二进制包的文件,解压后直接提取二进制文件使用。尝试了一些比较特殊的环境,例如aarch64环境的CentOS 7 ,使用arm64 deb系安装包提取的chia文件,也没有出现异常问题。而正常的类似armbian,使用deb安装方式就更没有问题了。
使用
安装完成后,chia version命令后,就可以查看部署的版本。目前部署的是1.8.2版本,返回的也就是这个值。
首次运行,需要chia init命令。通过这个方式在当前用户初始化chia软件环境。可以在root用户下进行,也可以用普通用户进行这个过程。
如果是作为收割机使用,只需要传输ca文件夹以及修改/root/.chia/mainnet/config/config.yaml文件相关的信息,就可以正常开始运行了。
如果是原版图,只需要修改文件中的部分内容,然后就可以开始运行了。
- 替换ca文件夹为运行全节点的计算机的ca文件夹的内容
- 修改host: self_hostname,将self_hostname部分修改为对应的IP地址。
- 可以为域名
- 如果有必要,可以修改下方的port服务器端口,全节点是通过互联网端口映射被收割机访问
- 本身有安全措施,可以通过互联网直接传输,但是建议仍然虚拟内网的方式
- 一台计算机可以运行多个收割,8448端口需要错开
- 修改plot_directories:,将[]去掉后回车,增加路径,一行一条,或者chia plots add的方式增加路径
- 如果文件在提供的文件夹的子目录中,需要将recursive_plot_scan: False修改为true
- 例如可以将硬盘挂载至/data/sdxxx,只添加/data目录,即可自动处理全部挂载至/data的硬盘文件了。
- 如果计算机性能比较强劲,例如X86环境,配合直通卡或者直接连接的少量硬盘,可以适当增加num_threads,增加后能够有效的加快速度。反之如果性能较差例如RK3399,通过USB HUB连接了2PB的硬盘,正常参数可能导致扫盘响应较慢,实际上也不影响有效值。
- 其他优化可以看描述。实际生产环境中我还是修改了不少地方才能实现100PB级别2个月平均爆块率相当于全网平均130%的。部分玩家每台机器都直接使用Windows全节点进行收割,挂载方式也不合理,导致硬盘出现休眠等问题,产出效率问题很明显就与这些有关。
harvester:
# The harvester server (if run) will run on this port
port: 8448
farmer_peer:
host: *self_hostname
port: 8447
# If True, starts an RPC server at the following port
start_rpc_server: True
rpc_port: 8560
num_threads: 30
plots_refresh_parameter:
interval_seconds: 120 # The interval in seconds to refresh the plot file manager
retry_invalid_seconds: 1200 # How long to wait before re-trying plots which failed to load
batch_size: 300 # How many plot files the harvester processes before it waits batch_sleep_milliseconds
batch_sleep_milliseconds: 1 # Milliseconds the harvester sleeps between batch processing
# If True use parallel reads in chiapos
parallel_read: True
logging: *logging
network_overrides: *network_overrides
selected_network: *selected_network
# Plots are searched for in the following directories
plot_directories: []
recursive_plot_scan: False # If True the harvester scans plots recursively in the provided directories.
ssl:
private_crt: "config/ssl/harvester/private_harvester.crt"
private_key: "config/ssl/harvester/private_harvester.key"
private_ssl_ca:
crt: "config/ssl/ca/private_ca.crt"
key: "config/ssl/ca/private_ca.key"
chia_ssl_ca:
crt: "config/ssl/ca/chia_ca.crt"
key: "config/ssl/ca/chia_ca.key"