Nỗi lo về Storage khi build Proxmox Cluster
Anh em nào build Proxmox Cluster chắc chắn đều hướng tới tính năng High Availability (HA) để hệ thống luôn ‘sống’. Nhưng muốn HA, bạn bắt buộc phải có Shared Storage hoặc Distributed Storage. Nếu không, khi một node vật lý đột tử, toàn bộ máy ảo (VM) trên đó sẽ ‘chết đứng’ vì dữ liệu vẫn kẹt cứng trong ổ cứng cục bộ của node lỗi.
Trong dự án homelab với 12 VM và container, mình từng định dùng Ceph vì độ nổi tiếng của nó. Tuy nhiên, Ceph cực kỳ ‘ngốn’ tài nguyên. Nó yêu cầu ít nhất 3 node, mỗi node ngốn khoảng 1GB RAM cho mỗi 1TB dữ liệu lưu trữ, chưa kể CPU overhead rất lớn. Với những dàn máy cỏ hoặc server đời cũ, chạy Ceph giống như vác búa tạ đi đóng đinh vậy — quá nặng nề và lãng phí.
Sau nhiều đêm vọc vạch, mình đã chuyển sang LINSTOR. Đây là giải pháp quản lý DRBD (Distributed Replicated Block Device) cực kỳ tinh gọn nhưng hiệu năng lại rất đáng nể.
Bảng so sánh: Tại sao nên chọn LINSTOR?
Dưới đây là bảng so sánh thực tế để bạn thấy sự khác biệt giữa LINSTOR và các đối thủ:
| Tiêu chí | Local Storage | Ceph (RBD) | LINSTOR (DRBD) |
|---|---|---|---|
| Tính sẵn sàng (HA) | Không | Rất cao (3+ node) | Cao (chỉ cần 2 node) |
| Hiệu năng (IOPS) | Native (100%) | Thấp (~50-70%) | Rất cao (~90-95% Native) |
| RAM chiếm dụng | Gần như 0 | 4GB – 16GB+ | Dưới 500MB |
| Độ phức tạp | Dễ | Rất khó | Trung bình |
Cơ chế hoạt động của LINSTOR
LINSTOR không trực tiếp lưu trữ data. Nó đóng vai trò ‘tổng đài’ điều phối DRBD bên dưới. DRBD sẽ copy dữ liệu theo thời gian thực giữa các ổ cứng qua mạng LAN.
- Tốc độ: Nhờ hoạt động ở tầng Block-level, dữ liệu được đẩy đi ngay khi có lệnh ghi, giảm thiểu độ trễ.
- Tiết kiệm: Bạn chỉ cần 2 node là đủ để chạy HA, thay vì bắt buộc 3 node như Ceph.
- Linh hoạt: Tận dụng tốt cả LVM-Thin lẫn ZFS.
Chuẩn bị phần cứng
Để triển khai mượt mà, bạn nên có:
- Ít nhất 2 node Proxmox (mình dùng 3 node:
pve-01,pve-02,pve-03). - Một ổ cứng trống trên mỗi node (ví dụ:
/dev/sdbdung lượng 240GB). - Mạng 1Gbps là tối thiểu, nhưng nếu có 10Gbps thì LINSTOR sẽ chạy ‘xé gió’.
Các bước triển khai chi tiết
1. Cài đặt Repository
LINSTOR không nằm trong kho ứng dụng mặc định. Bạn cần thêm repo chính chủ từ LINBIT bằng các lệnh sau trên tất cả các node:
wget -O- https://packages.linbit.com/package-signing-pubkey.asc | gpg --dearmor > /usr/share/keyrings/linbit-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/linbit-keyring.gpg] https://packages.linbit.com/proxmox-8/ proxmox-8 v9" > /etc/apt/sources.list.d/linbit.list
apt update
2. Cài đặt Controller và Satellite
Hệ thống gồm hai phần: Controller (đầu não điều khiển) và Satellite (nhân viên thực thi tại mỗi node).
Trên node chính (pve-01):
apt install linstor-controller linstor-satellite linstor-client drbd-utils
Trên các node vệ tinh (pve-02, pve-03):
apt install linstor-satellite drbd-utils
Sau đó, hãy kích hoạt dịch vụ để chúng tự khởi động cùng hệ thống:
systemctl enable --now linstor-controller linstor-satellite
3. Khởi tạo Cluster và Storage Pool
Tại node Controller, bạn thực hiện kết nối các node vào một mạng lưới chung:
linstor node create pve-01 192.168.1.10 --node-type Combined
linstor node create pve-02 192.168.1.11 --node-type Satellite
linstor node create pve-03 192.168.1.12 --node-type Satellite
Tiếp theo là tạo nơi chứa dữ liệu. Mình chọn LVM-Thin vì nó hỗ trợ snapshot cực nhanh:
# Tạo Volume Group từ ổ cứng trống
vgcreate drbd_vg /dev/sdb
# Khai báo pool cho LINSTOR quản lý
linstor storage-pool create lvmthin pve-01 storage_data drbd_vg/thin_pool
linstor storage-pool create lvmthin pve-02 storage_data drbd_vg/thin_pool
linstor storage-pool create lvmthin pve-03 storage_data drbd_vg/thin_pool
4. Kết nối với giao diện Proxmox
Để Proxmox tự động ‘gọi’ LINSTOR khi tạo VM, bạn cần cài plugin tích hợp:
apt install linstor-proxmox
Truy cập Web GUI của Proxmox, vào Datacenter -> Storage -> Add -> LINSTOR. Điền IP của node Controller và tên pool storage_data vào. Đừng quên tạo Resource Group bằng lệnh:
linstor resource-group create proxmox_group --storage-pool storage_data --place 2
Mẹo nhỏ: --place 2 nghĩa là dữ liệu luôn có 2 bản sao. Nếu bạn muốn an toàn tuyệt đối trên cả 3 node, hãy sửa thành số 3.
Kiểm chứng: Live Migration trong ‘chớp mắt’
Khi cấu hình xong, mình cài thử Ubuntu Server lên LINSTOR-Storage. Kết quả thực sự ấn tượng. Khi mình nhấn Migrate máy ảo từ node 1 sang node 2, quá trình diễn ra chỉ mất đúng 4.2 giây.
Trong suốt quá trình chuyển giao, lệnh ping từ máy ngoài vào VM không hề bị ngắt quãng. Vì dữ liệu đã được đồng bộ song song từ trước, Proxmox chỉ cần chuyển nốt phần dữ liệu trong RAM là xong. Đây là giải pháp hoàn hảo cho những ai cần sự ổn định mà không có kinh phí mua dàn Storage chuyên dụng hàng trăm triệu.
Ba lưu ý ‘sống còn’ khi vận hành
- Băng thông mạng: Mọi thao tác ghi đĩa đều phải đẩy qua mạng. Nếu card mạng bị nghẽn, VM sẽ bị ‘lag’ ngay lập tức. Hãy dùng ít nhất 2 card mạng để tách biệt traffic quản lý và traffic data.
- Hiện tượng Split-brain: Nếu 2 node mất kết nối nhưng vẫn chạy, chúng có thể ghi đè dữ liệu lẫn nhau. Hãy đảm bảo cấu hình Quorum trên Proxmox chuẩn xác để tránh thảm họa này.
- Cập nhật Kernel: DRBD chạy trực tiếp trong nhân Linux. Mỗi khi chạy
apt upgradevà lên kernel mới, hãy kiểm tra xem module DRBD đã được build lại qua DKMS chưa nhé.
Tóm lại, LINSTOR là lựa chọn ‘ăn chắc mặc bền’ cho hệ thống vừa và nhỏ. Nó mang lại sức mạnh của lưu trữ phân tán mà không đòi hỏi phần cứng khủng như Ceph.

