방금 서비스를 시작했습니다. 사이트와 서비스는 아직 다듬는 중이라 부정확한 내용이나 미흡한 점이 있을 수 있습니다. 미리 양해 부탁드립니다. 오류를 발견하셨거나 예상대로 작동하지 않는 부분이 있나요? 알려 주시면 빠르게 고치겠습니다.

← 전체 프로젝트
KO
TAKT 밖의 작업

zfs

OpenZFS의 포크입니다. 기본 브랜치는 업스트림 master를 그대로 반영하고, 프로젝트 자체의 작업은 별도 브랜치에 있습니다. RAIDZ 제자리 재구성 프로토타입과 이를 업스트림에 제안하기 위한 자료입니다.

  • OpenZFS
  • RAIDZ
  • C
상태
저장소의 표현으로는 완성된 기능이 아니라 검증된 프로토타입입니다. 프로덕션용이 아니며 디스크 형식도 확정되지 않았습니다. 디바이스 손실 매트릭스, 크래시 컷포인트, KASAN, 장시간 소크 테스트를 거쳤고, 대규모 풀에서의 검증과 전체 ZTS 실행은 아직 남아 있습니다.
라이선스
업스트림 OpenZFS와 같은 CDDL. 예외는 개별 소스 파일에 명시되어 있습니다.
플랫폼
Linux. Ubuntu QEMU/KVM 실험용 VM에서 zfs-2.4.4 기반 빌드와 현재 master 기반 빌드로 테스트했습니다.

해결하는 문제

실행 중인 가상 머신과 컨테이너가 사용하는 풀에서 지금 RAIDZ 중복도를 바꾸거나 디스크를 제거하려면 유지보수 시간이 필요합니다. 게스트를 옮기고, 풀을 내보내고, 다시 구성한 뒤, 모든 것을 되돌려야 합니다. OpenZFS 2.3의 RAIDZ 확장은 온라인 너비 확장만 추가했습니다. 이 작업의 목표는 풀 자체의 여유 공간만 사용하고 스냅샷과 클론을 유지하면서, 운영 중인 풀의 지오메트리를 제자리에서 바꾸는 것입니다.

주요 기능

  • zpool reparity는 RAIDZ 패리티를 제자리에서 높이거나 낮춥니다(raidz1 ↔ raidz2 ↔ raidz3). --online을 쓰면 데이터셋이 마운트된 상태로 유지되며, --async, --status, --cancel로 백그라운드에서 실행하고 관리합니다.
  • 새 기능 플래그 하나(작업용 이름 com.openzfs:raidz_parity_epochs) 뒤에 있는 vdev별 레이아웃 에포크 테이블. 모든 블록은 기록될 때의 지오메트리로 읽히고 재구성됩니다.
  • 페일 클로즈(fail-closed) 커밋: 이전 패리티로 남은 블록이 하나도 없다는 것을 전수 조사로 확인한 뒤에만 새 패리티가 적용됩니다. 그렇지 않으면 스윕이 재개되며, 크래시 후에도 마찬가지입니다.
  • 오프라인 zhack 도구: RAIDZ vdev에서 디스크 제거(N → N−1), 스냅샷과 클론이 있는 상태에서의 재구성, 기존 데이터의 체크섬 재계산과 재압축. 뒤의 두 가지는 실험적 기능입니다.
  • 새 명령에 대한 ZTS 기능 테스트와 man 페이지. 업스트림 리뷰를 위해 준비한 RFC와 누적된 브랜치 시리즈.

작동 방식

각 최상위 RAIDZ vdev에 {start_txg, width, parity} 레코드를 추가만 하는 작은 테이블이 생깁니다. 형식은 기존 RAIDZ 확장 레코드와 같습니다. 블록의 지오메트리는 생성 txg로 정해지므로 이전 블록과 새 블록이 공존할 수 있습니다. 범위가 제한되고 크래시 후 재개할 수 있는 스윕이 일반적인 쓰기 시 복사(copy-on-write)로 기존 블록을 다시 씁니다. RAIDZ 행 인코딩, 블록 포인터 형식, ashift는 바뀌지 않습니다.

zpool reparity [--online | --async | --status | --cancel] [--target N] pool

요구 사항

  • RAIDZ vdev가 있는 풀. 기능 플래그는 비호환 유형이며 첫 재구성 때 활성화됩니다.
  • OpenZFS처럼 소스에서 빌드합니다. 브랜치 ozfs-pr/1-parity-epochs-recon, ozfs-pr/2-reparity-command, ozfs-pr/3-reshape-toolkit은 master 기반이고, feat/raidz-*는 zfs-2.4.4 기반입니다.
  • 디스크 제거와 오프라인 zhack 도구는 풀을 내보낸 상태에서만 사용할 수 있습니다.

이 페이지는 2026년 10월 기준 저장소의 README와 문서를 요약한 것입니다. 정확한 정보는 저장소 자체를 기준으로 합니다.