运行归档节点
概述
归档节点是一种全节点,它存储区块链的扩展历史数据。如果您正在创建一个区块链浏览器或类似需要访问历史数据的应用程序,推荐使用归档节点作为索引器。
必要条件
我们强烈建议使用支持的操作系统安装mytonctrl:
- Ubuntu 20.04
- Ubuntu 22.04
- Debian 11
请使用具有sudo权限的非root用户来安装和运行mytonctrl。
硬件要求
- 16 x 核心 CPU
- 128GB ECC内存
- 4TB SSD 或者 预置32+k IOPS存储
- 1 Gbit/s 网络连接
- 高峰期每月16 TB流量
- 固定公网IP地址
注意:假设使用启用压缩的zfs卷的4TB
安装
通常,您需要执行以下步骤来运行归档节点:
- 安装ZFS并准备卷
- 安装MyTonCtrl
- 在您的服务器上运行全节点并停止验证者进程
- 从https://archival-dump.ton.org下载并恢复转储数据
- 使用配置归档节点DB规格的方式运行全节点
安装ZFS并准备卷
转储以使用plzip压缩的ZFS快照的形式提供,您需要在主机上安装zfs并恢复转储,详见Oracle文档。
通常,为您的节点在专用SSD驱动器上创建一个单独的ZFS池是个好主意,这将使您更容易管理存储空间并备份您的节点。
- 安装zfs
sudo apt install zfsutils-linux
- 在您的专用4TB
<disk>
上创建池,并命名为data
sudo zpool create data <disk>
- 在恢复之前,我们强烈建议在父ZFS文件系统上启用压缩,这将为您节省大量空间。要为
data
卷启用压缩,请使用root账户输入:
sudo zfs set compression=lz4 data
安装MyTonCtrl
请使用运行全节点来安装mytonctrl。
运行归档节点
准备节点
- 在执行恢复之前,您必须使用root账户停止验证者:
sudo -s
systemctl stop validator.service
- 备份
ton-work
配置文件(我们将需要/var/ton-work/db/config.json
,/var/ton-work/keys
和/var/ton-work/db/keyring
)。
mv /var/ton-work /var/ton-work.bak
下载转储
- 请求
user
和password
凭证以获得下载转储的权限,可以在@TONBaseChatEn Telegram聊天中请求。 - 这是从ton.org服务器下载和恢复转储的示例命令:
wget --user <usr> --password <pwd> -c https://archival-dump.ton.org/dumps/latest.zfs.lz | pv | plzip -d -n <cores> | zfs recv data/ton-work
转储的大小约为1.5TB,因此下载和恢复它将需要一些时间。
准备并运行命令:
- 如有必要,安装工具(
pv
,plzip
) - 用您的凭证替换
<usr>
和<pwd>
- 告诉
plzip
使用尽可能多的核心来加速提取(-n
)
挂载转储
- 挂载zfs:
zfs set mountpoint=/var/ton-work data/ton-work && zfs mount data/ton-work
- 从备份恢复
db/config.json
、keys
和db/keyring
到/var/ton-work
cp /var/ton-work.bak/db/config.json /var/ton-work/db/config.json
cp -r /var/ton-work.bak/keys /var/ton-work/keys
cp -r /var/ton-work.bak/db/keyring /var/ton-work/db/keyring
- 确保
/var/ton-work
和/var/ton-work/keys
目录的权限正确设置:
/var/ton-work/db
目录的所有者应为validator
用户:
chown -R validator:validator /var/ton-work/db
/var/ton-work/keys
目录的所有者应为ubuntu
用户:
chown -R ubuntu:ubuntu /var/ton-work/keys
更新配置
更新归档节点的节点配置。
- 打开节点配置文件
/etc/systemd/system/validator.service
nano /etc/systemd/system/validator.service
- 在
ExecStart
行中添加节点的存储设置:
--state-ttl 315360000 --archive-ttl 315360000 --block-ttl 315360000
信息
启动节点后请耐心等待并观察日志。转储没有DHT缓存,所以您的节点需要一些时间来找到其他节点,然后与它们同步。根据快照的时间,您的节点可能需要从几小时到几天的时间来赶上网络。这是正常的。
启动节点
- 运行以下命令启动验证者:
systemctl start validator.service
- 以本地用户身份打开
mytonctrl
,使用status
检查节点状态。
节点维护
节点数据库需要不时清理(我们建议每周一次),请以root身份执行以下步骤:
- 停止验证者进程(切勿跳过此步骤!)
sudo -s
systemctl stop validator.service
- 删除旧日志
find /var/ton-work -name 'LOG.old*' -exec rm {} +
- 删除临时文件
rm -r /var/ton-work/db/files/packages/temp.archive.*
- 启动验证者进程
systemctl start validator.service
故障排除和备份
如果出于某种原因某些东西不起作用/出现故障,您始终可以回滚到ZFS文件系统上的@archstate快照,这是转储的原始状态。
- 停止验证者进程(切勿跳过此步骤!)
sudo -s
systemctl stop validator.service
- 检查快照名称
zfs list -t snapshot
- 回滚到快照
zfs rollback data/ton-work@dumpstate
如果您的节点运行良好,则可以删除此快照以节省存储空间,但我们建议定期对文件系统进行快照,以备份用途,因为验证者节点已知会在某些情况下损坏数据以及config.json。zfsnap是自动化快照轮换的好工具。
需要帮助吗?
有问题或需要帮助?请在TON开发者聊天中询问,以获得社区的帮助。MyTonCtrl开发者也常在那里。