피드로 돌아가기
Dev.toInfrastructure
원문 읽기
디스크 물리 오프셋 정렬과 Deduplication으로 구현한 고속 복사 도구
I built a faster alternative to cp and rsync — here's how it works
AI 요약
Context
cp -r 명령의 디렉토리 순차 읽기 방식에 따른 HDD 헤드 이동 오버헤드 발생. SFTP 프로토콜의 높은 통신 비용으로 인한 원격 전송 속도 저하. 복사 전 대상 저장소의 여유 공간 확인 불가 문제.
Technical Solution
- FIEMAP, fcntl, FSCTL을 활용한 파일별 물리 디스크 오프셋 식별 및 블록 위치 기반의 순차 읽기 전략
- xxHash-128 및 SHA-256 기반의 파일 해싱을 통한 중복 데이터 식별 및 Hard Link 생성 방식의 Deduplication 적용
- SQLite 데이터베이스를 활용한 해시 값 저장 및 이전 복사 이력 기반의 중복 파일 스킵 로직 구현
- SFTP 대신 raw SSH 채널을 통해 약 100MB 단위의 tar 배치 파일을 스트리밍하는 전송 구조
- 원격지에서 tar xf - 명령을 통한 즉각적인 디스크 쓰기로 임시 파일 생성 및 프로토콜 오버헤드 제거
Impact
- 92K 파일 대상 Local 복사 시 378.9 MB 데이터 절감 및 17.9초 소요
- LAN 환경 원격 전송 시 SFTP 대비 3배 빠른 속도 달성
- 92K 파일 중 46,951개의 중복 파일을 감지하여 378.5 MB 전송량 절감
Key Takeaway
논리적 파일 구조가 아닌 물리적 저장 위치를 기반으로 I/O 패턴을 최적화하여 하드웨어 성능을 극대화하는 접근 방식.
실천 포인트
다량의 소형 파일을 HDD로 복사하거나 SFTP 전송 속도가 병목인 환경에서 물리 오프셋 정렬 및 tar 스트리밍 방식 검토