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.

Snapshots and Clones — Snapshot và Clone

Mục lục


Với snapshot và clone, bạn có thể tận dụng các bản snapshot/clone point-in-time nhanh và thin của các volume Lightbits. Bạn có thể tạo snapshot từ một volume, và có thể tạo một volume từ một snapshot (còn gọi là clone).

Snapshot không thể được export ra dưới dạng volume; chỉ có các clone của snapshot đó mới truy cập được.

Snapshot và clone sẽ được tạo trên cùng một failure domain. Không có giới hạn về số lượng snap và clone trên mỗi volume, cũng không có giới hạn về số lượng snap và clone trên mỗi failure domain.

Đối với việc lập lịch snapshot, hãy tạo snapshot của một volume theo một lịch định trước do cluster quản lý (có thể tồn tại nhiều scheduler cho cùng một volume).

Lưu ý: Xét về Management API, snapshot là các entity riêng biệt, còn clone thì giống như volume. Clone có thể được xóa bằng API delete volume. Để xóa một snapshot, bạn cần gọi API delete snapshot.

Plugins

Cả OpenStack và Kubernetes đều được hỗ trợ và yêu cầu các phiên bản plugin tương thích. Phần hỗ trợ OpenStack và Kubernetes phải được cập nhật để bao gồm snapshot và cloning. Điều này áp dụng cho tất cả các phiên bản plugin đang chạy production.

Rollback

Thao tác Rollback lấy một volume và khôi phục nó về trạng thái của một snapshot (data + md). Khuyến nghị nên gỡ các mount đang hoạt động, detach volume, hoặc flush cache trước khi thực hiện thao tác này.

Quy trình nên như sau:

  1. Dừng (các) tiến trình đang sử dụng volume.

  2. Unmount FS đã tạo trên volume; ví dụ, với mount point /mnt/volumetorollback.

a. Unmount /mnt/volumetorollback.

  1. Thực hiện rollback qua lbcli.

  2. Mount volume: mount /mnt/volumetorollback.

Snapshots and Clone Commands — Các lệnh cho snapshot và clone

Liệt kê các volume hiện có: lbcli -J $JWT list volumes:

$ lbcli --jwt $JWT list volumes --project-name <project name>
Name UUID State Protection State NSID Size Replicas Compression ACL Rebuild Progress
vol1 a7f67ad0-1f3d-49cb-9650-b82042378014 Available FullyProtected 1 4.0 GiB 1 true values:"acl1" None

Tạo một snapshot từ volume:

lbcli -J $JWT create snapshot --name=<sanpshot name> --project-name=<project name> --source-volume-name=<source volume name>
$ lbcli create snapshot --name=vol1 --project-name=default --source-volume-name=vol1
Name UUID Source volume UUID State
vol1 bd52d3d8-65a5-49fe-a934-b7d8b07ef040 a7f67ad0-1f3d-49cb-9650-b82042378014 Creating

Kiểm tra xem snapshot đã được tạo hay chưa:

lbcli -J $JWT list snapshots --project-name=<project name>
$ lbcli list snapshots --project-name=default
Name UUID Source volume UUID State
vol1 bd52d3d8-65a5-49fe-a934-b7d8b07ef040 a7f67ad0-1f3d-49cb-9650-b82042378014 Available

Lấy thông tin snapshot:

lbcli -J $JWT get snapshot --project-name=<project-name> --uuid=<snapshot uuid> -o json
$ lbcli get snapshot --project-name=default --uuid=bd52d3d8-65a5-49fe-a934-b7d8b07ef040 -o json
{
 "state": "Available",
 "UUID": "bd52d3d8-65a5-49fe-a934-b7d8b07ef040",
 "name": "vol1",
 "description": "",
 "creationTime": "2021-03-05T23:11:30.445377399Z",
 "retentionTime": null,
 "sourceVolumeUUID": "a7f67ad0-1f3d-49cb-9650-b82042378014",
 "sourceVolumeName": "vol1",
 "replicaCount": 1,
 "nodeList": [
 "40365551-f7e0-50b2-b415-ac238d150e16"
 ],
 "nsid": 1,
 "acl": null,
 "compression": true,
 "size": "4294967296",
 "IPAcl": null,
 "sectorSize": 4096,
 "statistics": {
 "physicalCapacity": "0",
 "physicalOwnedCapacity": "0",
 "physicalOwnedMemory": "0",
 "physicalMemory": "0",
 "userWritten": "0"
 },
 "ETag": "3",
 "projectName": "default"
}

Tạo một volume từ snapshot (clone):

lbcli -J $JWT create volume --project-name=<project name> --name=<clone name> --source-snapshot-uuid=<snapshot uuid> --acl=<acl> --size=<size> --compression=<true/false> --replica-count=<1-3>

lbcli create volume --project-name=default --name=copy_vol1 --source-snapshot-uuid=bd52d3d8-65a5-49fe-a934-b7d8b07ef040 --acl=acl2 --size="4 Gib" --compression=true --replica-count=1

Tạo một snapshot-policy:

lbcli create snapshots-policy -J $JWT --project-name=<project name> --name=<policy name> --volume-uuid=<volume uuid> --description="<description" --hours-in-cycle=<hours> --start-time=<time> --retention-time=<hours>
$ lbcli create snapshots-policy --project-name=default --name=policy1 --volume-uuid=a7f67ad0-1f3d-49cb-9650-b82042378014 --description="my policy" --hours-in-cycle=2 --start-hour=22 --retention-time=4h
Name UUID Volume Name State Type
policy1 3c03b2bf-e102-4c6c-8c6d-173224148f31 vol1 Creating Hourly

Liệt kê các snapshot-policy:

lbcli list snapshots-policies -J $JWT --project-name=<project name> --volume-uuid=<volume uuid>
$ lbcli list snapshots-policies --project-name=default --volume-uuid=a7f67ad0-1f3d-49cb-9650-b82042378014
Name UUID Volume Name State Type
policy1 3c03b2bf-e102-4c6c-8c6d-173224148f31 vol1 Active Hourly

Lấy thông tin snapshot-policy:

lbcli get snapshots-policy -J $JWT --project-name=<project name> --volume-uuid=<volume uuid> -o json
$ lbcli get snapshots-policy --project-name=default --uuid=3c03b2bf-e102-4c6c-8c6d-173224148f31 -o json
{
 "UUID": "3c03b2bf-e102-4c6c-8c6d-173224148f31",
 "name": "policy1",
 "resourceUUID": "a7f67ad0-1f3d-49cb-9650-b82042378014",
 "resourceName": "vol1",
 "projectName": "default",
 "schedulePolicy": {
 "snapshotSchedulePolicy": {
 "hourlySchedule": {
 "startTime": "2021-03-08T22:16:21Z",
 "hoursInCycle": 2
 }
 },
 "retentionTime": "14400s"
 },
 "description": "my policy",
 "state": "Active"
}

Rollback volume:

lbcli rollback volume -J $JWT --project-name=<project-name> --uuid=<volume-uuid> --src-snapshot-uuid=<snapshot-uuid>
$ lbcli rollback volume --project-name=default --src-snapshot-uuid=bd52d3d8-65a5-49fe-a934-b7d8b07ef040 --uuid=05f49718-4897-4ff5-adb9-5d7ccd6fc138

Xóa snapshot / snapshot-policy:

Snapshot: lbcli delete snapshot -J $JWT --project-name=<project-name> --uuid=<snapshot uuid>
lbcli delete snapshot --project-name=default --uuid=bd52d3d8-65a5-49fe-a934-b7d8b07ef040
Snapshot-policy: lbcli delete snapshot -J $JWT --project-name=<project-name> --uuid=<snapshot-policy uuid>
lbcli delete snapshots-policy --project-name=default --uuid=3c03b2bf-e102-4c6c-8c6d-173224148f31

Nguồn: https://documentation.lightbitslabs.com/lightbits-private-cloud/snapshots-and-clones


Nguồn tham khảo

  1. Snapshots and Clones — https://documentation.lightbitslabs.com/lightbits-private-cloud/snapshots-and-clones

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 theo bản gốc: H1 Snapshots and Clones, các mục ## Plugins, Rollback, Snapshots and Clone Commands. Các tiêu đề lệnh trong mục cuối là chữ in đậm trong bản gốc và được giữ nguyên dạng in đậm.
  • Bản gốc có một số điểm không nhất quán/gõ sai, được giữ nguyên 100% trong code block theo yêu cầu không sửa dù một ký tự:
  • --name=<sanpshot name> (bản gốc viết "sanpshot").
  • Lệnh tạo snapshot-policy: phần template dùng --start-time=<time> nhưng ví dụ lại dùng --start-hour=22.
  • Lệnh get snapshot-policy: template dùng --volume-uuid=<volume uuid> nhưng ví dụ dùng --uuid=.
  • Phần xóa snapshot-policy: dòng template ghi lbcli delete snapshot trong khi ví dụ bên dưới dùng lbcli delete snapshots-policy.
  • --description="<description" thiếu dấu > đóng trong bản gốc.
  • Trong mục Rollback, bản gốc đánh số 1, 2, rồi mục con "a.", sau đó tiếp tục 3, 4 — bản dịch giữ nguyên cách đánh số và thụt lề như vậy.
  • Bản gốc dùng nhãn "Note" (không có Warning); được dịch thành > **Lưu ý:**.