所谓的经验,不是简单的将上一次成功的过程复制一遍,而是在暂时看不到前途的时候,知道该坚持还是退回来。

本文是一份 Lotus 新手运维手册,会持续更新,老司机请不要在此停留。

常用环境变量

Lotus 数据目录: LOTUS_PATH

export LOTUS_PATH=/gamma/lotus/data

Miner 数据目录:LOTUS_STORAGE_PATH

export LOTUS_STORAGE_PATH=/gamma/lotus-storage-miner/data

IPFS 网关地址: IPFS_GATEWAY, 用于下载复制证明参数加速

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

临时文件夹路径: TMPDIR

export TMPDIR=/cache/tmp

proof 证明参数路径: FIL_PROOFS_PARAMETER_CACHE

export FIL_PROOFS_PARAMETER_CACHE=/gamma/filecoin-proof-parameters

PreCommit1 proof parents 缓存路径(可以减少 56G 内存)

export FIL_PROOFS_PARENT_CACHE=/gamma/filecoin-parents

最大化内存参数: FIL_PROOFS_MAXIMIZE_CACHING

export FIL_PROOFS_MAXIMIZE_CACHING=1

使用 GPU 进行 Precommit2 加速: FIL_PROOFS_USE_GPU_COLUMN_BUILDER

export FIL_PROOFS_USE_GPU_COLUMN_BUILDER=1
启用 PreCommit1 SDR 多核加速(为每个 PC1 任务绑定共享一组 L3 缓存的一组 CPU),能大大提高 PC1 的密封效率, 我本人使用 3970x 实测结果为 2h17min,并行三个扇区。不过目前官方提示该项加速还不是很稳定。 我本人测试的结果也是这样,依赖于绑核的稳定性,有的时候会绑错,尤其是对于多路 CPU。
FIL_PROOFS_USE_MULTICORE_SDR=1

设置 Rust 日志等级:

# optional: Trace,Info,Warn,Debug,Error
export RUST_LOG=Debug

开启详细的报错日志追踪:

RUST_BACKTRACE=1

启用源码编译底层库:

export FFI_BUILD_FROM_SOURCE=1

启动小扇区支持:(一般用于本地测试网络)

export FIL_USE_SMALL_SECTORS=true

设置自定义 GPU 参数:

export BELLMAN_CUSTOM_GPU="GeForce RTX 2070 SUPER:2560"

lotus daemon 操作

  1. 查看节点信息

     # 查看本节点所监听的地址:
     lotus net listen
        
     /ip4/127.0.0.1/tcp/37103/p2p/12D3KooWNvqwb1gbgMNLFXtMAXP3ZwgTVgaLXbDUNqpWDQuKd1sh
     /ip4/192.168.1.101/tcp/37103/p2p/12D3KooWNvqwb1gbgMNLFXtMAXP3ZwgTVgaLXbDUNqpWDQuKd1sh
     /ip6/::1/tcp/46335/p2p/12D3KooWNvqwb1gbgMNLFXtMAXP3ZwgTVgaLXbDUNqpWDQuKd1sh
     # 查看连接的节点列表:
     lotus net peers
    

    手动连接其他节点, 这个在你同步的时候发现自动同步失败,无法获取可用节点的时候特别有用:

     # usage
     lotus net connect <PEER_ADDR>
     # e.g
     lotus net connect /ip4/119.33.53.66/tcp/37103/p2p/12D3KooWNvqwb1gbgMNLFXtMAXP3ZwgTVgaLXbDUNqpWDQuKd1sh
    

    这个在你同步的时候无法正常同步链上数据时候特别有用, 这时可以试下在启动 daemon 的时候禁用自动连接 peers ,然后手动连接到一个正常节点,例如:

     lotus daemon --bootstrap=false
     lotus net connect <PEER_ADDR>
    

    <PEER_ADDR> 可以是任意一个能够正常同步数据的节点地址。

  2. 查看链同步状态

     lotus sync status
     # 等待链同步完成
     lotus sync wait  # 该命令会实时显示同步状态以及待同步区块高度
    

    如果出现 Error 则说明链同步有问题,如果状态是 completed,则说明链同步已经完成,可以进行其他操作了。 如果同步出错的话,你可以手动强制将你的本地链头区块指向某个高度:

     # usage
     lotus chain sethead --epoch=<height>
     # e.g
     lotus chain sethead --epoch=3960
    
  3. 修改 mpool 配置:

     # usage
     lotus mpool config <val>
     # e.g
     lotus mpool config '{"PriorityAddrs":[],"SizeLimitHigh":30000,"SizeLimitLow":20000,"ReplaceByFeeRatio":1.25,"PruneCooldown":60000000000,"GasLimitOverestimation":1.5}'
    

    这个配置非常有用,你可以用来做一些高级的操作。比如,如果你想设置你的节点为某个钱包发送的交易优先打包,你可以这样设置:

     # usage
     lotus mpool config '{"PriorityAddrs":[<address>],"SizeLimitHigh":30000,"SizeLimitLow":20000,"ReplaceByFeeRatio":1.25,"PruneCooldown":60000000000,"GasLimitOverestimation":1.5}'
     # e.g
     lotus mpool config '{"PriorityAddrs":["t3r3afkf3ooeukknwx45g4t475pduslpkov32nvodv6xzbuliccka7qsax32m34yfbd7q3fwxapfb2isea6dnq"],"SizeLimitHigh":30000,"SizeLimitLow":20000,"ReplaceByFeeRatio":1.25,"PruneCooldown":60000000000,"GasLimitOverestimation":1.5}'
    
  4. 疏通消息,加快上链

    你可以使用下面的命令自动计算并增加 gas 费用

     # usage
     lotus mpool replace  --auto <address> <nonce>
     # e.g
     lotus mpool replace  --auto t3xxxxx 1234
    
    注意:这个命令最好手动调用,如果自动调用的话,最后的结果可能让你支付超高额度的 Gas 费用,有矿工为此付出了惨烈的代价,支付了一笔 700 多 FIL 的手续费。

    大多数情况下我们都是手动梳通消息:

     lotus mpool replace --gas-feecap=<GFC> --gas-premium=<GP> --gas-limit=<GL> <CID>
    

    具体操作如下:

    1. 首先在区块浏览器找到当前最新的一个区块的 ProveSector 类型的消息(或者跟你要梳通的消息的同类型的消息),记录他们的 Gas Fee Cap($gasFeeCap)Gas Used($gasUsed)
    2. 找到当前的要替换消息的 Gas Premium($oldGasPremium)。
    3. 计算上 replace 消息中的变量的值并替换:

       GFC=$gasFeeCap
       GP=$oldGasPremium * 1.252
       GL=$gasUsed * 1.1
       # CID 表示要替换的消息的 cid。
      
  5. 导入,导出当前链快照:

    通常如果你不是做钱包或者交易所的话,你并不需要全节点,你可以直接从官方提供的快照来同步,或者从其他节点导出快照,再导入到当前 daemon. 这样可以节省不少同步的时间。 可以使用以下方式创建完整的 CAR 快照:

     # usage 
     lotus chain export <filename> 
     # e.g
     lotus chain export lotus-chain-2020-12-02.car
    

    通过上面的命令你可以导出一个完整的 lotus chain 快照。不过这个快照比较大,可能超过 100 GB。 所以更常用的方式是使用下面的命令导出一个阉割版的快照, 就是只导出最新的区块,跳过以前的旧消息。

     # usage
     lotus chain export --skip-old-msgs --recent-stateroots=<stateroots-num> <filename>
     # e.g
     lotus chain export --skip-old-msgs --recent-stateroots=2000 lotus-chain-2020-12-02.car
    

    --recent-stateroots 参数指定要导出的状态根数。 --skip-old-msgs 参数表示只导出那些 stateroots 直接引用的区块。 然后在首次启动 daemon 的时候执行导入快照。(只是第一次需要导入,后面再启动 daemon 就不需要了)。

     # Without verification
     lotus daemon --import-snapshot <filename>
     # With verification
     lotus daemon --import-chain <filename>
    

    如果你希望在快照导入之后就立即退出守护进程,(例如在docker环境中很有用),请在命令中添加 --halt-after-import 标志:

     lotus daemon --import-snapshot --halt-after-import <filename>
    

钱包操作

# 创建一个 BLS 钱包
lotus wallet new bls
# 查看钱包列表
lotus wallet list 
# 查看钱包余额
lotus wallet balance

导出钱包私钥到文件

# usage
lotus wallet export wallet > <file>
# e.g
lotus wallet export wallet > wallet.key

导入钱包私钥到节点

# usage
lotus wallet import <file>
# e.g
lotus wallet import wallet.key

手动下载 proof 参数

# 首先记得开启京东云的代理
export IPFS_GATEWAY="https://proof-parameters.s3.cn-south-1.jdcloud-oss.com/ipfs/"
# usage 
lotus fetch-params --proving-params <sector_size>
# e.g    
lotus fetch-params --proving-params 32GiB  

lotus-miner 操作

  1. 查看矿工当前信息,包括算算力,山区密封情况

     lotus-storage-miner info
     Miner: t0109653
     Sector Size: 32 GiB
     Byte Power:   1.812 TiB / 4.888 PiB (0.0362%)
     Actual Power: 1.81 Ti / 4.73 Pi (0.0374%)
     	Committed: 1.844 TiB
     	Proving: 1.812 TiB (32 GiB Faulty, 1.69%)
     Expected block win rate: 6.4627/day (every 3h42m48s)
        
     Miner Balance: 128.044817705754006786
     	PreCommit:   0
     	Locked:      128.043278061722026245
     	Available:   0.001539644031980541
     Worker Balance: 49.947643260499744805
     Market (Escrow):  0.000000000000004064
     Market (Locked):  0.000000000000004064
        
     Sectors:
     	Total: 72
     	Proving: 58
     	PreCommit1: 12
     	PreCommit2: 1
     	SealPreCommit1Failed: 1
    

    这是我们自己测试矿工的 info,目前已经跑了 2 天了。这里大概解释一下各项数据的意思:

    • Byte Power: 已完成 Proving 的算力
    • Actual Power: 实际有效算力
    • Committed: 已完成 Commiting 的算力
    • 32 GiB Faulty: 被标记为 Faulty 扇区总大小,也就是无效算力。
    • Expected block win rate: 预期竞争出块胜出的概率,6.4627/day 标识平均每天可以出 6 个块。
    • Miner Balance: 当前挖矿收益(广大矿工最关注的)
    • Locked: 挖矿收益锁仓的份额(前期的收益几乎全部锁仓了)

    其他都是大家一眼都能看懂的,这里就不解释了。

  2. 质押扇区

     # 质押一个由随机数据填充的扇区(垃圾数据)
     lotus-miner sectors pledge
    
  3. 查看扇区状态

     # 列举所有扇区信息:
     lotus-miner sectors list
     # 查看某个扇区的当前状态
     lotus-miner sectors status <sector_id>
     # e.g
     lotus-miner sectors status 1
     # 查看 sector 详细日志
     lotus-miner sectors status --log 1
    
  4. 修改扇区的状态

     # usage 
     lotus-miner sectors update-state --really-do-it=true <sector_id> <state>
     # e.g
     lotus-miner sectors update-state --really-do-it=true 0 FailedUnrecoverable
    
    警告: update-state 需要谨慎操作,因为操作不当可能会发生一些难以预料的奇怪的错误。
  5. 删除扇区

     # usage
     lotus-miner sectors remove --really-do-it=true <sector_id>
     # e.g
     lotus-miner sectors remove --really-do-it=true 1
    
    警告: 扇区一旦删除将不可恢复,请谨慎操作,以免误删。
  6. 设置订单价格:

     # usage
     lotus-miner deals set-ask --price=<val> --max-piece-size=<val>
     # e.g
     lotus-miner deals set-ask  --price='1000000' --max-piece-size=34359738368
    
  7. 查看 Worker 列表

     lotus-miner sealing workers
    

    查看当前 miner 任务调度列表

     lotus-miner sealing jobs
    

    如果你发现一个任务长时间没有完成(也许是 worker 掉线了),你可以使用下面的命令取消任务:

     # 终止指定的任务(通常用来处理长时间没有响应的任务)
     lotus-miner sealing abort <job-id>
    
  8. 增加存储路径

     # 设置数据存储路径,该路径用来存储最终密封好的数据
     # 执行该命令可能需要一点时间等待
     lotus-miner storage attach --store --init /path/to/persistent_storage
        
     # 设置密封扇区的存储路径,密封完成之后该路径下的数据会被自动清空,相当于临时目录
     # 执行该命令可能需要一点时间等待
     lotus-miner storage attach --seal --init /path/to/fast_cache
    

    以上两个命令都是在启动了 miner 之后才可以执行,是一种动态添加存储路径的方式,非常灵活。 你还可以在命令中添加权重 –weight=10,默认权重是 10。 执行该命令后,可通过以下命令查看存储列表:

     lotus-miner storage list
    

lotus-worker 操作

启动 Worker 命令:

# 启动 worker
lotus-seal-worker run --address=192.168.1.100:2345 --precommit1=true --precommit2=false --commit=false
# 打印当前 worker 信息
lotus-worker info
# 标记某个worker停止接单(做完当前的任务)
lotus-worker set --enabled=false
# 让某个 worker 重新接单
lotus-worker set --enabled=true

启动 worker 需要注意以下几点:

  1. 需要给 worker 指定一个在局域网可以访问的 IP 地址以及一个本机未被使用的端口。
  2. precommit1、precommit2 和 commit 默认是启用的,如果想要禁用,可以设置为 false
  3. 需要注意机器的内存与功能的划分,比如:
    • 如果你打算让当前 Worker 参与 P1,则至少需要 128GB 内存。
    • 如果你打算让当前 Worker 参与 P2,则至少需要 64GB 内存。
    • 如果你打算让当前 Worker 参与 C2,则至少需要 192GB 内存。

订单操作

  1. 导入数据

     # usage
     lotus client import <file>
     # e.g
     lotus client import hello.txt
     Import 23, Root bafk2bzacebuc55ftl4c2m6h2ng3zx4eo6svtaivkl66xxopfermkhl3dwnypk
    
  2. 发送订单

     # usage
     lotus client deal <dataCid> <minerID> <price> <duration>
     # e.g
     lotus client deal bafk2bzacebuc55ftl4c2m6h2ng3zx4eo6svtaivkl66xxopfermkhl3dwnypk f09675 0.0000000005 518400
     # 成功之后会返回一个消息回执,类似下面这样:
     bafyreigw63qjia7dulwcn6d6fhlobhiewlvd4fsnpmbmdhvjszhzbeewjm
    

    矿工的信息可以通过下面的命令查询到:

     # usage
     lotus client query-ask <minerId>
     # e.g
     lotus client query-ask f09675
    

    输出信息:

     Ask: f09675
     Price per GiB: 0.0000000005 FIL
     Verified Price per GiB: 0.00000000005 FIL
     Max Piece size: 32 GiB
    

    <duration> 是指订单的有效期,单位是区块高度,也就是说多少个区块以后该订单失效。当前 duration 的最小值 51840,也就是说你最少要存半年。

  3. 查看订单状态,需要你提交订单时返回的交易回执

     # usage
     lotus client get-deal <CID>
     # e.g 
     gamma_lotus client get-deal bafyreigw63qjia7dulwcn6d6fhlobhiewlvd4fsnpmbmdhvjszhzbeewjm
    

    输出结果类似:

     {
         "DealInfo: ": {
             "ProposalCid": {
             "/": "bafyreigw63qjia7dulwcn6d6fhlobhiewlvd4fsnpmbmdhvjszhzbeewjm"
             },
             "State": 26,
             "Message": "unexpected deal status while waiting for data request: 11 (StorageDealFailing). Provider message: deal rejected: false\n",
             "Provider": "f09675",
             "DataRef": null,
             "PieceCID": {
             "/": "baga6ea4seaqgriqpswklnzyxxpnirxj37otzgfgpcwpksi2a3ttglxqap5tbsby"
             },
             "Size": 16256,
             "PricePerEpoch": "500000000",
             "Duration": 522292,
             "DealID": 0,
             "CreationTime": "2020-10-21T12:32:52.702939009+08:00",
             "Verified": false
         }
     }
    

    因为我当前这个矿工是拒绝接收非官方机器人以外的订单,所以你看到订单的状态是 rejected 被拒绝了。

  4. 列出当前节点所有订单

     lotus client list-deals
    

手动终止 Faulty 的扇区

你可能会遇到这种情况,有些错误扇区可能由于文件损坏了,一直恢复不了,结果在区块浏览器老是显示有几个错误扇区,这个时候你们老板说这样业务数据不好看,影响销售,让你把这几个错误扇区 抹掉

  1. 编译 lotus-shed 工具

     cd <lotus-code-path>
     make lotus-shed
    
  2. 终止扇区

    先估算一下终止扇区需要支付多少币,然后确保你 Owner 钱包余额要大于这个值。

     export LOTUS_PATH=<lotus-path>
     export LOTUS_MINER_PATH=<lotus-miner-path>
     # usage
     ./lotus-shed sectors termination-estimate <Sector-IDS> # 可传入多个扇区 ID
     # e.g
     ./lotus-shed sectors termination-estimate 1 2 3
    

    然后再执行终止扇区操作:

     export LOTUS_PATH=<lotus-path>
     export LOTUS_MINER_PATH=<lotus-miner-path>
     # usage
     ./lotus-shed sectors terminate --really-do-it <Sector-IDS> # 可传入多个扇区 ID
     # e.g
     ./lotus-shed sectors terminate --really-do-it 1 2 3
    

设置时区

# 设置时区
timedatectl set-timezone Asia/Shanghai
# 设置硬件时间
hwclock --hctosys
# 同步时间服务器
apt-get install ntpdate -y
ntpdate -u cn.ntp.org.cn

RAID 操作

  1. 创建 RAID0 磁盘阵列

     mdadm -Cv /dev/md0 -a yes -n {num} -l 0 /dev/sda /dev/sdb /dev/sdc ...
     # {num} 是磁盘数量
     mdadm -Ds >> /etc/mdadm/mdadm.conf 
    
  2. 销毁 RAID0 阵列

     mdadm -S /dev/md0
     # 清楚超级块信息
     mdadm --zero-superblock /dev/sda 
    

LVM 操作

  1. 扩展 vg 大小

     # 直接扩展到指定的大小
     lvextend -L 1785G /dev/ubuntu-vg/ubuntu-lv
     # 增加容量
     lvextend -L +10G /dev/ubuntu-vg/ubuntu-lv
    
  2. 扩展文件系统大小

     resize2fs /dev/ubuntu-vg/ubuntu-lv
    
  3. 删除 LVM

     lvremove  <lvm-name>
    

开启 CPU 性能模式

# 查看当前cpu的状态:
cpufreq-info

# 把 cpu调整到性能模式:
sudo cpufreq-set -g performance

# 将所有的 CPU 全部调整到性能模式
echo "performance" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

创建 swap 分区

# 创建 swap 文件
fallocate -l 16G /swap.img
# 更改权限
chmod 0600 /swap.img
# 创建 swap 分区
mkswap /swap.img
# 挂载 swap 分区
swapon /swap.img

临时修改某个进程的 max open files 参数

对于已经启动的 Miner 进程,如果发现在做时空证明的时候报 too many open files 错误,而此时如果你又不想重启 Miner 进程,可以使用下面方法动态配置。

prlimit --pid <pid> --nofile=1048576:1048576

磁盘检测工具

可以检测磁盘型号,通电时间(新盘还是二手盘),以及坏道数据量等。

apt-get install smartmontools -y
# print all disk informations
smartctl -A /dev/sda

关闭系统软件更新

sed -i 's/^[^\/].*distro_id*/\/\/&/g' /etc/apt/apt.conf.d/50unattended-upgrades

华丽分界线, 以下操作只有使用我们维护的 lotus 系列软件才支持


我们对 Lotus 调度层代码(Golang)和底层(Rust)都进行了一些优化,可以大大提升算力机的封装效率, 提升 Miner 的稳定性和挖矿产出。

  1. 自定义每台 Worker 的 AP,PC1,PC2,C2 以及 FinalizeSector 的任务数,并且支持动态调整机器的任务数量,无需重启 Worker;
  2. 支持多种任务调度策略:深度优先,广度优先,轮询以及智能调度(Smart)策略 最大限度的让你的机器做到工作饱和,提高产出;
  3. 支持 AP,PC1 任务同机器绑定,PC1,PC2 任务同机器绑定,最大限度的减少缓存数据传输,甚至做到 0 传输。
  4. 网关机器支持挂载多个存储路径,自动负载均衡,均衡写入各个存储设备。支持对密封后的扇区文件 Sealed 和 Cache 自动备份。
  5. 支持手动 Declare 和 Drop 扇区,对扇区的存储路径进行人工调整,无需重启 Miner。
  6. 支持离线时空证明,方便线下排查时空证明故障
  7. 对于中大型集群,支持多 Miner 方案
    • full-miner:全功能 Miner,集任务调度,时空证明,爆块等全部功能于一身,适用于小型矿工。
    • winpost-miner: 爆块 Miner,只运行 WinningPoSt 程序模块,只需要 1 台即可。
    • wndpost-miner: 时空证明 Miner,只运行 WindowPoSt 程序模块,根据你集群的大小,可以运行一台或者 Miner 集群,数量灵活扩展。

动态设置 Miner 任务调度算法

应用场景:默认所有的任务调度算法都是使用 Smart 智能调度策略,该策略会根据你 Worker 的最大任务数,以及你当前运行的任务数,以及 Prepare 任务数,assign 任务数等参数算出当前所有任务中最适合接这个任务的 Worker。

但是有些时候你可能需要临时切换到其他算法,比如你所有算力机器的性能都差不多的话,你可以会更倾向于使用轮询调度算法(round_robin)。 下面命令把 PC1 的调度算法设置为轮询调度策略:

lotus-miner sealing dispatch --set=true --key=PC1 --val=round_robin

动态配置 Worker 任务数

应用场景: 某台 Worker 磁盘性能较差,你想减少它并行的任务数,但是该机器有其他任务在运行,已经快跑完了,所以你此时是不能重启这个 Worker 程序的。

把某台 Worker PC1 任务的并行数调整为 10:

# usage
lotus-miner worker set --key=MaxPreCommit1Num --val=10 --wid=<Worker-ID>
# e.g
lotus-miner worker set --key=MaxPreCommit1Num --val=10 --wid=23592e59-5524-4fa8-b494-8f76e6d9a9bc

动态配置 Worker 运行状态

  1. 设置某台机器暂停接新的任务,并把手头上的任务先做完:

     lotus-miner worker set --key=status --val=pause --wid=<Worker-ID>
    
  2. 设置某台暂停的机器重新接任务:

     lotus-miner worker set --key=status --val=running --wid=<Worker-ID>
    
  3. 故障机器下架维护,不再给它调度任务,也不再给他发心跳:

     lotus-miner worker set --key=status --val=exit --wid=<Worker-ID>
    

手动声明扇区

以下场景可能需要手动声明扇区位置:

  1. 部分 FinalizeFailed 的扇区。
  2. FinalizeSector 成功了,但是 lotus-miner proving check 又提示 can not cache/sealed path,导致时空证明过不了,掉算力。

此时我们可以手动完成 FinalizeSector 过程:

  1. 首先找到扇区文件在哪个机器上(假设扇区 ID 为 100,矿工 ID 为 f01000):

     lotus-miner storage find 100
    

    如果找不到的话,可以通过运维系统批量推送脚本到执行:

     ls -ld /gamma/lotus-p1-worker/data/cache/s-t01000-100
     ls -ld /gamma/lotus-p1-worker/data/sealed/s-t01000-100
    
  2. 手动拷贝扇区到你的扇区存盘路径,假设为 /data01,扇区所在 Worker 机器 IP 为 192.168.1.100

     scp -r root@192.168.1.100:/gamma/lotus-p1-worker/data/cache/s-t01000-100 /data01/cache
     scp -r root@192.168.1.100:/gamma/lotus-p1-worker/data/sealed/s-t01000-100 /data01/sealed
    
  3. 手动申明扇区,假设 /data01/sectorstore.json 文件对应的 Storage ID 为: e0d9481a-3d85-4464-8f0d-2af9a5c755d1

     # 声明 cache 文件
     lotus-miner storage declare-sector --really-do-it=true --type=cache --sector=100 --storage=e0d9481a-3d85-4464-8f0d-2af9a5c755d1
     # 声明 sealed 文件
     lotus-miner storage declare-sector --really-do-it=true --type=sealed --sector=100 --storage=e0d9481a-3d85-4464-8f0d-2af9a5c755d1
    
  4. 同时,你需要删除错误的 storage 声明(如果有的话)。

     lotus-miner storage drop-sector --really-do-it=true --type=cache --sector=100 --storage=<Storage-ID>
    

重新初始化矿工

如果你不小心手贱删除了 lotus-minerdatastore 文件夹,又无法恢复的话,那么大概率你的 Miner 是无法启动了,此时你需要重新初始化矿工。具体操作步骤如下:

  1. 重新声明矿工 PeerID,并生成 Miner 的初始化目录和文件。如果你当初创建矿工之后有备份 $LOTUS_MINER_PATH(默认 .lotusminer) 目录,那么你可以直接跳过此步骤。 假设你的 Owner 钱包地址为 f0xxxx,矿工 ID 为 f01000:
     lotus-miner init --owner=f0xxxx --actor=f01000 
    
  2. 按照你原来 Miner 配置重新修改配置文件 (config.toml,storage.json 等),并启动矿工。
  3. 找到你的所有 Proving 扇区的最大扇区编号,这里假设为 9999,将当前 Miner 的 Next Sector ID 设置为 9999,这样继续做 AP 的时候扇区 ID 就会从 10000 开始,而不是从 0 开始。
     lotus-miner sectors set-next-id --really-do-it=true 9999
    

参考链接