Phase 3: Storage Management
Bài 3.1: Tổng quan các loại storage
Lý thuyết cốt lõi
Proxmox hỗ trợ 3 nhóm storage:
Nhóm A — Local (không shared):
- dir: folder trên filesystem (ext4/xfs)
- lvm: LVM logical volumes
- lvm-thin: thin provision với snapshot
- zfs: dataset trên ZFS pool (snapshot + replication)
- btrfs: subvolume btrfs (preview)
Nhóm B — Shared (nhiều node cùng truy cập):
- nfs: NFS server (simple, phổ biến)
- cifs: SMB/CIFS (ít dùng cho Linux)
- iscsi: block-level SAN
- iscsidirect: direct device mapping
- cephfs: Ceph filesystem
- rbd: Ceph block device (object)
- glusterfs: deprecated trong VE 9
Nhóm C — Object:
- pbs: Proxmox Backup Server (chỉ cho backup)
- S3 (preview, VE 9.1)
Content types mỗi storage support:
| Content | Mô tả |
|---|---|
| images | VM disk |
| rootdir | LXC container root |
| vztmpl | LXC template |
| iso | ISO install file |
| backup | vzdump archive |
| snippets | cloud-init snippets |
File config: /etc/pve/storage.cfg
Bài tập thực hành
List storage hiện tại:
pvesm status
pvesm list local
cat /etc/pve/storage.cfg
Kết quả đầu ra
Name Type Status Total Used Available
local dir active 98123456 12345678 85777778
local-zfs zfspool active 2000000000 456789012 1543210988
Ứng dụng thực tế
Chọn storage theo use case:
- VM production ít thay đổi: Ceph RBD (HA + snapshot)
- VM dev/test: local ZFS (rẻ, snapshot nhanh)
- File share giữa VM: CephFS hoặc NFS
- Backup: PBS (dedup)
Bài 3.2: ZFS — snapshot, replication, tuning
Lý thuyết cốt lõi
ZFS là filesystem copy-on-write với:
- Checksum mỗi block (phát hiện silent corruption)
- Snapshot instant (COW, không tốn space ban đầu)
- Send/receive (replication giữa node)
- Compression inline (lz4/zstd)
- Deduplication (tốn RAM, ít dùng)
RAID level ZFS:
| Level | Min disk | Tolerance | Use case |
|---|---|---|---|
| single | 1 | 0 | Lab |
| mirror | 2 | 1 | Boot disk |
| raidz1 | 3 | 1 | Budget |
| raidz2 | 4 | 2 | Production |
| raidz3 | 5 | 3 | Archive |
| stripe | 2+ | 0 | Scratch/temp |
RAM rule: 1 GB RAM cho mỗi 1 TB disk (ARC cache). Ví dụ 4 × 4 TB = 16 TB → cần ~16 GB RAM riêng cho ZFS.
Bài tập thực hành
Tạo pool mới từ 4 disk:
# 1. List disk
lsblk
fdisk -l | grep -i '^Disk /dev/sd[b-z]'
# 2. Tạo pool raidz2 với compression zstd
zpool create -f -o ashift=12 \
-O compression=zstd \
-O atime=off \
-O xattr=sa \
tank raidz2 /dev/sd[bcde]
# 3. Verify
zpool status tank
zfs list
# 4. Add vào Proxmox (Web GUI: Datacenter > Storage > Add > ZFS)
# Hoặc CLI:
pvesm add zfspool tank-pool --pool tank --content images,rootdir
Snapshot + replication giữa 2 node:
# Node pve01 tạo snapshot VM 100
zfs snapshot tank/vm-100-disk-0@2026-04-22-1200
# Replicate sang pve02 (dùng feature built-in của Proxmox cluster)
# Web GUI: Datacenter > Replication > Add
# Hoặc CLI:
pvesr create-local-job 100-0 pve02 --schedule '*/15' --rate 100
Kết quả đầu ra
$ zpool status tank
pool: tank
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
errors: No known data errors
$ zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 412K 10.3T 35K /tank
tank/vm-100-disk-0 3.2G 10.3T 3.2G -
Troubleshooting
- ZFS dùng quá nhiều RAM: giới hạn ARC qua
/etc/modprobe.d/zfs.conf:
text
options zfs zfs_arc_max=17179869184 # 16 GB
→ update-initramfs -u && reboot
- Disk degraded:
zpool replace tank sdb /dev/sdf→ resilver tự chạy - Pool full: giữ lại ≥ 15% free space, nếu không performance drop mạnh
Ứng dụng thực tế
Tình huống: Cần DR site cách 50 km, không muốn mua storage array đắt tiền.
Giải pháp: 2 node Proxmox độc lập (DC chính + DR), mỗi node ZFS raidz2. Dùng pvesr replicate VM mỗi 5 phút qua VPN site-to-site. Khi DC chính down, promote DR → RTO ~10 phút.
Lợi ích: DR cost thấp, không cần array hardware replication, RPO 5 phút.
Bài 3.3: Ceph — triển khai 3-node hyperconverged
Lý thuyết cốt lõi
Ceph = distributed storage cluster, có 3 interface:
- RBD (RADOS Block Device): block storage cho VM → dùng cho Proxmox
- CephFS: POSIX filesystem
- RGW: S3/Swift object storage
Components:
| Component | Vai trò | Số lượng khuyến nghị |
|---|---|---|
| MON (Monitor) | Quorum, cluster map | 3 (lẻ) |
| MGR (Manager) | Dashboard, metrics | 2 |
| OSD (Object Storage Daemon) | 1 daemon / 1 disk | 8+ per node |
| MDS (Metadata) | Chỉ cho CephFS | 2 |
Replication vs Erasure Coding:
- Replication size=3: dữ liệu copy 3 bản → 1/3 usable
- Erasure code k=2,m=1: tương tự RAID5 → 2/3 usable nhưng chậm hơn
Ceph Squid 19.2 (VE 9): version default, hỗ trợ BlueStore compression (snappy/zstd).
Bài tập thực hành
Prerequisite: 3 node đã join cluster (xem Phase 7), mỗi node có 4+ disk trống.
Trên node 1 (init cluster):
# 1. Install Ceph
pveceph install --repository no-subscription --version squid
# 2. Init cluster với public + cluster network
pveceph init --network 10.100.0.0/24 --cluster-network 10.200.0.0/24
# 3. Tạo MON trên 3 node
pveceph mon create # trên pve01
# rồi SSH pve02: pveceph mon create
# rồi SSH pve03: pveceph mon create
# 4. Tạo MGR (2 cái là đủ)
pveceph mgr create
# 5. Tạo OSD từ mỗi disk trống
pveceph osd create /dev/sdb
pveceph osd create /dev/sdc
pveceph osd create /dev/sdd
pveceph osd create /dev/sde
# → lặp lại trên pve02, pve03
# 6. Tạo pool RBD
pveceph pool create vm-pool --size 3 --min_size 2 --pg_autoscale_mode on
# 7. Add pool làm storage Proxmox
pvesm add rbd ceph-rbd --pool vm-pool --content images,rootdir \
--krbd 0 --monhost '10.100.0.11 10.100.0.12 10.100.0.13'
Kết quả đầu ra
$ ceph -s
cluster:
id: abcdef12-3456-7890
health: HEALTH_OK
services:
mon: 3 daemons, quorum pve01,pve02,pve03
mgr: pve01(active), standbys: pve02
osd: 12 osds: 12 up, 12 in
data:
pools: 2 pools, 257 pgs
objects: 0 objects, 0 B
usage: 12 GiB used, 45 TiB / 45 TiB avail
pgs: 257 active+clean
Troubleshooting
| Trạng thái | Nguyên nhân | Fix |
|---|---|---|
HEALTH_WARN: 1 osd down |
OSD daemon chết | systemctl restart [email protected] |
HEALTH_ERR: osds near full |
OSD > 85% | Thêm OSD hoặc xoá data |
slow ops |
Network latency cao | Check MTU, bond mode, switch |
clock skew |
Thời gian node lệch | Sync NTP chặt chẽ |
PG inconsistent |
Silent corruption | ceph pg repair <pg-id> |
Ứng dụng thực tế
Tình huống: 50 VM cần HA storage, không muốn mua SAN FC.
Giải pháp: 3 node HCI với Ceph, mỗi node 8 × 3.84 TB NVMe enterprise → 92 TB raw → 30 TB usable. Network Ceph riêng 2 × 25 GbE LACP, MTU 9000.
Lợi ích: Tiết kiệm ~50000 USD so với SAN Dell PowerStore, scale linear khi thêm node.