🏠hoatranlab.io.vn 💬Zalo: 0917516878 📞0917516878 ✉️[email protected]

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.