分类 linux 下的文章

遭遇节点自动重启后长期处于 starting 状态(1个小时以上)

QQ截图20220404114937.png

检查日志

cd $CNODE_HOME/logs
tail -f node0.json

发现正在验证区块

{"host":"cnoder86","pid":"3127081","loc":null,"at":"2022-04-04T03:43:18.66Z","ns":["cardano.node.ChainDB"],"sev":"Info","env":"1.34.1:73f9a","data":{"kind":"TraceImmutableDBEvent.ValidatedChunk","chunkNo":"2171"},"msg":"","thread":"5","app":[]}

在社区资讯过大佬们,答曰是一些 dirty data 造成的。或许是异常的重启或者来自分叉的节点的干扰数据。
无他,是节点的自纠和保护机制

如果赶时间又自信数据没有问题,可以用逃课的办法跳过这个自检:

cd $CNODE_HOME/db
touch clean
systemctl restart cnode

简单的说, 就是在 db 路径下新建一个名为clean的空文件。节点启动的时候检查到有这个文件就会跳过自检。

但以上方法慎用,当你无法保证数据正确完整的时候跳过自检可能导致自己的chain db 进入错误的分叉,下文详述。

-待续-

给R86S灌系统的时候nvme硬盘还没发货,所以系统先装在内建的 EMMC上,到货之后才加装,备忘本文。
(正常流程可以在安装ubuntu的时候顺便做分区格式化)

以标题同名关键词搜索 google 已经得到精炼的步骤指引:

ubuntu20.04挂载硬盘

  1. 通过df -h 查看现磁盘使用情况
  2. 通过fdisk -l查看电脑挂载的硬盘 ...
  3. 删除原硬盘分区,执行fdisk /dev/sdb,输入d,然后根据提示输入对应分区号即可
  4. 将清除分区的硬盘格式化为ext4格式,执行命令mkfs.ext4 /dev/sdb.

按上述流程操作个大概,以下是部分要点补充


- 阅读剩余部分 -

事因手误安装的时候敲错了路径,发现的时候大部分环境已经部署好了,需要在安装之后修改路径

以下备忘是lnmp的,其他安装方式类似,重点在标红的步骤

1.停止服务

lnmp stop mysql

如果是手动安装,用 systemctl stop mysql

2.复制库文件到新的目标路径

cd /homw
cp -a -r db /home/db
mv db db_bak

这里就是问题所在(掩面)手抽筋把 home 敲成 homw 了...
重点就在这里 cp -a -r 必须加上 -a 确保目录权限也复制
最后的mv 改名只是为了把原路径改掉,确认路径被修改后是否生效,避免下一步修改配置错误依然从原目录存取但未能发现问题

3.修改配置文件

vi /etc/my.cnf

若非lnmp安装这个配置文件可能不是这个路径或名字,根据实际情况而定
把相关的 datadir, innodb_data_home_dir, innodb_log_group_home_dir 等选项修改为新路径

4.重启mysql服务

lnmp restart mysql

如无报错修改完成,观察一段时间无问题后可以把原路径的 db_bak 删除。

上个epoch cntools没有采集到 leader log 数据,看不到预测的出块数据。
一开始没有留意,以为只是后台服务偶然宕掉了

用命令重启了就没管

systemctl restart cnode-cncli-sync.service

结果这个epoch又是没有,查状态又是 code=exited 而且重启5秒后状态又变失败

手动执行

$CNODE_HOME/scripts/cncli.sh sync

得到以下提示,版本太旧需要更新

ERROR: cncli v2.0.2 installed, minimum required version is 2.1.0, please upgrade to latest version

解决方法——和安装 cncli 一样,再运行一次(升级和安装相同命令)

prereqs.sh -c

等待自检下载编译再次重启服务即可(当前已经升级到3.1.3)