当扇区数据所在的磁盘发生损坏或者其他原因导致扇区数据丢失时,可以通过扇区重建功能恢复扇区数据。
venus-sector-manager
中保存了扇区的 piece 文件信息和申请的随机数等信息。 扇区重建时 venus-sector-manager
会下发这些信息给 venus-worker
, 再由 venus-worker
执行封装流程。
大致流程参考:重建(rebuild)任务的状态流转。
有两种更改配置的方法:
第一种:更改 venus-worker
主配置文件,增加一个 plan 为 rebuild 的 sealing_thread, 或将原有的一个 sealing_thread 的 plan 更改为 rebuild。这种方式需要重启 venus-worker
。示例如下:
# /path/to/your-venus-worker-config.toml
# ...
[[sealing_thread]]
location = "/path/to/your_sealing_thread_location/"
plan = "rebuild"
# ...
第二种:创建 sealing_thread 热更新配置文件。在 sealing_thread 的 location 目录下创建名为 config.toml
的文件。文件内容如下:
# /path/to/your_sealing_thread_location/config.toml
plan = "rebuild"
venus-worker
会在扇区任务开始前加载热更新配置文件。具体参考: sealing_thread 配置热更新
执行:
venus-worker worker -c your-config.toml list
output:
#0: "/path/to/your_sealing_thread_location"; plan=rebuild, sector_id=None, paused=false, paused_elapsed=None, state=Empty, last_err=None
// ...
或者执行:
venus-sector-manager util worker info <worker instance name or address>
output:
Index Loc Plan SectorID Paused PausedElapsed State LastErr
0 /path/to/your_sealing_thread_location rebuild NULL false NULL Empty NULL
// ...
如果显示 plan 为 rebuild 则说明配置改更成功。(注意: 热更新配置文件可能不会立刻生效,需要等待扇区任务重新开始才会加载它)
命令:
venus-sector-manager util sealer sectors rebuild <miner actor> <sector number>
其中 <miner actor>
为矿工号, <sector number>
为需要重建的扇区号。
我们以矿工号 1001, 需要重建的扇区号 123 为例。执行:
venus-sector-manager util sealer sectors rebuild 1001 123
执行:
venus-worker worker -c your-config.toml list
或者:
venus-sector-manager util worker info <worker instance name or address>
观察 state 和 last_err 字段信息。 state 字段对应 重建(rebuild)任务的状态流转 中的 state。
或者直接查看扇区状态信息:
// 查询未完成的扇区
venus-sector-manager util sealer sectors state 1001 123
// 查询完成的扇区
venus-sector-manager util sealer sectors state --offline 1001 123
venus-sector-manager util sealer sectors list --rebuild --sealing=false
venus-sector-manager util sealer sectors list --offline --rebuild --sealing=false