Sunday, January 19, 2025

Proxmox Replication for ZFS Pool

-

1. Tổng quan.

Proxmox Replication for ZFS Pool là tính năng trong Proxmox Virtual Environment (VE) cho phép sao lưu và sao chép dữ liệu trên ZFS pool giữa các nút Proxmox VE. Điều này giúp đảm bảo tính sẵn sàng và bảo vệ dữ liệu trong trường hợp sự cố xảy ra trên một nút hoặc khi cần di chuyển dữ liệu giữa các nút.

Với Proxmox Replication, bạn có thể sao lưu và phục hồi ZFS pool hoặc các máy ảo (VMs) đang chạy trên Proxmox VE. Tính năng này sử dụng cơ chế ZFS send/receive để sao lưu và phục hồi dữ liệu, giúp đảm bảo tính nhất quán và hiệu suất cao trong quá trình sao chép.

Proxmox Replication cho phép bạn cấu hình lịch trình sao lưu tự động, đồng bộ hóa dữ liệu giữa các nút Proxmox VE, và quản lý các tác vụ sao chép dễ dàng thông qua giao diện người dùng của Proxmox VE.

Tính năng này rất hữu ích trong việc tạo bản sao dự phòng của ZFS pool hoặc VMs, di chuyển dữ liệu giữa các nút, hoặc khôi phục dữ liệu sau khi xảy ra sự cố.

Lưu ý rằng Proxmox Replication for ZFS Pool chỉ có sẵn trong phiên bản Proxmox VE Enterprise, yêu cầu giấy phép phù hợp để sử dụng tính năng này.

2. Thực hành.

Để thực hiện Replication cho ZFS Pool trong Proxmox VE, yêu cầu các điều kiện sau:

  • Storage phải là ZFS pool: Proxmox Replication chỉ hoạt động với ZFS pool. Bạn cần tạo và cấu hình ZFS pool trên mỗi node để sử dụng tính năng này.
  • Tên storage giống nhau trên các node: Các node trong cụm Proxmox VE cần có cùng tên storage cho ZFS pool được sử dụng để thực hiện Replication. Điều này đảm bảo rằng các node có thể nhận diện và truy cập vào cùng một ZFS pool để thực hiện sao chép.
  • Ceph không hỗ trợ: Tính năng Proxmox Replication không áp dụng cho Ceph storage. Ceph có cơ chế riêng để sao lưu và phục hồi dữ liệu, không sử dụng ZFS send/receive như Proxmox Replication. Do đó, nếu bạn đang sử dụng Ceph làm hệ thống lưu trữ, bạn cần sử dụng các công cụ và tính năng sao lưu Ceph riêng biệt để đảm bảo tính nhất quán và bảo vệ dữ liệu.

Lưu ý rằng Proxmox VE Enterprise Edition cung cấp tính năng Proxmox Replication cho ZFS Pool. Phiên bản miễn phí của Proxmox VE có hạn chế trong việc thực hiện tính năng này và có thể không có hỗ trợ đầy đủ.

Đầu tiên bạn có thể thấy Node 4 và Node 5 của mình có chung 1 ZFS Pool trùng tên với nhau và máy ảo mình đưa ra demo lần này sẽ sử dụng ZFS Pool có tên storage chung này. Điều này thoả mãn điều kiện để thực hiện chức năng Replication ZFS.

Giờ mình sẽ vào Datacenter (1) -> Replication (2) -> Add (3).

Gõ tên ID của máy ảo cần thực hiện Replication, ví dụ của mình là máy ảo có ID là 121, ở phần Target bạn trỏ đến Node 5 (đây là Node thoả mãn điều kiện cho tính năng Replication ZFS), do demo nên mình lựa chọn Schedule là */5 (tức là 5 phút thực hiện đồng bộ hoá một lần).

Sau khi bấm Create bạn sẽ thấy một Replication xuất hiện của máy ảo có ID là 121. Lưu ý là Status và các trường phía sau nó sẽ xuất hiện khi quá trình Replication hoàn thành nhé. Quá trình này nhanh hay chậm tuỳ thuộc vào dung lượng của máy ảo.

Sau khi quá trình Replication hoàn thành mình sẽ tiến hành migrate từ Node 4 sang Node 5 xem kết quả thế nào.

Nhớ lựa chọn Node hợp lệ và đúng Storage có tên chung và bấm Migrate.

Kết quả máy ảo ID 121 đã nhảy qua Node 5.

Và nếu bạn để ý thì chỉ mất khoảng 29s để hoàn tất Migrate cho một máy ảo Windows có dung lượng khoảng 10G.

Đây là logs quá trình Migrate từ Node 4 sang Node 5.

2023-06-11 22:55:56 starting migration of VM 121 to node 'pve-node5' (192.168.13.223)
2023-06-11 22:55:56 found local, replicated disk 'zfs-pool-draid:vm-121-disk-0' (in current VM config)
2023-06-11 22:55:56 virtio0: start tracking writes using block-dirty-bitmap 'repl_virtio0'
2023-06-11 22:55:56 replicating disk images
2023-06-11 22:55:56 start replication job
2023-06-11 22:55:56 guest => VM 121, running => 2354097
2023-06-11 22:55:56 volumes => zfs-pool-draid:vm-121-disk-0
2023-06-11 22:55:57 create snapshot '__replicate_121-0_1686498956__' on zfs-pool-draid:vm-121-disk-0
2023-06-11 22:55:57 using secure transmission, rate limit: none
2023-06-11 22:55:57 incremental sync 'zfs-pool-draid:vm-121-disk-0' (__replicate_121-0_1686498903__ => __replicate_121-0_1686498956__)
2023-06-11 22:55:59 send from @__replicate_121-0_1686498903__ to zfs-pool-draid/vm-121-disk-0@__replicate_121-0_1686498956__ estimated size is 5.14M
2023-06-11 22:55:59 total estimated size is 5.14M
2023-06-11 22:56:00 successfully imported 'zfs-pool-draid:vm-121-disk-0'
2023-06-11 22:56:00 delete previous replication snapshot '__replicate_121-0_1686498903__' on zfs-pool-draid:vm-121-disk-0
2023-06-11 22:56:01 (remote_finalize_local_job) delete stale replication snapshot '__replicate_121-0_1686498903__' on zfs-pool-draid:vm-121-disk-0
2023-06-11 22:56:01 end replication job
2023-06-11 22:56:01 starting VM 121 on remote node 'pve-node5'
2023-06-11 22:56:04 volume 'zfs-pool-draid:vm-121-disk-0' is 'zfs-pool-draid:vm-121-disk-0' on the target
2023-06-11 22:56:04 [pve-node5] Task finished with 1 warning(s)!
2023-06-11 22:56:04 start remote tunnel
2023-06-11 22:56:05 ssh tunnel ver 1
2023-06-11 22:56:05 starting storage migration
2023-06-11 22:56:05 virtio0: start migration to nbd:unix:/run/qemu-server/121_nbd.migrate:exportname=drive-virtio0
drive mirror re-using dirty bitmap 'repl_virtio0'
drive mirror is starting for drive-virtio0
drive-virtio0: transferred 0.0 B of 64.0 KiB (0.00%) in 0s
drive-virtio0: transferred 128.0 KiB of 128.0 KiB (100.00%) in 1s, ready
all 'mirror' jobs are ready
2023-06-11 22:56:06 starting online/live migration on unix:/run/qemu-server/121.migrate
2023-06-11 22:56:06 set migration capabilities
2023-06-11 22:56:06 migration downtime limit: 100 ms
2023-06-11 22:56:06 migration cachesize: 1.0 GiB
2023-06-11 22:56:06 set migration parameters
2023-06-11 22:56:06 start migrate command to unix:/run/qemu-server/121.migrate
2023-06-11 22:56:07 migration active, transferred 57.1 MiB of 8.0 GiB VM-state, 4.3 GiB/s
2023-06-11 22:56:08 migration active, transferred 164.0 MiB of 8.0 GiB VM-state, 139.0 MiB/s
2023-06-11 22:56:09 migration active, transferred 276.2 MiB of 8.0 GiB VM-state, 116.0 MiB/s
2023-06-11 22:56:10 migration active, transferred 388.7 MiB of 8.0 GiB VM-state, 113.7 MiB/s
2023-06-11 22:56:11 migration active, transferred 501.0 MiB of 8.0 GiB VM-state, 120.4 MiB/s
2023-06-11 22:56:12 migration active, transferred 612.9 MiB of 8.0 GiB VM-state, 114.8 MiB/s
2023-06-11 22:56:13 migration active, transferred 725.7 MiB of 8.0 GiB VM-state, 119.4 MiB/s
2023-06-11 22:56:14 migration active, transferred 837.8 MiB of 8.0 GiB VM-state, 114.9 MiB/s
2023-06-11 22:56:15 migration active, transferred 949.9 MiB of 8.0 GiB VM-state, 206.9 MiB/s
2023-06-11 22:56:16 migration active, transferred 964.8 MiB of 8.0 GiB VM-state, 4.1 GiB/s
2023-06-11 22:56:18 average migration speed: 684.2 MiB/s - downtime 219 ms
2023-06-11 22:56:18 migration status: completed
all 'mirror' jobs are ready
drive-virtio0: Completing block job_id...
drive-virtio0: Completed successfully.
drive-virtio0: mirror-job finished
2023-06-11 22:56:19 # /usr/bin/ssh -e none -o 'BatchMode=yes' -o 'HostKeyAlias=pve-node5' root@192.168.13.223 pvesr set-state 121 \''{"local/pve-node4":{"fail_count":0,"last_try":1686498956,"last_sync":1686498956,"storeid_list":["zfs-pool-draid"],"duration":4.889912,"last_iteration":1686498956,"last_node":"pve-node4"}}'\'
2023-06-11 22:56:20 stopping NBD storage migration server on target.
2023-06-11 22:56:24 migration finished successfully (duration 00:00:29)
TASK OK

Bây giờ mình sẽ thả ping và bắt đầu Migrate từ Node 5 về lại Node 4.

Lựa chọn thông số chính xác và bấm Migrate.

Bất ngờ khi máy ảo ID 121 đã chuyển qua Node 4 và nó không bị downtime.

Kết quả Migrate lần này mất 35s.

Và đây là logs chi tiết quá trình Migrate từ Node 5 về lại Node 4.

2023-06-11 23:01:22 starting migration of VM 121 to node 'pve-node4' (192.168.13.224)
2023-06-11 23:01:23 found local, replicated disk 'zfs-pool-draid:vm-121-disk-0' (in current VM config)
2023-06-11 23:01:23 virtio0: start tracking writes using block-dirty-bitmap 'repl_virtio0'
2023-06-11 23:01:23 replicating disk images
2023-06-11 23:01:23 start replication job
2023-06-11 23:01:23 guest => VM 121, running => 2809382
2023-06-11 23:01:23 volumes => zfs-pool-draid:vm-121-disk-0
2023-06-11 23:01:24 create snapshot '__replicate_121-0_1686499283__' on zfs-pool-draid:vm-121-disk-0
2023-06-11 23:01:24 using secure transmission, rate limit: none
2023-06-11 23:01:24 incremental sync 'zfs-pool-draid:vm-121-disk-0' (__replicate_121-0_1686499200__ => __replicate_121-0_1686499283__)
2023-06-11 23:01:26 send from @__replicate_121-0_1686499200__ to zfs-pool-draid/vm-121-disk-0@__replicate_121-0_1686499283__ estimated size is 1.65M
2023-06-11 23:01:26 total estimated size is 1.65M
2023-06-11 23:01:26 successfully imported 'zfs-pool-draid:vm-121-disk-0'
2023-06-11 23:01:26 delete previous replication snapshot '__replicate_121-0_1686499200__' on zfs-pool-draid:vm-121-disk-0
2023-06-11 23:01:28 (remote_finalize_local_job) delete stale replication snapshot '__replicate_121-0_1686499200__' on zfs-pool-draid:vm-121-disk-0
2023-06-11 23:01:28 end replication job
2023-06-11 23:01:28 starting VM 121 on remote node 'pve-node4'
2023-06-11 23:01:31 volume 'zfs-pool-draid:vm-121-disk-0' is 'zfs-pool-draid:vm-121-disk-0' on the target
2023-06-11 23:01:31 [pve-node4] Task finished with 1 warning(s)!
2023-06-11 23:01:31 start remote tunnel
2023-06-11 23:01:32 ssh tunnel ver 1
2023-06-11 23:01:32 starting storage migration
2023-06-11 23:01:32 virtio0: start migration to nbd:unix:/run/qemu-server/121_nbd.migrate:exportname=drive-virtio0
drive mirror re-using dirty bitmap 'repl_virtio0'
drive mirror is starting for drive-virtio0
drive-virtio0: transferred 0.0 B of 1.1 MiB (0.00%) in 0s
drive-virtio0: transferred 1.1 MiB of 1.1 MiB (100.00%) in 1s, ready
all 'mirror' jobs are ready
2023-06-11 23:01:33 starting online/live migration on unix:/run/qemu-server/121.migrate
2023-06-11 23:01:33 set migration capabilities
2023-06-11 23:01:33 migration downtime limit: 100 ms
2023-06-11 23:01:33 migration cachesize: 1.0 GiB
2023-06-11 23:01:33 set migration parameters
2023-06-11 23:01:33 start migrate command to unix:/run/qemu-server/121.migrate
2023-06-11 23:01:34 migration active, transferred 75.9 MiB of 8.0 GiB VM-state, 2.8 GiB/s
2023-06-11 23:01:35 migration active, transferred 188.3 MiB of 8.0 GiB VM-state, 113.7 MiB/s
2023-06-11 23:01:36 migration active, transferred 300.9 MiB of 8.0 GiB VM-state, 116.0 MiB/s
2023-06-11 23:01:37 migration active, transferred 412.7 MiB of 8.0 GiB VM-state, 117.0 MiB/s
2023-06-11 23:01:38 migration active, transferred 525.3 MiB of 8.0 GiB VM-state, 119.2 MiB/s
2023-06-11 23:01:39 migration active, transferred 637.6 MiB of 8.0 GiB VM-state, 112.7 MiB/s
2023-06-11 23:01:40 migration active, transferred 749.7 MiB of 8.0 GiB VM-state, 115.8 MiB/s
2023-06-11 23:01:41 migration active, transferred 860.6 MiB of 8.0 GiB VM-state, 117.0 MiB/s
2023-06-11 23:01:42 migration active, transferred 973.1 MiB of 8.0 GiB VM-state, 118.2 MiB/s
2023-06-11 23:01:43 migration active, transferred 1.1 GiB of 8.0 GiB VM-state, 114.8 MiB/s
2023-06-11 23:01:44 migration active, transferred 1.2 GiB of 8.0 GiB VM-state, 132.0 MiB/s
2023-06-11 23:01:45 migration active, transferred 1.3 GiB of 8.0 GiB VM-state, 122.8 MiB/s
2023-06-11 23:01:46 migration active, transferred 1.4 GiB of 8.0 GiB VM-state, 113.7 MiB/s
2023-06-11 23:01:47 migration active, transferred 1.5 GiB of 8.0 GiB VM-state, 144.6 MiB/s
2023-06-11 23:01:48 migration active, transferred 1.6 GiB of 8.0 GiB VM-state, 4.0 GiB/s
2023-06-11 23:01:50 migration active, transferred 1.7 GiB of 8.0 GiB VM-state, 114.4 MiB/s
2023-06-11 23:01:50 average migration speed: 483.0 MiB/s - downtime 183 ms
2023-06-11 23:01:50 migration status: completed
all 'mirror' jobs are ready
drive-virtio0: Completing block job_id...
drive-virtio0: Completed successfully.
drive-virtio0: mirror-job finished
2023-06-11 23:01:51 # /usr/bin/ssh -e none -o 'BatchMode=yes' -o 'HostKeyAlias=pve-node4' root@192.168.13.224 pvesr set-state 121 \''{"local/pve-node5":{"last_node":"pve-node5","duration":5.282655,"storeid_list":["zfs-pool-draid"],"fail_count":0,"last_sync":1686499283,"last_try":1686499283,"last_iteration":1686499283}}'\'
2023-06-11 23:01:52 stopping NBD storage migration server on target.
2023-06-11 23:01:57 migration finished successfully (duration 00:00:35)
TASK OK

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories