Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

이 가이드는 스냅샷 및 상태 동기화를 사용하여 Stable 노드를 신속하게 동기화하는 다양한 방법을 다룹니다.

동기화 방법 개요

방법동기화 시간필요한 저장 공간사용 사례
가지치기된 스냅샷~10분< 5GiB일반 풀 노드
아카이브 스냅샷~3시간~700 GB아카이브 노드, 블록 탐색기

공식 스냅샷

Stable은 매일(UTC 00:00) 업데이트되는 공식 스냅샷을 제공합니다.

스냅샷 정보

메인넷

유형압축크기URL업데이트 주기
가지치기된LZ4< 5GiB다운로드매일
아카이브ZSTD~700 GB다운로드매주

테스트넷

유형압축크기URL업데이트 주기
가지치기된LZ4< 5GiB다운로드매일
아카이브ZSTD~1.2 TB다운로드매주

가지치기된 스냅샷 사용

가지치기된 스냅샷에는 최근 블록체인 상태(최근 100-1000개 블록)가 포함됩니다.

1단계: 환경 변수 설정

# 서비스 이름 설정 (기본값: stable)
export SERVICE_NAME=stable

2단계: 노드 서비스 중지

# 실행 중인 노드 중지
sudo systemctl stop ${SERVICE_NAME}
 
# 중지되었는지 확인
sudo systemctl status ${SERVICE_NAME}

3단계: 현재 데이터 백업 (선택 사항)

# 백업 디렉토리 생성
mkdir -p ~/stable-backup
 
# 현재 상태 백업 (선택 사항, 상당한 공간 필요)
cp -r ~/.stabled/data ~/stable-backup/

4단계: 가지치기된 스냅샷 다운로드 및 추출

메인넷
# 종속성 설치
sudo apt install -y wget zstd pv
 
# 스냅샷 디렉토리 생성
mkdir -p ~/snapshot
cd ~/snapshot
 
# 진행 상황과 함께 가지치기된 스냅샷 다운로드
wget -c https://stable-data-dist.s3.us-east-1.amazonaws.com/mainnet/snapshots/snapshot.tar.lz4
 
# 오래된 데이터 제거
rm -rf ~/.stabled/data/*
 
# 진행 표시와 함께 스냅샷 추출
pv stable_pruned.tar.zst | zstd -d -c | tar -xf - -C ~/.stabled/
 
# pv 없이 대체 추출
zstd -d stable_pruned.tar.zst -c | tar -xvf - -C ~/.stabled/
 
# 정리
rm stable_pruned.tar.zst

5단계: 노드 다시 시작

# 노드 시작
sudo systemctl start ${SERVICE_NAME}
 
# 상태 확인
sudo systemctl status ${SERVICE_NAME}
 
# 로그 모니터링
sudo journalctl -u stabled -f

아카이브 스냅샷 사용

아카이브 스냅샷에는 완전한 블록체인 기록이 포함됩니다.

1단계: 시스템 준비

# 노드 중지
sudo systemctl stop ${SERVICE_NAME}
 
# 종속성 설치
sudo apt install -y wget zstd pv
 
# 사용 가능한 디스크 공간 확인 (스냅샷 크기의 2배 필요)
df -h ~/.stabled

2단계: 아카이브 스냅샷 다운로드 및 추출

메인넷
# 작업 디렉토리 생성
mkdir -p ~/snapshot
cd ~/snapshot
 
# 아카이브 스냅샷 다운로드
wget -c https://stable-data-dist.s3.us-east-1.amazonaws.com/mainnet/snapshots/stable_archive.tar.zst
 
# 오래된 데이터 지우기
rm -rf ~/.stabled/data/*
 
# 더 나은 성능을 위해 고용량 메모리로 추출
pv stable_archive.tar.zst | zstd -d --long=31 --memory=2048MB -c - | tar -xf - -C ~/.stabled/
 
# 대안: 표준 추출
zstd -d --long=31 stable_archive.tar.zst -c | tar -xvf - -C ~/.stabled/
 
# 정리
rm stable_archive.tar.zst

3단계: 노드 시작

# 서비스 시작
sudo systemctl start ${SERVICE_NAME}
 
# 동기화 상태 확인
curl -s localhost:26657/status | jq '.result.sync_info'

자신만의 스냅샷 생성

수동 스냅샷 생성

# 노드 중지
sudo systemctl stop ${SERVICE_NAME}
 
# 스냅샷 아카이브 생성
cd ~/.stabled
tar -cf - data/ | lz4 -9 > ~/stable-snapshot-$(date +%Y%m%d).tar.lz4
 
# 체크섬 생성
sha256sum ~/stable-snapshot-*.tar.lz4 > checksums.txt
 
# 노드 다시 시작
sudo systemctl start ${SERVICE_NAME}

자동 스냅샷 스크립트

#!/bin/bash
# snapshot.sh - 자동 스냅샷 생성
 
# 구성
SNAPSHOT_DIR="/var/snapshots"
STABLED_HOME="$HOME/.stabled"
KEEP_DAYS=7
 
# 스냅샷 디렉토리 생성
mkdir -p $SNAPSHOT_DIR
 
# 노드 중지
sudo systemctl stop ${SERVICE_NAME}
 
# 스냅샷 생성
SNAPSHOT_NAME="stable-snapshot-$(date +%Y%m%d-%H%M%S).tar.lz4"
tar -cf - -C $STABLED_HOME data/ | lz4 -9 > $SNAPSHOT_DIR/$SNAPSHOT_NAME
 
# 메타데이터 생성
cat > $SNAPSHOT_DIR/latest.json <<EOF
{
  "filename": "$SNAPSHOT_NAME",
  "height": "$(cat $STABLED_HOME/data/cs.wal/wal | grep height | tail -1 | awk '{print $2}' | tr -d ',')",
  "timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
  "size": "$(du -h $SNAPSHOT_DIR/$SNAPSHOT_NAME | awk '{print $1}')",
  "checksum": "$(sha256sum $SNAPSHOT_DIR/$SNAPSHOT_NAME | awk '{print $1}')"
}
EOF
 
# 오래된 스냅샷 정리
find $SNAPSHOT_DIR -name "stable-snapshot-*.tar.lz4" -mtime +$KEEP_DAYS -delete
 
# 노드 다시 시작
sudo systemctl start ${SERVICE_NAME}
 
echo "스냅샷 생성됨: $SNAPSHOT_DIR/$SNAPSHOT_NAME"

자동 스냅샷 예약

# crontab에 추가 (매주 일요일 오전 2시)
(crontab -l ; echo "0 2 * * 0 /usr/local/bin/snapshot.sh") | crontab -

확인 및 문제 해결

스냅샷 무결성 확인

# 스냅샷 체크섬 확인
sha256sum -c checksums.txt
 
# 추출 확인
tar -I lz4 -tvf snapshot.tar.lz4 | head -20
 
# 스냅샷 크기 테스트
tar -I lz4 -tvf snapshot.tar.lz4 | wc -l

일반적인 문제

문제: 스냅샷 추출 실패

# 디스크 공간 확인
df -h
 
# 파일 무결성 확인
lz4 -t snapshot.tar.lz4
 
# 다른 추출 방법 시도
lz4 -d snapshot.tar.lz4 snapshot.tar
tar -xvf snapshot.tar -C ~/.stabled/

문제: 스냅샷 후 노드가 시작되지 않음

# 권한 확인
ls -la ~/.stabled/data/
 
# 권한 수정
sudo chown -R $USER:$USER ~/.stabled/
 
# 제네시스 파일 확인
sha256sum ~/.stabled/config/genesis.json
 
# 재설정 후 다시 시도
stabled comet unsafe-reset-all
# 그런 다음 스냅샷 복원

문제: 상태 동기화 실패

# 다른 RPC 서버 시도
# config.toml을 대체 RPC로 업데이트
 
# 청크 가져오기 수를 늘림
sed -i 's/chunk_fetchers = .*/chunk_fetchers = 8/' ~/.stabled/config/config.toml
 
# 지우고 다시 시도
stabled comet unsafe-reset-all --keep-addr-book

성능 최적화

다운로드 최적화

# 병렬 다운로드를 위해 aria2 사용
aria2c -x 16 -s 16 https://stable-data-dist.s3.us-east-1.amazonaws.com/testnet/snapshots/snapshot.tar.lz4
 
# 압축과 함께 wget 사용
wget --header="Accept-Encoding: gzip" -c URL
 
# 중단된 다운로드 재개
curl -C - -o snapshot.tar.lz4 URL

추출 최적화

# 병렬 추출 사용
pigz -d -c snapshot.tar.gz | tar -xf - -C ~/.stabled/
 
# 추출 진행 상황 모니터링
pv snapshot.tar.lz4 | tar -I lz4 -xf - -C ~/.stabled/
 
# zstd에 더 많은 메모리 사용
zstd -d --long=31 --memory=4096MB archive.tar.zst

모범 사례

  1. 데이터를 교체하기 전에 항상 검증자 키를 백업하십시오.
  2. 스냅샷을 추출하기 전에 체크섬을 확인하십시오.
  3. 추출 중에 디스크 공간을 모니터링하십시오 (스냅샷 크기의 2배 필요).
  4. 가능하면 공식 스냅샷을 사용하십시오.
  5. 비프로덕션 환경에서 먼저 스냅샷을 테스트하십시오.
  6. 아카이브 노드에 대해 정기적인 스냅샷을 예약하십시오.
  7. 감사 추적을 위해 스냅샷 소스를 문서화하십시오.

다음 단계