비트코인 노드 동기화 중 du 명령어 에러가 발생하는 이유

비트코인이나 비트코인SV(BSV) 노드를 직접 운영할 때, 싱크 진행 상황을 확인하기 위해 du -sh 같은 명령어를 사용하는 경우가 많다. 이때 종종 du: cannot access './blocks/index/xxxxx.ldb': No such file or directory와 같은 오류 메시지가 반복적으로 출력된다. 겉으로 보기에는 디스크 손상이나 파일 시스템 문제처럼 보일 수 있으나, 실제로는 노드 소프트웨어 특성에 의한 정상적인 현상이다. 이 글에서는 이 현상의 본질적 이유를 깊이 있게 설명하고자 한다.

블록체인 노드의 동기화 과정

비트코인 계열 노드는 블록체인 네트워크에 참여할 때 먼저 ‘헤더 동기화’를 수행한 뒤, 전체 블록 데이터를 다운로드하고, 마지막으로 블록 내 트랜잭션을 인덱싱하는 과정을 거친다. 이 과정은 블록체인의 무결성을 검증하고, 추후 요청되는 데이터에 빠르게 응답할 수 있도록 준비하는 단계다.

특히 blocks/index/ 디렉토리는 이 과정 중 생성되는 LevelDB 기반 인덱스 파일(.ldb 파일들)을 저장하는 영역이다. 이 파일들은 트랜잭션 검색, 블록 검증 등을 빠르게 하기 위한 데이터베이스 역할을 수행한다.

LevelDB와 파일 생성/삭제

비트코인 노드는 내부 인덱스를 관리하기 위해 LevelDB라는 경량 데이터베이스를 사용한다. LevelDB는 쓰기 최적화를 위해 데이터를 작은 파일로 나누어 저장하고, 일정 주기로 “Compaction(압축)”이라는 과정을 통해 여러 파일을 병합한다. 이 과정 중 다음과 같은 일이 발생한다.

  • 새로운 .ldb 파일 생성
  • 기존 .ldb 파일 삭제
  • 파일 이름 변경 및 재배치

Compaction은 동기화가 활발히 진행될 때 빈번하게 일어나며, 이로 인해 디스크 상에서 파일이 생성되었다가 삭제되거나, 이름이 바뀌는 상황이 지속적으로 반복된다.

du 명령어와 타이밍 이슈

du는 디스크 사용량을 계산할 때 디렉토리를 순회하며 파일 크기를 읽는다. 그러나 비트코인 노드가 동시에 파일을 변경하고 있다면, du가 어떤 파일을 읽으려고 하는 순간 그 파일이 이미 삭제되었을 수 있다. 이 경우 du는 ‘No such file or directory’ 에러를 출력한다.

이는 파일 시스템이나 디스크 자체의 문제가 아니라, 단순히 읽으려던 파일이 존재하지 않게 되어 생기는 일시적 현상이다. 파일이 생성되고 삭제되는 매우 짧은 순간에 du가 접근을 시도했기 때문에 발생한다.

에러가 발생해도 괜찮은 이유

du 명령어가 에러를 뿜더라도 비트코인 노드에는 아무런 문제가 없다. 노드는 설계상 이러한 파일 생성/삭제 과정을 정상적으로 처리하고 있으며, 이는 데이터 무결성이나 블록체인 검증에는 전혀 영향을 미치지 않는다.

오히려 싱크 과정이 활발히 이루어지고 있다는 신호로 볼 수도 있다. 실시간으로 인덱스 파일들이 생성되고 삭제되는 것은 노드가 정상적으로 데이터를 동기화하고 있음을 나타낸다.

정확한 디스크 사용량을 알고 싶을 때

만약 에러 없이 정확한 디스크 사용량을 측정하고 싶다면 다음과 같은 방법을 사용할 수 있다.

  • du 대신 df -h 명령어를 이용해 전체 파일 시스템 사용량을 본다.
  • 노드 동기화가 잠시 멈춘 타이밍을 노려 du를 실행한다.
  • 노드를 정지시킨 후(bitcoin-cli stop) 디스크를 체크한다.

이는 디스크 I/O 충돌을 피하고 안정적인 수치를 얻을 수 있게 해준다.

결론

비트코인 노드를 싱크하는 동안 du: cannot access 오류가 발생하는 것은 LevelDB의 컴팩션과 실시간 파일 관리 때문이며, 시스템 문제나 데이터 손상이 아니다. 노드가 정상적으로 작동하고 있다는 증거로 이해할 수 있으며, 특별한 조치를 취할 필요는 없다. 동기화가 완료되면 이 오류는 자연스럽게 사라진다.


코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다