2021-08-17 23:09:19 版本 : FileCoin 挖矿教程(五)之一:设置高性能矿工程
作者: 文艺范儿 于 2021年08月17日 发布在分类 / 挖矿 / wd 下,并于 2021年08月17日 编辑
 历史版本

修改日期 修改人 备注
2021-08-17 23:26:39[当前版本] 文艺范儿 格式调整
2021-08-17 23:25:09 文艺范儿 格式调整
2021-08-17 23:24:46 文艺范儿 格式调整
2021-08-17 23:23:30 文艺范儿 格式调整

警告
仅当您完全满足要在其中进行挖掘的网络的最低硬件要求时,才能进行挖掘。 由于采矿过程在多个方面对机器要求很高,并且依赖于精确的配置,因此强烈建议您着手使用Linux系统的管理经验。

先决条件

在尝试遵循本指南之前:

  • 确保满足最低硬件要求。
  • 确保已按照说明安装了Lotus套件,并确保已使用Native Filecoin FFI构建了Lotus。安装完成后,将安装Lotus,Lotus-miner和Lotus-worker。
  • 确保您的Lotus Node正在运行,否则矿工将无法与其通信并且无法正常工作。
  • 如果您在中国,在构建和运行Lotus时可能遭受的一些带宽问题或速度缓慢。为中国用户提供了一些技巧,以解决他们在构建和运行Lotus时可能遭受的一些带宽问题或速度缓慢。

首次启动时加快证明参数的下载
运行Lotus需要下载链的证明参数,这些参数是大文件,默认情况下托管在中国境外,在中国下载非常慢。 为了解决这个问题,用户在运行Lotus,Lotus-miner和Lotus-worker时,应设置以下环境变量:

export IPFS_GATEWAY=https://proof-parameters.s3.cn-south-1.jdcloud-oss.com/ipfs/

   
  • 1

在构建过程中加快Go模块的下载
构建Lotus需要下载一些Go模块。这些通常托管在Github上,而Github来自中国的带宽非常低。要解决此问题,请在运行Lotus之前通过设置以下变量来使用本地代理:

export GOPROXY=https://goproxy.cn

   
  • 1

安装golang

参考这里:
https://golang.google.cn/doc/install

安装rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 

   
  • 1

安装其他

apt-get install opencl-headers

   
  • 1
wget https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz && tar -zxvf pkg-config-0.29.2.tar.gz && cd pkg-config-0.29.2/ && ./configure && make && make check && sudo make install 

   
  • 1

必要时,再安装:

apt-get install ocl-icd-libopencl1 apt-get install libhwloc-dev

   
  • 1
  • 2
sudo ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/libOpenCL.so

   
  • 1

创建并安装lotus

git clone https://github.com/filecoin-project/lotus.git cd lotus/

   
  • 1
  • 2
# 加入主网 make clean all # 或者加入测试网,或者开发网: make clean calibnet # Calibration 最小 32GiB 扇区 make clean nerpanet # Nerpa 最小 512MiB 扇区 # 最后执行安装步骤 sudo make install 

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在开始挖矿之前

性能调整

建议在您的环境中设置以下环境变量,以便在每次启动任何Lotus应用程序时(即启动守护程序时)进行定义。

# See https://github.com/filecoin-project/bellman export BELLMAN_CPU_UTILIZATION=0.875 

   
  • 1
  • 2

BELLMAN_CPU_UTILIZATION是一个可选变量,用于指定多乘幂计算的一部分,以将其移至与GPU并行的CPU中。 这是为了使所有硬件都处于占用状态。 间隔必须为0到1之间的数字。0.875值是一个很好的起点,但是如果需要最佳设置,则应该进一步调整一下。 不同的硬件设置最佳值。 忽略此环境变量也可能是最佳选择。

# See https://github.com/filecoin-project/rust-fil-proofs/ export FIL_PROOFS_MAXIMIZE_CACHING=1 # 以内存换取速度。(1x sector-size of RAM - 32 GB). export FIL_PROOFS_USE_GPU_COLUMN_BUILDER=1 # precommit2 GPU 加速 export FIL_PROOFS_USE_GPU_TREE_BUILDER=1 # 以下内容提高了 PreCommit1 的速度,代价是使用完整的 CPU 多核而不是单个内核。应该与 CPU 关联设置一起使用! export FIL_PROOFS_USE_MULTICORE_SDR=1 

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在不同的机器节点上运行Lotus挖矿程序

如果您在不同的机器节点上运行Lotus挖矿,请按如下进行设置:

export FULLNODE_API_INFO=<api_token>:/ip4/<lotus_daemon_ip>/tcp/<lotus_daemon_port>/http

   
  • 1

并确保ListenAddress已启用远程访问。有关如何获取令牌的说明

同样,Lotus-miner(作为Lotus Miner守护程序的客户端应用程序)可以通过设置,与远程Miner进行通信:

export MINER_API_INFO="TOKEN:/ip4/<IP>/tcp/<PORT>/http" 

   
  • 1

添加必要的交换区(swap)

如果只有128GiB的RAM,则需要确保系统至少提供额外的256GiB的非常快速的交换(最好是NVMe SSD),否则将无法封装扇区:

sudo fallocate -l 256G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 显示当前交换空间并记下当前最高优先级 swapon --show # 将以下行附加到 /etc/fstab(确保最高优先级),然后重新启动 # /swapfile swap swap pri=50 0 0 sudo reboot # 检查 256GB 交换文件是否自动挂载并具有最高优先级 swapon --show

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

为矿工机中创建钱包

您至少需要一个BLS钱包(用于主网的f3 …)才能进行挖掘。我们建议尽管使所有者和矿工地址分开使用。因此,至少创建两个钱包(除非您已经有一些钱包):

# A new BLS address to use as owner address: lotus wallet new bls
t3... # A new BLS address to use as worker address: lotus wallet new bls
t3...

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

接下来,确保将一些资金发送到矿工机的地址,以便完成矿工设置。

有关矿工可以使用的不同钱包以及如何配置它们的更多信息,请阅读矿工地址指南

提示:安全地备份你的钱包

查看钱包地址

$ lotus wallet list
Address                                                                                 Balance  Nonce  Default  
t3wr3bezggxg5hydwjknvojfyqr6dgeo4lnxxrmt36kum4dshlhf4usn7wwjoyiopfqyr5jogjxjx7uxl3ie4a 0 FIL 0 X

   
  • 1
  • 2
  • 3

下载参数

从矿工机开始,它需要读取和验证FileCoin的证明参数。 这些可以预先下载(推荐),或者校正过程。 验证参数由多个文件组成,在32GiB扇区的情况下,总共超过100GiB。

我们建议设置一个客户本地存储参数,保证一级缓存能够在第一次运行的时候被创建:

export FIL_PROOFS_PARAMETER_CACHE=/path/to/folder/in/fast/disk export FIL_PROOFS_PARENT_CACHE=/path/to/folder/in/fast/disk2

   
  • 1
  • 2

每次重启的时候,都会开始读取参数,因此使用具有非常快速的访问的磁盘,如NVME驱动器,将加快矿工机器的启动速度。 当未设置上述变量时,默认情况下,机器在默认情况下,会停止运行到 / var / tmp /,这通常缺少足够的空间。

要下载参数,请执行以下操作:

# Use sectors supported by the Filecoin network that the miner will join and use. # lotus-miner fetch-params <sector-size> lotus-miner fetch-params 32GiB
lotus-miner fetch-params 64GiB

   
  • 1
  • 2
  • 3
  • 4

您可以在网络仪表板中验证网络的扇区大小。 FIL_PROOFS _ * _ CACHE变量不仅应在下载时保持定义,而且在启动Lotus Miner(或工作程序)时也应保持定义。

设置各类目录地址与其他配置

总结以上所有内容,请确保:
矿工地址有一些资金,以便可以初始化矿工。
定义了以下环境变量,这些变量可用于任何Lotus Miner运行:

export LOTUS_MINER_PATH=/path/to/miner/config/storage export LOTUS_PATH=/path/to/lotus/node/folder # 当你使用了本地节点时需要进行设置. export BELLMAN_CPU_UTILIZATION=0.875 # 这个值的设置取决于你的硬件 export FIL_PROOFS_MAXIMIZE_CACHING=1 export FIL_PROOFS_USE_GPU_COLUMN_BUILDER=1 # 有GPU时,设为1 export FIL_PROOFS_USE_GPU_TREE_BUILDER=1 # 有GPU时,设为1 export FIL_PROOFS_PARAMETER_CACHE=/fast/disk/folder # 高速缓存,大于 100GiB! export FIL_PROOFS_PARENT_CACHE=/fast/disk/folder2 # 缓存,大于 50GiB! export TMPDIR=/fast/disk/folder3 # 密封时使用 

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

参数已预取到上面指定的缓存文件夹中
系统具有足够的交换区(swap),并且处于活动状态

lotus的启动参数

$ lotus --help
NAME:
   lotus - Filecoin decentralized storage network client # Filecoin去中心化存储网络客户端 USAGE:
   lotus [global options] command [command options] [arguments...] VERSION: 1.11.1-dev+git.a577bf3

COMMANDS:
   daemon   Start a lotus daemon process # 启动一个 Lotus 守护进程 backup   Create node metadata backup # 创建节点元数据备份 version  Print version # 打印版本号 help, h  Shows a list of commands or help for one command # 显示命令列表或一个命令的帮助 BASIC:
     send     Send funds between accounts # 在帐户之间发送资金 wallet   Manage wallet # 管理钱包 client   Make deals, store data, retrieve data # 进行交易、存储数据、检索数据 msig     Interact with a multisig wallet # 与多重签名钱包互动 filplus  Interact with the verified registry actor used by Filplus
     paych    Manage payment channels # 管理支付渠道 DEVELOPER:
     auth          Manage RPC permissions # 管理 RPC 权限 mpool         Manage message pool # 管理消息池 state         Interact with and query filecoin chain state # 与 Filecoin 链状态交互和查询 chain         Interact with filecoin blockchain # 与 Filecoin 区块链交互 log           Manage logging # 管理日志 wait-api      Wait for lotus api to come online # 等待lotus api上线 fetch-params  Fetch proving parameters # 获取证明参数 NETWORK:
     net   Manage P2P Network # 管理p2p网络 sync Inspect or interact with the chain syncer # 检查或与链同步器交互 STATUS:
     status  Check node status # 检查节点状态 GLOBAL OPTIONS:
   --interactive  setting to false will disable interactive functionality of commands (default: true) --force-send if true, will ignore pre-send checks (default: false) --help, -h     show help (default: false) --version, -v  print the version (default: false) 

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

lotus-miner的启动参数

NAME:
   lotus-miner - Filecoin decentralized storage network miner

USAGE:
   lotus-miner [global options] command [command options] [arguments...] VERSION: 1.11.1-dev+git.a577bf3

COMMANDS:
   init     Initialize a lotus miner repo # 初始化一个 Lotus 矿工 repo run      Start a lotus miner process # 启动一个 Lotus 矿工进程 stop     Stop a running lotus miner # 停止正在运行的 lotus 矿工程序 config   Output default configuration # 打印默认的配置信息 backup   Create node metadata backup # 创建节点元数据备份 version  Print version # 打印版本号 help, h  Shows a list of commands or help for one command CHAIN:
     actor  manipulate the miner actor # 矿工操作 info   Print miner info # 打印矿工信息 DEVELOPER:
     auth          Manage RPC permissions # 管理 RPC 权限 log           Manage logging # 管理日志 wait-api      Wait for lotus api to come online
     fetch-params  Fetch proving parameters # 获取证明参数 MARKET:
     storage-deals    Manage storage deals and related configuration # 管理存储交易和相关配置 retrieval-deals  Manage retrieval deals and related configuration # 管理检索交易和相关配置 data-transfers   Manage data transfers # 管理数据传输 NETWORK:
     net  Manage P2P Network # 管理p2p网络 RETRIEVAL:
     pieces  interact with the piecestore
   STORAGE:
     sectors  interact with sector store # 与扇区存储交互 proving  View proving information # 查看证明信息 storage  manage sector storage # 管理扇区存储 sealing  interact with sealing pipeline # 与密封管道互动 GLOBAL OPTIONS:
   --actor value, -a value                  specify other actor to check state for (read only) # 指定其他参与者检查状态 --color (default: false) --miner-repo value, --storagerepo value  Specify miner repo path. flag(storagerepo) and env(LOTUS_STORAGE_PATH) are DEPRECATION, will REMOVE SOON (default: "~/.lotusminer") [$LOTUS_MINER_PATH, $LOTUS_STORAGE_PATH] --help, -h                               show help (default: false) --version, -v                            print the version (default: false) 

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

矿工初始化

在首次运行矿机之前,请先执行以下操作:

lotus-miner init --owner=<address> --worker=<address> --no-local-storage

   
  • 1
  • 使用--no-local-storage标志,以便稍后我们可以配置存储的特定位置。这是可选的,但建议使用。
  • Lotus Miner配置文件夹在〜/ .lotusminer /或$ LOTUS_MINER_PATH(如果设置)中创建。
  • 所有者和工人地址之间的差异在矿工地址指南中解释。 如上所述,我们建议使用两个单独的地址。 如果未提供--Worker标志,则将使用所有者地址。 可以在矿工运行后稍后添加控制地址。

与矿工的连接

在启动矿工之前,对其进行配置非常重要,以便可以从Filecoin网络中的任何对等方访问它。为此,您将需要一个稳定的公共IP,并按如下所示编辑~/.lotusminer/ / config.toml:

... [Libp2p] ListenAddresses = ["/ip4/0.0.0.0/tcp/24001"] # choose a fixed port AnnounceAddresses = ["/ip4/<YOUR_PUBLIC_IP_ADDRESS>/tcp/24001"] # important! ...

   
  • 1
  • 2
  • 3
  • 4
  • 5

一旦启动矿工,请确保可以连接到其公共IP /端口

启动矿工

现在您可以启动Lotus挖矿机了:

lotus-miner run

   
  • 1

或者,如果您使用的是systemd服务文件:

systemctl start lotus-miner

   
  • 1

警告:在确认矿工不仅正在运行而且在其公共IP地址上可以访问之前,才能从前面步骤继续进行操作

发布矿工地址

一旦矿工机启动并运行,就在链上发布您的矿工机地址(您在上面配置的),以便其他节点可以直接与之对话并进行交易:

lotus-miner actor set-addrs /ip4/<YOUR_PUBLIC_IP_ADDRESS>/tcp/24001

   
  • 1

下一步

现在,您的矿工应该已经初步设置并正在运行,但是还有一些建议的任务可以在黄金时间准备好:

设置您的自定义存储布局(如果使用--no-local-storage,则为必需)。
编辑矿工配置设置以符合您的要求
了解什么是关闭/重启矿机的正确时机
使用矿工封装某个扇区的时间来更新ExpectedSealDuration:通过运行基准测试确认一个扇区并记下时间来发现它。
配置其他密封工作机,以提高矿工密封部门的能力。
为WindowPost消息配置一个单独的地址

历史版本-目录  [回到顶端]
    文艺知识分享平台 -V 4.9.5 -wcp
    京公网安备100012199188号 京ICP备2021030911号