본문으로 건너뛰기

아카이브 노드

정보

이 문서를 읽기 전에 전체 노드에 대해 먼저 읽어보세요

개요

아카이브 노드는 블록체인의 확장된 과거 데이터를 저장하는 전체 노드의 한 유형입니다. 블록체인 탐색기나 과거 데이터에 대한 접근이 필요한 유사한 애플리케이션을 만드는 경우, 인덱서로 아카이브 노드를 사용하는 것이 권장됩니다.

OS 요구사항

다음과 같은 지원되는 운영 체제에서 mytonctrl을 설치할 것을 강력히 권장합니다:

  • Ubuntu 20.04
  • Ubuntu 22.04
  • Debian 11

하드웨어 요구사항

  • 16 코어 CPU
  • 128GB ECC 메모리
  • 9TB SSD 또는 64k+ IOPS 프로비저닝된 스토리지
  • 1 Gbit/s 네트워크 연결
  • 최대 부하 시 월 16 TB 트래픽
  • 공인 IP 주소(고정 IP 주소)
데이터 압축

압축되지 않은 데이터의 경우 9TB가 필요합니다. 6TB는 압축이 활성화된 ZFS 볼륨을 사용하는 경우입니다. 2024년 11월 기준으로 데이터 볼륨은 매월 약 0.5TB와 0.25TB씩 증가합니다.

설치

ZFS 설치 및 볼륨 준비

덤프는 plzip으로 압축된 ZFS 스냅샷 형태로 제공됩니다. 호스트에 zfs를 설치하고 덤프를 복원해야 합니다. 자세한 내용은 Oracle 문서를 참조하세요.

일반적으로 _전용 SSD 드라이브_에 노드를 위한 별도의 ZFS 풀을 만드는 것이 좋습니다. 이를 통해 저장 공간을 쉽게 관리하고 노드를 백업할 수 있습니다.

  1. zfs 설치
sudo apt install zfsutils-linux
  1. 전용 4TB <disk>data라는 이름으로 풀 생성
sudo zpool create data <disk>
  1. 복원하기 전에 상위 ZFS 파일시스템에서 압축을 활성화할 것을 강력히 권장합니다. 이렇게 하면 많은 공간을 절약할 수 있습니다. root 계정을 사용하여 data 볼륨의 압축을 활성화하려면:
sudo zfs set compression=lz4 data

MyTonCtrl 설치

mytonctrl을 설치하고 실행하려면 전체 노드 실행하기를 참조하세요.

아카이브 노드 실행

노드 준비

  1. 복원을 수행하기 전에 root 계정을 사용하여 validator를 중지해야 합니다:
sudo -s
systemctl stop validator.service
  1. 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

덤프 다운로드

  1. 덤프 다운로드 접근 권한을 얻기 위해 @TONBaseChatEn 텔레그램 채팅에서 userpassword 자격 증명을 요청하세요.
  2. 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

테스트넷 덤프를 설치하려면:

wget --user <usr> --password <pwd> -c https://archival-dump.ton.org/dumps/latest_testnet.zfs.lz | pv | plzip -d -n <cores> | zfs recv data/ton-work

덤프 크기는 약 __4TB__이므로 다운로드하고 복원하는데 며칠(최대 4일)이 걸릴 수 있습니다. 네트워크가 성장함에 따라 덤프 크기가 증가할 수 있습니다.

명령을 준비하고 실행하세요:

  1. 필요한 경우 도구(pv, plzip) 설치
  2. <usr><pwd>를 자격 증명으로 교체
  3. plzip에게 추출 속도를 높이기 위해 시스템이 허용하는 만큼의 코어를 사용하도록 지시(-n)

덤프 마운트

  1. zfs 마운트:
zfs set mountpoint=/var/ton-work data/ton-work && zfs mount data/ton-work
  1. /var/ton-work에 백업에서 db/config.json, keys, db/keyring 복원
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
  1. /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

설정 업데이트

아카이브 노드를 위한 노드 설정을 업데이트합니다.

  1. /etc/systemd/system/validator.service 노드 설정 파일 열기
nano /etc/systemd/system/validator.service
  1. ExecStart 줄에 노드의 스토리지 설정 추가:
--state-ttl 315360000 --archive-ttl 315360000 --block-ttl 315360000
정보

노드를 시작하고 로그를 관찰할 때 인내심을 가지세요. 덤프는 DHT 캐시 없이 제공되므로, 노드가 다른 노드를 찾고 동기화하는 데 시간이 걸립니다. 스냅샷의 나이와 인터넷 연결 속도에 따라, 노드가 네트워크를 따라잡는 데 몇 시간에서 며칠이 걸릴 수 있습니다. 최소 설정에서는 이 과정이 최대 5일까지 걸릴 수 있습니다. 이는 정상적인 현상입니다.

주의

노드 동기화 과정이 이미 5일이 지났지만 여전히 동기화되지 않은 경우, 문제 해결 섹션을 확인해야 합니다.

노드 시작

  1. 다음 명령을 실행하여 validator 시작:
systemctl start validator.service
  1. _로컬 사용자_로 mytonctrl을 열고 status를 사용하여 노드 상태를 확인합니다.

노드 유지관리

노드 데이터베이스는 주기적으로(주 1회 권장) 정리가 필요합니다. root로 다음 단계를 수행하세요:

  1. validator 프로세스 중지(절대 건너뛰지 마세요!)
sudo -s
systemctl stop validator.service
  1. 오래된 로그 제거
find /var/ton-work -name 'LOG.old*' -exec rm {} +
  1. 임시 파일 제거
rm -r /var/ton-work/db/files/packages/temp.archive.*
  1. validator 프로세스 시작
systemctl start validator.service

문제 해결 및 백업

어떤 이유로든 작동하지 않거나 문제가 발생하면 ZFS 파일시스템에서 @archstate 스냅샷으로 롤백할 수 있습니다. 이는 덤프의 원래 상태입니다.

  1. validator 프로세스 중지(절대 건너뛰지 마세요!)
sudo -s
systemctl stop validator.service
  1. 스냅샷 이름 확인
zfs list -t snapshot
  1. 스냅샷으로 롤백
zfs rollback data/ton-work@dumpstate

노드가 잘 작동하면 저장 공간을 절약하기 위해 이 스냅샷을 제거할 수 있지만, validator 노드가 일부 경우에 데이터와 config.json을 손상시킬 수 있으므로 롤백을 위해 파일시스템을 정기적으로 스냅샷하는 것을 권장합니다. zfsnap은 스냅샷 회전을 자동화하는 좋은 도구입니다.

도움이 필요하신가요?

질문이 있거나 도움이 필요하신가요? 커뮤니티의 도움을 받으려면 TON dev 채팅에서 질문하세요. MyTonCtrl 개발자들도 그곳에 있습니다.

팁 & 트릭

아카이브 노드가 블록을 저장하지 않도록 강제하기

노드가 아카이브 블록을 저장하지 않도록 강제하려면 86400 값을 사용하세요. 자세한 내용은 set_node_argument 섹션을 확인하세요.

installer set_node_argument --archive-ttl 86400

지원

@mytonctrl_help에서 기술 지원을 받으세요.

참고 자료