Longhorn là gì? Triển khai Storage an toàn cho Kubernetes trên VPS (K3s)

Tác giả: Trần Thảo 31 tháng 03, 2026

Khi triển khai Kubernetes (K8s) trên các hệ thống VPS giá rẻ hoặc Homelab, vấn đề nan giải nhất thường không nằm ở sức mạnh tính toán (CPU/RAM) mà là Lưu trữ dữ liệu (Storage). Ổ cứng cục bộ (Local Disk) của VPS tiềm ẩn rủi ro rất lớn: nếu Node gặp sự cố phần cứng hoặc nhà cung cấp thực hiện bảo trì, dữ liệu của bạn có nguy cơ bị mất vĩnh viễn.

Sự kết hợp giữa K3s (Kubernetes distribution tối ưu nhẹ) và Longhorn chính là lời giải cho bài toán này. Tuy nhiên, việc triển khai trên tài nguyên hạn chế đòi hỏi sự am hiểu sâu sắc về kiến trúc để tránh các lỗi crash hệ thống.

Bài viết này sẽ giải thích tường tận Longhorn là gì, đồng thời hướng dẫn bạn từng bước xây dựng một hệ thống lưu trữ phân tán an toàn, chuẩn kỹ thuật ngay trên nền tảng VPS chi phí thấp.

Mô hình bảo mật điện toán đám mây

Longhorn là gì? Kiến trúc Microservices cho Block Storage

Để hiểu bản chất, chúng ta cần định nghĩa chính xác:

Longhorn là một hệ thống lưu trữ khối phân tán (Distributed Block Storage) mã nguồn mở, được thiết kế chuyên biệt cho Kubernetes (Cloud-native).

Khác với các hệ thống lưu trữ truyền thống cồng kềnh, Longhorn áp dụng kiến trúc Microservices. Cụ thể:

  • Longhorn Engine: Với mỗi Volume (ổ đĩa) bạn tạo ra, Longhorn sẽ khởi chạy một “Engine” riêng biệt (làm Controller) quản lý volume đó. Điều này giúp cô lập lỗi: nếu một Engine gặp sự cố, chỉ duy nhất volume đó bị ảnh hưởng, toàn bộ hệ thống còn lại vẫn hoạt động bình thường.
  • Replicas (Bản sao): Dữ liệu được sao chép đồng bộ (synchronously replicated) ra nhiều bản và phân tán trên các Node khác nhau.
  • Data Plane & Control Plane: Longhorn tách biệt rõ ràng giữa luồng dữ liệu và luồng quản lý thông qua Longhorn Manager (DaemonSet chạy trên mỗi Node) và Longhorn UI.

Tại sao Longhorn là mảnh ghép hoàn hảo cho K3s?

K3s được tối ưu hóa để loại bỏ các thành phần dư thừa của K8s, nhắm đến Edge Computing và IoT. Tương tự, Longhorn có mức tiêu thụ tài nguyên (footprint) nhỏ hơn nhiều so với Ceph hay GlusterFS, đồng thời tích hợp sẵn khả năng Disaster Recovery (DR) mà không cần cấu hình phức tạp. Đây là cặp đôi lý tưởng cho hạ tầng VPS có ngân sách hạn hẹp.

So sánh Longhorn với các giải pháp Storage khác

Tại sao không dùng Rook/Ceph hay đơn giản là Local Path có sẵn của K3s? Bảng so sánh dưới đây sẽ giúp bạn đưa ra quyết định đúng đắn cho hạ tầng Cloud VPS:

Đặc điểm Longhorn Rook (Ceph) Local Path (K3s Default)
Mức tiêu thụ tài nguyên Trung bình (Nhẹ hơn Ceph) Rất cao (Nặng CPU/RAM) Rất thấp (Gần như bằng 0)
Độ phức tạp Dễ (Có UI trực quan) Khó (Cần kiến thức sâu) Rất dễ (Cài sẵn)
Cơ chế sao lưu Replication đa Node Replication đa Node Không (Rủi ro cao)
Backup ra S3 Tích hợp sẵn (Dễ dùng) Tích hợp sẵn (Phức tạp) Không hỗ trợ
Phù hợp nhất VPS giá rẻ, Edge, Homelab Enterprise Cluster lớn Test, Node đơn lẻ

Kết luận: Với VPS giá rẻ hoặc môi trường Lab, Longhorn cân bằng hoàn hảo giữa tính năng an toàn dữ liệu và hiệu năng. Rook/Ceph là giải pháp “quá mức cần thiết” (overkill), còn Local Path thì quá rủi ro cho dữ liệu quan trọng.

Chuẩn bị hạ tầng: Đừng để “VPS giá rẻ” đánh lừa

Một sai lầm phổ biến khi triển khai Longhorn trên VPS giá rẻ là chủ quan về cấu hình phần cứng. Longhorn cần tài nguyên để chạy các Instance Manager (quản lý luồng dữ liệu). Nếu thiếu RAM/CPU, các Pod này sẽ bị OOM Kill (Out of Memory) liên tục, dẫn đến mất kết nối dữ liệu.

Cấu hình phần cứng khuyến nghị (Hardware Requirements)

Để hệ thống hoạt động ổn định (Production Ready), bạn cần tuân thủ các thông số sau:

  • CPU: Tối thiểu 4 vCPUs mỗi Node.
  • RAM: Tối thiểu 4 GiB mỗi Node.
  • Ổ cứng: Bắt buộc sử dụng SSD hoặc NVMe.
    • Lý do kỹ thuật: Longhorn nhạy cảm với độ trễ (Latency). Ổ HDD (Spinning Disk) có IOPS thấp và độ trễ cao, dễ gây ra hiện tượng volume bị “Detached” khi hệ thống phải xử lý đồng thời việc ghi dữ liệu và rebuild replica.
  • Hệ điều hành: Ubuntu 24.04 LTS, Ubuntu 22.04 LTS hoặc các Linux Distro hỗ trợ container runtime.

Lưu ý cho môi trường Lab/Homelab: Nếu ngân sách eo hẹp, bạn có thể thử nghiệm trên cấu hình 2 vCPUs / 2GB RAM. Tuy nhiên, bạn phải chấp nhận rủi ro hiệu năng thấp và cần tinh chỉnh giới hạn tài nguyên (Guaranteed Instance Manager CPU) để tránh quá tải hệ thống.

Cài đặt các thành phần phụ thuộc (Dependencies)

Đây là bước bắt buộc. Longhorn sử dụng giao thức iSCSI để mount volume vào Node. Nếu thiếu open-iscsi, Pod sẽ mãi mãi ở trạng thái ContainerCreating. Chạy lệnh sau trên TẤT CẢ các Node (Worker và Master).

Bước 1: Cập nhật hệ thống và cài đặt gói cần thiết

sudo apt update
sudo apt install -y open-iscsi nfs-common cryptsetup dmsetup

Bước 2: Kích hoạt service iscsid (QUAN TRỌNG)

sudo systemctl enable --now iscsid

Bước 3: Kiểm tra module kernel

modprobe iscsi_tcp

Ghi chú: nfs-common (hoặc nfs-utils trên CentOS) cần thiết cho tính năng Backup ra S3 và tạo volume ReadWriteMany (RWX).

Cài đặt K3s và Longhorn chuẩn kỹ thuật

Cài đặt phần mềm Kubernetes

Chúng ta sẽ sử dụng Helm để cài đặt Longhorn. Đây là phương pháp quản lý vòng đời ứng dụng tốt nhất trên Kubernetes, giúp bạn dễ dàng nâng cấp (Upgrade) hoặc tùy biến cấu hình sau này.

Bước 1: Kiểm tra môi trường (Pre-flight Check)

Trước khi cài đặt, hãy sử dụng công cụ longhornctl để quét toàn bộ cluster.

Tải và chạy công cụ kiểm tra (Ví dụ cho kiến trúc AMD64):

curl -sSfL -o longhornctl https://github.com/longhorn/cli/releases/download/v1.10.1/longhornctl-linux-amd64
chmod +x longhornctl
./longhornctl check preflight

Nếu kết quả trả về WARN hoặc ERROR ở phần iSCSI/NFS, hãy quay lại bước chuẩn bị hạ tầng.

Bước 2: Cài đặt Longhorn qua Helm

Thêm repository Longhorn và cập nhật:

helm repo add longhorn https://charts.longhorn.io
helm repo update

Tạo namespace và tiến hành cài đặt:

kubectl create namespace longhorn-system
helm install longhorn longhorn/longhorn --namespace longhorn-system

Sau khi cài đặt, hãy chờ vài phút để các Pod khởi tạo. Bạn có thể kiểm tra bằng lệnh:

kubectl -n longhorn-system get pods -w

Quản lý Storage Class đúng cách

Một thực hành tốt (Best Practice) là không nên chỉnh sửa trực tiếp StorageClass mặc định có tên là longhorn. Việc này có thể gây xung đột khi bạn nâng cấp phiên bản Longhorn trong tương lai. Thay vào đó, hãy tạo một StorageClass riêng và thiết lập nó làm mặc định.

Bước 1: Tạo StorageClass mới (ví dụ: longhorn-fast)

Tạo file cấu hình longhorn-sc.yaml. Lưu ý tham số numberOfReplicas:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: longhorn-fast
provisioner: driver.longhorn.io
allowVolumeExpansion: true
parameters:
  numberOfReplicas: "3" # Số lượng bản sao dữ liệu
  staleReplicaTimeout: "2880" # 48 hours
  fromBackup: ""
  fsType: "ext4"

Lưu ý: Nếu bạn chỉ có 1 Node (Single Node Cluster), hãy sửa numberOfReplicas: "1" để tránh lỗi volume bị trạng thái Degraded.

Bước 2: Chuyển đổi Default Storage Class

Hủy quyền mặc định của StorageClass cũ (thường là local-path của K3s hoặc standard):

kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'

Gán quyền mặc định cho StorageClass mới:

kubectl patch storageclass longhorn-fast -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

Chiến lược sao lưu toàn diện: Volume & System

Bảo mật và sao lưu dữ liệu

Rất nhiều người lầm tưởng chỉ cần backup dữ liệu (Volume) là đủ. Tuy nhiên, nếu Cluster của bạn gặp sự cố nghiêm trọng, việc khôi phục dữ liệu từ Volume Backup sẽ vô nghĩa nếu bạn mất sạch các cấu hình (Settings), StorageClass, hay các định nghĩa tài nguyên (CRDs) của Longhorn.

Do đó, một chiến lược an toàn phải bao gồm cả Volume BackupSystem Backup.

Cấu hình Backup Target (S3)

Longhorn hỗ trợ giao thức S3 để lưu trữ dữ liệu off-site (bên ngoài Cluster). Bạn có thể dùng AWS S3, MinIO, hoặc Backblaze B2.

  1. Truy cập Longhorn UI (Port-forward service longhorn-frontend).
  2. Vào Settings > General > Backup Target.
  3. Điền URL S3 bucket (ví dụ: s3://backup-bucket@region/) và tên Secret chứa credential (Access Key/Secret Key).

Phân biệt Backup và Disaster Recovery (DR)

Cần làm rõ hai khái niệm này để tránh nhầm lẫn:

  • Backup & Restore: Là quá trình sao lưu dữ liệu tĩnh lên S3. Khi cần, bạn tải dữ liệu về để khôi phục. Thời gian khôi phục (RTO) phụ thuộc vào dung lượng dữ liệu và tốc độ mạng.
  • Disaster Recovery (DR) Volume: Là một tính năng nâng cao. Một Volume DR ở Cluster dự phòng sẽ liên tục đồng bộ dữ liệu từ S3 Backup của Cluster chính. Khi Cluster chính ngừng hoạt động, bạn có thể kích hoạt Volume DR ngay lập tức với thời gian RTO cực thấp.

Với mô hình VPS giá rẻ, chúng ta thường tập trung vào Backup & Restore.

Thiết lập Recurring Jobs (Tự động hóa)

Đừng bao giờ backup thủ công. Hãy sử dụng tính năng Recurring Jobs để:

  1. Snapshot: Chụp ảnh dữ liệu mỗi giờ (giữ lại 12 bản gần nhất) để rollback nhanh khi lỗi ứng dụng.
  2. Backup: Đẩy dữ liệu lên S3 mỗi ngày (lúc 2h sáng).
  3. System Backup: Sao lưu toàn bộ cấu hình Longhorn lên S3 mỗi tuần.

Vận hành và xử lý sự cố (Troubleshooting)

Khi vận hành trên VPS tài nguyên thấp, bạn sẽ thường xuyên gặp phải cảnh báo về CPU, Disk Pressure hoặc trạng thái Volume không ổn định. Dưới đây là các tình huống thường gặp và cách xử lý:

Lỗi đầy ổ cứng (Disk Pressure)

Longhorn có cơ chế tự bảo vệ: nó sẽ không cho phép tạo thêm Replica trên Node nếu dung lượng trống dưới ngưỡng quy định.

  • Giải pháp 1 (Cấu hình): Vào Settings, điều chỉnh Storage Over Provisioning Percentage. Mặc định là 100%, bạn có thể tăng lên 200% nếu bạn hiểu rõ dữ liệu thực tế của mình (cơ chế Thin Provisioning), nhưng hãy cẩn trọng việc ổ cứng vật lý bị đầy bất ngờ.
  • Giải pháp 2 (Hạ tầng – Khuyên dùng): Sử dụng LVM (Logical Volume Manager) để gộp các ổ đĩa lại thành một phân vùng lớn cho /var/lib/longhorn. Việc này giúp quản lý dung lượng linh hoạt và dễ mở rộng hơn.

Lỗi Volume ở trạng thái Degraded

  • Hiện tượng: Volume vẫn hoạt động (đọc/ghi bình thường) nhưng icon báo màu vàng (Degraded).
  • Nguyên nhân: Số lượng Replica đang chạy thực tế ít hơn số lượng quy định.
    • Ví dụ: Bạn cấu hình numberOfReplicas: 3 nhưng Cluster chỉ có 2 Node. Longhorn không tìm được Node thứ 3 để đặt bản sao, dẫn đến trạng thái Degraded.
  • Cách xử lý:
    • Cách 1: Thêm Node mới vào Cluster để đảm bảo đủ nơi chứa Replica.
    • Cách 2: Giảm số lượng Replica trong StorageClass hoặc trực tiếp trên Volume (Vào UI -> Chọn Volume -> Update Replicas Count) xuống bằng với số Node hiện có.

Lỗi Instance Manager Pod bị Crash (CrashLoopBackOff)

  • Hiện tượng: Các pod có tên instance-manager-e-xxx hoặc instance-manager-r-xxx khởi động lại liên tục.
  • Nguyên nhân: Thiếu tài nguyên (CPU hoặc RAM) để Longhorn Instance Manager xử lý luồng dữ liệu.
  • Cách xử lý:
    • Kiểm tra log cụ thể: kubectl logs -n longhorn-system <pod-name>.
    • Nếu lỗi do VPS bị đầy ổ cứng: Hãy xóa bớt các snapshot cũ không cần thiết.
    • Tối ưu CPU: Vào Settings, điều chỉnh Guaranteed Instance Manager CPU. Mặc định là 12%, bạn có thể giảm xuống thấp hơn nếu CPU quá yếu, nhưng cần cẩn trọng vấn đề hiệu năng. Hãy tham khảo thêm các mẹo tối ưu VPS giá rẻ để giải phóng tài nguyên hệ thống.

Cấu hình Replica Node Level Soft Anti-Affinity

Đây là tham số quan trọng quyết định cách Longhorn phân bố các bản sao dữ liệu (Replica).

  • Môi trường Production (Chuẩn): Nên set là false. Điều này bắt buộc các Replica của cùng một volume phải nằm trên các Node khác nhau hoàn toàn để đảm bảo an toàn dữ liệu tuyệt đối (nếu 1 Node ngừng hoạt động, dữ liệu vẫn còn ở Node kia).
  • Môi trường Test / Ít Node: Nếu bạn có ít Node hoặc Node không ổn định, việc set thành true cho phép các Replica có thể nằm chung trên cùng một Node (nếu không còn chỗ nào khác).
    • Lưu ý: Đây là sự đánh đổi giữa Tính sẵn sàng (Availability)Độ an toàn (Safety).

Câu hỏi thường gặp (FAQ)

1. Cần tối thiểu bao nhiêu Node? Tôi chỉ có 1 VPS thì có chạy được không?

  • Tiêu chuẩn an toàn (High Availability): Bạn cần tối thiểu 3 Node. Longhorn mặc định tạo 3 bản sao (Replicas). Nếu 1 Node gặp sự cố, 2 bản sao còn lại vẫn hoạt động, đảm bảo dữ liệu không gián đoạn.
  • Với 1 VPS duy nhất (Single Node): Hoàn toàn được, nhưng bạn phải vào cài đặt set Replica Count = 1.
    • Lưu ý: Bạn sẽ mất tính năng HA. Nếu Node đó ngừng hoạt động, toàn bộ dữ liệu sẽ không truy cập được cho đến khi Node khởi động lại. Lúc này, tính năng Backup ra S3 sẽ là phương án duy nhất để khôi phục dữ liệu sang một server khác nếu server cũ hỏng hoàn toàn.

2. Longhorn có làm chậm VPS không? Yêu cầu phần cứng ra sao?

Có, nhưng ở mức chấp nhận được nếu cấu hình đúng.

  • Tác động: Longhorn sử dụng CPU/RAM để chạy các tiến trình instance-manager nhằm đồng bộ và xử lý dữ liệu. Trên các VPS giá rẻ (Shared Core), việc này có thể gây ra độ trễ (latency).
  • Khắc phục & yêu cầu:
    • Ổ cứng: Bắt buộc sử dụng SSD/NVMe. Longhorn rất nhạy cảm với độ trễ đĩa; tuyệt đối không dùng HDD quay truyền thống vì sẽ gây treo hệ thống.
    • Mạng: Đảm bảo băng thông ổn định (tốt nhất là dùng Private Network trong cùng Datacenter).

3. Dữ liệu có mất khi xóa Pod Longhorn hoặc Pod ứng dụng không?

Không.

  • Đối với Pod hệ thống Longhorn: Nếu bạn lỡ tay xóa các pod như longhorn-manager hay instance-manager, Kubernetes sẽ tự động khởi động lại chúng (cơ chế DaemonSet/Deployment). Dữ liệu thực tế nằm an toàn trong thư mục /var/lib/longhorn trên ổ cứng máy chủ.
  • Đối với Pod ứng dụng: Khi xóa Pod ứng dụng (ví dụ WordPress), Volume (PVC) vẫn tồn tại độc lập. Dữ liệu chỉ mất khi bạn chủ động xóa PersistentVolumeClaim (PVC) và chính sách thu hồi (Reclaim Policy) được set là Delete.

4. Dữ liệu backup lên S3 có an toàn không?

Rất an toàn. Longhorn thực hiện mã hóa và nén dữ liệu thành các block nhỏ (2MB) trước khi đẩy lên S3. Ngay cả khi hacker chiếm được quyền truy cập S3 bucket của bạn, họ cũng khó có thể đọc hoặc ghép nối được dữ liệu nếu không có cluster key và metadata từ Longhorn.

5. Làm sao để giám sát (Monitor) Longhorn?

Longhorn đã tích hợp sẵn Prometheus metrics. Bạn có thể kết nối với Grafana để vẽ biểu đồ theo dõi trực quan các thông số quan trọng như IOPS, Throughput (băng thông đĩa) và dung lượng sử dụng thực tế.

Kết luận

Hiểu rõ Longhorn là gì và cách vận hành nó giúp bạn làm chủ hoàn toàn dữ liệu của mình trên môi trường Kubernetes. Với K3s và Longhorn, bạn có thể biến những chiếc VPS giá rẻ thành một hệ thống Cloud Storage mạnh mẽ, có khả năng tự phục hồi và sao lưu chuẩn doanh nghiệp.

Tuy nhiên, công nghệ luôn đi kèm với giới hạn vật lý. Hãy luôn nhớ cấu hình System Backup song song với Volume Backup và giám sát chặt chẽ tài nguyên RAM/CPU của VPS để đảm bảo hệ thống luôn trong trạng thái sẵn sàng cao nhất.

Tài liệu tham khảo