本指南描述了如何根据需要和可用硬件为 Lotus Miner 指定自定义存储位置。
如果您在矿机初始化期间使用了 --no-local-storage 标志,则应指定用于密封(推荐使用快速 SSD)和长期存储的磁盘位置。
Lotus Miner 跟踪在 ~/.lotusminer/storage.json(或 $LOTUS_MINER_PATH/storage.json)中定义的存储位置,并使用 ~/.lotusminer 路径作为默认路径。
在初始化存储位置时,会创建一个 <path-to-storage>/sectorstorage.json 文件,其中包含分配给该位置的 UUID,以及它是否可用于密封或存储。
密封扇区时使用密封存储位置。它应该是一个非常快的存储介质,这样磁盘就不会成为延迟密封过程的瓶颈。它可以指定为:
lotus-miner storage attach --init --seal <PATH_FOR_SEALING_STORAGE>
密封过程完成后,密封扇区将移动到存储位置,可以指定如下:
lotus-miner storage attach --init --store <PATH_FOR_LONG_TERM_STORAGE>
该位置可以由大容量(尽管速度较慢)旋转磁盘构成。
lotus-miner storage list
要将数据从一个位置移动到另一个位置,请按照 下面的Miner 生命周期指南中的说明进行操作。
要完全删除一个位置,请手动编辑 storage.json 并重新启动您的矿工。
如何安全地对 Lotus 矿机进行维护。
这些操作通常与维护和升级有关。鉴于矿工需要以连续的方式向链提交证明,同时运行时间长且成本高的操作,操作员熟悉如何管理矿工生命周期中的一些事件非常重要,这样才能最大程度地保证它们的执行。
关闭矿机并重新启动它的过程很复杂。需要考虑几个因素才能在所有保证下做到这一点:
鉴于需要不断地向网络发送证明,矿工应该尽可能少地离线。离线时间包括计算机完全重新启动矿工守护程序所需的时间。出于这些原因,我们建议您执行以下步骤:
在仍有待处理的操作时关闭您的矿机可能会使您的矿机遭到 惩罚。通过运行 lotus-miner 证明信息来检查没有挂起的操作。如果任何截止日期显示过去的区块高度,请不要重新启动。
在下面的例子中,Deadline Open 是 454,比 Current Epoch 的 500 早。 不应关闭或重新启动该矿机:
$ lotus-miner proving info Miner: t01001 Current Epoch: 500 Proving Period Boundary: 154 Proving Period Start: 154 (2h53m0s ago) Next Period Start: 3034 (in 21h7m0s) Faults: 768 (100.00%) Recovering: 768 Deadline Index: 5 Deadline Sectors: 0 Deadline Open: 454 (23m0s ago) Deadline Close: 514 (in 7m0s) Deadline Challenge: 434 (33m0s ago) Deadline FaultCutoff: 384 (58m0s ago)
在下面的示例中,矿工可以安全地重新启动,因为没有任何截止日期早于 Current Epoch。您有大约 45 分钟的时间,矿工必须重新上线以宣布故障。这称为截止日期故障截止。如果矿工没有故障,你大约有一个小时。
$ lotus-miner proving info Miner: t01000 Current Epoch: 497 Proving Period Boundary: 658 Proving Period Start: 658 (in 1h20m30s) Next Period Start: 3538 (in 25h20m30s) Faults: 0 (0.00%) Recovering: 0 Deadline Index: 0 Deadline Sectors: 768 Deadline Open: 658 (in 1h20m30s) Deadline Close: 718 (in 1h50m30s) Deadline Challenge: 638 (in 1h10m30s) Deadline FaultCutoff: 588 (in 45m30s)
上面的proving info示例显示了当前证明窗口和截止日期的信息。如果您想查看任何即将到来的截止日期,您可以使用:
$ lotus-miner proving deadlines
每行对应一个截止日期(30 分钟,涵盖 24 小时)。当前一个被标记。这有时有助于矿工一天中的某个时间不必向链提交任何证明。
在停止矿工之前,检查您的交易状态以确保矿工没有接收数据或为客户检索数据:
lotus-miner storage-deals list lotus-miner retrieval-deals list lotus-miner data-transfers list
为防止在您等待当前截止日期完成工作时出现新交易,您可以禁用存储和检索交易。这确保了矿工在关闭时不会发现自己处于新交易的中间:
lotus-miner storage-deals selection reject --online --offline lotus-miner retrieval-deals selection reject --online --offline
矿工完成重启后,可以通过以下方式重置交易:
lotus-miner storage-deals selection reset lotus-miner retrieval-deals selection reset
要了解您当前的扇区和状态,请运行:
lotus-miner sectors list
任何正在进行的密封操作将从最后一个检查点重新开始,通常对应于当前密封阶段的开始。鉴于密封非常耗时,您应该等待一些接近完成的阶段,然后再重新启动您的矿机。
考虑到上述所有因素,您可以决定关闭矿机的最佳时机:
lotus-miner stop
您可以根据需要尽快重新启动矿机。工人不需要重新启动,因为他们会在矿机恢复时自动重新连接到矿机。但是,如果您在关闭矿机的同时升级节点,则需要重新启动机器。
Lotus seal workers可以随时重新启动,但如果他们在其中一个封印步骤中,则操作将再次开始(从最后一个检查点开始)。
在完全从头开始密封之前(pre-commit1 阶段),最多有 3 次尝试来完成 precommit2 操作。
如果您希望将 workers 相关存储的位置更改为不同的路径,对于 miner 或seal workers,请确保 Lotus miner 和任何 seal workers 都知道新位置。
lotus-miner storage list
上述命令将为您提供矿工已知的存储位置的概览。此信息存储在 ~/.lotusminer/storage.json (或 $LOTUS_MINER_PATH/storage.json 如果已定义)。Lotus Seal Workers 将所有数据存储在 ~/.lotusworker 文件夹(或 $LOTUS_WORKER_PATH 如果已定义)中。
如果您希望更改 Lotus 矿工的任何存储位置,请执行以下步骤:
如果您希望扩展您的存储空间,同时保持最新状态,您可以随时通过 lotus storage attach 向 Lotus 矿工添加额外的存储位置(请参阅 --help)。
如果您想更改任何 Lotus Worker 的存储位置:
workers 在停止之前执行的任何操作都将从最后一个检查点(可以重新启动的点,这可能对应于当前密封阶段的开始)重新启动。
当前不支持在不同 workers 之间移动数据。将 workers 存储文件夹移动到不同的 workers 机器将不起作用,因为 miner 希望正在进行的密封操作由他们首先分配的 workers 完成。
如果您计划在 miner 使用的 Lotus 节点上运行维护,或者如果您需要故障转移到不同的 Lotus 节点,因为当前节点不起作用,请执行以下步骤:
export FULLNODE_API_INFO=<api_token>:/ip4/<lotus_daemon_ip>/tcp/<lotus_daemon_port>/http
请了解如何获取令牌。
确保您的新 Lotus 节点已完全同步。