Proxmox 스토리지 ZFS

Proxmox에서 VM/LXC 디스크를 안정적으로 운영하기 위한 스토리지 기준.


Proxmox에서 VM/LXC 디스크를 안정적으로 운영하기 위한 스토리지 기준.

Proxmox 스토리지 종류

Proxmox는 여러 스토리지 backend를 사용할 수 있다.

종류용도특징
DirectoryISO, backup, 간단한 disk image이해하기 쉬움
LVM/LVM-thinVM disk성능 좋고 단순함
ZFSVM disk, snapshot, replication기능 풍부, 메모리 필요
NFSISO, backup, 공유 스토리지외부 NAS 연동 쉬움
iSCSI블록 스토리지별도 스토리지 장비 필요
Ceph클러스터 분산 스토리지3노드 이상에서 의미 있음

홈랩에서는 단일 노드면 ZFS 또는 LVM-thin, 여러 노드면 NFS/PBS/Ceph를 단계적으로 검토한다.

ZFS를 쓰는 이유

  • 체크섬 기반 데이터 무결성
  • 스냅샷과 롤백
  • 압축
  • send/receive 복제
  • mirror/raidz 구성
  • scrub을 통한 정기 검증

단점도 있다.

  • 메모리 사용량이 크다.
  • 디스크 구성을 나중에 바꾸기 어렵다.
  • consumer SSD에서는 쓰기 증폭과 내구성 이슈가 생길 수 있다.

ZFS pool 구성

구성특징추천 상황
single disk단순하지만 장애 취약실험용
mirror읽기 성능과 장애 대응 좋음홈랩 기본 추천
raidz1용량 효율디스크 3개 이상, 장애 1개 허용
raidz2안정성 높음디스크 4개 이상
stripe성능/용량 좋지만 위험임시 실험용만

[!warning] ZFS 구성 주의 pool 생성과 disk wipe는 데이터를 삭제한다. lsblk, zpool status, 디스크 serial을 확인한 뒤 작업한다.

기본 명령

# pool 상태
zpool status
zpool list

# dataset 목록
zfs list

# 스냅샷 목록
zfs list -t snapshot

# scrub 시작
zpool scrub <pool>

# scrub 상태 확인
zpool status <pool>

Proxmox 스토리지 확인

pvesm status
cat /etc/pve/storage.cfg

storage.cfg에는 Proxmox가 인식하는 스토리지 정의가 들어 있다.

zfspool: local-zfs
        pool rpool/data
        content rootdir,images
        sparse 1

VM 디스크 저장 기준

데이터권장 위치
ISOdirectory 또는 NFS
VM diskZFS/LVM-thin
LXC rootfsZFS/LVM-thin
BackupPBS 또는 외부 NFS
Templatelocal 또는 NFS

운영 데이터와 백업은 같은 물리 디스크에 두지 않는 것이 좋다. 같은 디스크에 있으면 디스크 장애 시 원본과 백업이 같이 사라진다.

ZFS dataset 설계

예시:

tank
├── vm
├── ct
├── iso
└── backup-temp

VM disk는 Proxmox가 zvol로 관리하는 경우가 많고, 일반 파일 저장은 dataset으로 나눠 관리한다.

압축

ZFS 압축은 대부분의 홈랩 워크로드에서 켜는 편이 유리하다.

zfs get compression
zfs set compression=lz4 <pool/dataset>

압축은 디스크 사용량을 줄이고, 경우에 따라 I/O도 줄인다. 이미 압축된 영상/이미지 파일은 효과가 적다.

스냅샷과 백업의 차이

구분스냅샷백업
위치같은 스토리지다른 스토리지 권장
목적빠른 롤백장애 복구
디스크 장애 대응약함강함
보관 기간짧게정책에 따라

스냅샷은 백업이 아니다. 디스크나 pool이 깨지면 스냅샷도 같이 위험해진다.

성능 체크

zpool iostat -v 1
iostat -xz 1
arc_summary

체크할 것:

  • 디스크 latency
  • pool 상태
  • ARC hit ratio
  • VM별 I/O 패턴
  • sync write 비중

DB나 로그성 워크로드가 많으면 sync write, SLOG, SSD 내구성을 별도로 검토한다.

장애 대응 기본

  1. zpool status로 degraded 확인
  2. 장애 디스크 serial 확인
  3. 백업 상태 확인
  4. 디스크 교체
  5. zpool replace
  6. resilver 완료 확인
  7. scrub 수행

장애 상태에서 급하게 여러 명령을 치는 것보다, 디스크 식별을 확실히 하는 것이 먼저다.

관련 노트

  • 상위: 00-MOC-Proxmox
  • 백업: 03-01-Proxmox-백업-복구
  • 클러스터: 03-02-Proxmox-클러스터링
  • Linux: 02-05-디스크-관리, 02-06-LVM-구성, 02-07-RAID-구성