이 가이드는 스냅샷 및 상태 동기화를 사용하여 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=stable2단계: 노드 서비스 중지
# 실행 중인 노드 중지
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.zst5단계: 노드 다시 시작
# 노드 시작
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 ~/.stabled2단계: 아카이브 스냅샷 다운로드 및 추출
메인넷
# 작업 디렉토리 생성
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.zst3단계: 노드 시작
# 서비스 시작
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모범 사례
- 데이터를 교체하기 전에 항상 검증자 키를 백업하십시오.
- 스냅샷을 추출하기 전에 체크섬을 확인하십시오.
- 추출 중에 디스크 공간을 모니터링하십시오 (스냅샷 크기의 2배 필요).
- 가능하면 공식 스냅샷을 사용하십시오.
- 비프로덕션 환경에서 먼저 스냅샷을 테스트하십시오.
- 아카이브 노드에 대해 정기적인 스냅샷을 예약하십시오.
- 감사 추적을 위해 스냅샷 소스를 문서화하십시오.

