Proxmox 스토리지 ZFS
Proxmox에서 VM/LXC 디스크를 안정적으로 운영하기 위한 스토리지 기준.
Proxmox에서 VM/LXC 디스크를 안정적으로 운영하기 위한 스토리지 기준.
Proxmox 스토리지 종류
Proxmox는 여러 스토리지 backend를 사용할 수 있다.
| 종류 | 용도 | 특징 |
|---|---|---|
| Directory | ISO, backup, 간단한 disk image | 이해하기 쉬움 |
| LVM/LVM-thin | VM disk | 성능 좋고 단순함 |
| ZFS | VM disk, snapshot, replication | 기능 풍부, 메모리 필요 |
| NFS | ISO, 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 디스크 저장 기준
| 데이터 | 권장 위치 |
|---|---|
| ISO | directory 또는 NFS |
| VM disk | ZFS/LVM-thin |
| LXC rootfs | ZFS/LVM-thin |
| Backup | PBS 또는 외부 NFS |
| Template | local 또는 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 내구성을 별도로 검토한다.
장애 대응 기본
zpool status로 degraded 확인- 장애 디스크 serial 확인
- 백업 상태 확인
- 디스크 교체
zpool replace- resilver 완료 확인
- scrub 수행
장애 상태에서 급하게 여러 명령을 치는 것보다, 디스크 식별을 확실히 하는 것이 먼저다.
관련 노트
- 상위: 00-MOC-Proxmox
- 백업: 03-01-Proxmox-백업-복구
- 클러스터: 03-02-Proxmox-클러스터링
- Linux: 02-05-디스크-관리, 02-06-LVM-구성, 02-07-RAID-구성