remote harvesterを設定してみる

Chiaをやりはじめてからずっとfull nodeとharvesterは1台だけでファーミングしていました。harvesterを別けるためにはChiaのバージョンを揃えたりする必要がありましたし、当時は公式Plotterを利用していたため、各マシンでChiaバージョンが異なることが当たり前のようにあったからです。1台に集約し、PlotはUSB接続HDDかNASにSMBで接続することで管理の手間を省いていました。

先日、full node & harvester PCに接続しているUSB HDDの中身のOGを削除し、PPをNASからコピーしていたときのことです。POOLの状態をみていたらInvalidが急増していました。

そして報酬もめちゃくちゃ落ち込みました。いつもの半分くらいしかありませんでした。

どうやらUSB接続HDDにファイルをコピーしている間、Invalidが増えまくるようです。

帯域を食いつぶさないようにこのPCとNASはLANケーブルで直結し、別Networkでファイルをコピーしています。にもかかわらずInvalidが増えるのはなぜか。debug.logを見るとLooking up qualities のWARNINGが大量にありました。どうやらネットワークドライブ越しのPlot(SMBでNAS接続してるやつ)のアクセスが5秒を越えてしまうようでした。

原因はよくわかりません。USB HUBの帯域を食いつぶしてるのか…PlotコピーしててもInvalid出ないHDDもあります。SeagateのSATA変換アダプタをつけたHDDを対象とすると発生します(コピーの速度は20~40MB/s程度)が、Seagateの外付けHDD(HUBつき)を対象にすると発生しません(コピーの速度は110~120MB/s)。意味がわかりません。両方とも同じUSB HUBに接続してます。

ちょうどChia1.2.5がリリースサれたばかりだし、アップデートついでにハーベスターを分けてみることにしました。

remote harvesterの設定

やり方は公式をご参照ください。とはいえわかりにくいので以下に軽く手順を書いておきます。

caフォルダのコピー

Full node & harvesterはWindows10です。まずはFull node実行中のマシンのCAフォルダのファイルを入手します。

場所は下記になりますが、User部分は各自変わってます。
C:\Users\hyperbanana\.chia\mainnet\config\ssl\ca

caフォルダをまるごとUSBメモリなりNASなりにコピーしておきましょう。リモートハーベスターに持っていく必要があります。

とりあえずホームディレクトリにおいておきました。
cp -r /mnt/qnap/ca ~/

Chiaセットアップ

次にリモートハーベスターにChiaをセットアップします。NASにしていたCore i7-7700k、ubuntu20.04 LTSにChiaをセットアップします。

sudo apt-get update
sudo apt-get upgrade -y

Gitインストール
sudo apt install git -y

Chiaインストール
git clone https://github.com/Chia-Network/chia-blockchain.git -b latest --recurse-submodules
cd chia-blockchain

sh install.sh

. ./activate

GUIは入れませんでしたが、入れる場合は
sh install-gui.sh

cd chia-blockchain-gui
npm run electron &

インストール済みでアップデートする場合はこっち
cd chia-blockchain
. ./activate
chia stop -d all
deactivate
git fetch
git checkout latest
git reset --hard FETCH_HEAD --recurse-submodules

git status

sh install.sh

. ./activate

chia init

GUIを使ってる場合はこっちも
cd chia-blockchain-gui
git fetch
cd ..
chmod +x ./install-gui.sh
./install-gui.sh

cd chia-blockchain-gui
npm run electron &

remote harvesterの初期設定

設定の間、一旦full node実行していたPCのchiaは落としておきました。

caのパスを指定してinitします。
chia init -c /home/hyperbanana/ca

caファイルのパーミッションを適正にしてくれるコマンドを複数打ちます。ちゃんと警告出てくれるのでわかりやすいですね。
chia init --fix-ssl-permissions
chia init --fix-ssl-permissions

full node実行PCのIPアドレスを設定します。コマンドプロンプトでipconfigとかすればOK
chia configure --set-farmer-peer 192.168.1.238:8447

upnpをdisableにします。full node実行するPC以外ではdisableにしなければいけません。
chia configure -upnp false

plot保管ディレクトリを指定します。
chia plots add -d /mnt/sg2tb/poolPlots/
chia plots add -d /mnt/sg2tb_2/poolPlots/
chia plots add -d /mnt/sas7.2k/poolPlots/
chia plots add -d /mnt/sas7.2k_2/poolPlots/
chia plots add -d /mnt/toshiba8tb/poolPlots/
chia plots add -d /mnt/ironwolf12tb/poolPlots/
chia plots add -d /mnt/intel660p/poolPlots/
chia plots add -d /mnt/hgst2tb/poolPlots/
chia plots add -d /mnt/hgst6tb_1/poolPlots/
chia plots add -d /mnt/hgst6tb_2/poolPlots/
chia plots add -d /mnt/hgst10tb/poolPlots/

ハーベスターだけでいいので、すべてのchia daemonをストップします。
chia stop -d all

ハーベスター起動(再起動の場合は-rオプション)
chia start harvester

確認
chia plots show

full node側の設定

remote harvester側で設定したPlotディレクトリを削除します。
C:\Users\hyperbanana\.chia\mainnet\configにあるconfig.yamlのplot_directories:から該当箇所を削除してやれば楽かな。GUIでやっても大丈夫です。

Chia起動後、Farmタブの下の方、Advanced Optionsの所にHarvesterが2つ出てくれば成功です。

pool側にもHarvesterが2つ出てきました。これで多少はマシになったかな。

しかし、5秒越えちゃう警告はなくなりませんね。QnapにSMBで接続してるPlotがヤバそう。
2021-08-31T12:58:39.730 harvester chia.harvester.harvester: WARNING Looking up qualities on /mnt/qnap/poolPlots/plot-k32-2021-08-14-18-24-84(中略)19a8.plot took: 5.603151559829712. This should be below 5 seconds to minimize risk of losing rewards.

もちろんローカル接続HDDにWARNINGが出ることは殆どなくなりました。QnapもHarvesterにしちゃうほうが良さそうです。ちょっとやってみようとしたけれどDockerわけわからんくて断念中。もう少し勉強します。

やってみたらできました。

harvester自動起動設定(2021/09/01追記)

今のままではubuntu再起動時にharvesterが自動起動しません。うっかり起動を忘れて半日ほど放置してしまったのでなんとかしましょう。

chia_harvester_startup.shというファイルを作り、下記のように記述します。
vi chia_harvester_startup.sh

#!/bin/bash
cd /home/hyperbanana/chia-blockchain/
. ./activate
chia start harvester

作ったファイルに実行権限を付与します。
chmod 764 chia_harvester_startup.sh

crontab -eコマンドでcrontabを開き、下記1行を追記します。
@reboot /home/hyperbanana/chia_harvester_startup.sh

これでリブート後にも自動でharvesterが起動するようになりました。おしまい。