Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

Volume Placement — Đặt vị trí volume

Mục lục


Với Volume Placement, bạn có thể chỉ định volume sẽ được đặt trên failure domain nào ngay khi tạo. Ý tưởng đằng sau volume placement là định nghĩa, phân tách và quản lý một cách tĩnh việc volume và dữ liệu chịu đựng sự cố ra sao và đảm bảo tính sẵn sàng thế nào — trước sự cố của một server, rack, row, lưới điện, v.v. Theo mặc định, Lightbits sẽ định nghĩa failure domain ở mức server. Để định nghĩa failure domain tùy chỉnh, xem Failure Domains.

Lưu ý rằng tính năng này gắn với lệnh create volume.

Các giới hạn hiện tại của tính năng Volume Placement gồm:

  • Chỉ khả dụng cho volume single replica.

  • Hiện chỉ khớp theo nhãn (label) của failure domain (ví dụ: fd:server00).

  • Có thể chỉ định tối đa 25 affinity.

  • Value (tên failure domain) giới hạn tối đa 100 ký tự.

  • Không thể chỉ định Volume Placement cho một clone (clone luôn được đặt trên cùng các node với volume/snapshot cha).

  • Dynamic Rebalancing phải được tắt.

  • Toàn bộ Lightbits cluster phải được nâng cấp lên ít nhất phiên bản release 2.3.8.

Từ Lightbits 2.3.8 trở lên, có thêm một flag mới — 'placement-affinity' — có thể dùng như sau:

lbcli create volume

lbcli -J $JWT create volume ----name=vol1 --acl=acl1 --size="4 Gib" --replica-count=1 --placement-affinity="fd:Server0|fd:rack1|fd:rack0"

Trong ví dụ trên, bạn có thể yêu cầu hệ thống đặt volume như sau:

  1. Trên một node có Server0 trong danh sách failure domain của nó. Lưu ý rằng tên server được dùng làm cấu hình failure domain mặc định trong node-manager.yaml. Bạn sẽ chịu trách nhiệm quyết định xem có muốn dùng gì khác ngoài file yaml mặc định mà Lightbits cung cấp hay không.

  2. Trên một node có rack1 trong danh sách failure domain của nó.

  3. Trên một node có rack0 trong danh sách failure domain của nó.

Nếu yêu cầu không thể được đáp ứng vì Lightbits không tìm được node như vậy, Lightbits sẽ trả về lỗi cho request đó.

Lưu ý: Nếu Lightbits không tìm được node đang active với failure domain khớp với yêu cầu volume placement, lệnh create volume sẽ thất bại và sẽ không đặt volume lên các node khác.

Volume Assignments — Cách gán volume

Lightbits cung cấp các mức bảo vệ sau cho các volume trong một cluster:

  • Replication Factor 1 / RF1: Volume được lưu trên một storage node duy nhất.

  • Replication Factor 2 / RF2: Volume được lưu trên hai storage node.

  • Replication Factor 3 / RF3: Volume được lưu trên ba storage node.

Với Replication Factor 2 và 3, một trong các storage node đóng vai trò primary (P) node cho volume đó, còn các storage node còn lại của volume đóng vai trò secondary (S) node. Replication Factor 1 chỉ có primary node.

Mỗi storage node lưu dữ liệu của nhiều volume có thể đóng vai trò primary node của volume này và secondary node của volume khác. Primary node xuất hiện trong đường truy cập (accessible path) của client, xử lý toàn bộ IO request của người dùng, và replicate dữ liệu tới các secondary node. Nếu primary node gặp sự cố, tính năng NVMe/TCP multipath sẽ thay đổi accessible path và gán lại primary replica cho một node khác.

Khi người dùng tạo một volume, Lightbits sẽ tự động (transparent) chọn các node giữ dữ liệu của volume và cấu hình vai trò primary/secondary. Logic chọn node sẽ cân bằng các volume giữa các node tại thời điểm tạo volume.

Nguồn: https://documentation.lightbitslabs.com/lightbits-private-cloud/volume-placement


Nguồn tham khảo

  1. Volume Placement — https://documentation.lightbitslabs.com/lightbits-private-cloud/volume-placement

Ghi chú về nguồn

  • URL fetch thành công. Trang thuộc phiên bản 3.20.x, mục Lightbits Administration Guide.
  • Cấu trúc heading giữ nguyên 1:1: H1 Volume Placement và một mục ## Volume Assignments.
  • Lệnh ví dụ trong bản gốc có lỗi gõ ----name=vol1 (bốn dấu gạch ngang); được giữ nguyên theo yêu cầu không sửa code dù một ký tự.
  • Bản gốc dùng nhãn "Note"; được dịch thành > **Lưu ý:**.