Cách sử dụng snapshot, clone và replication trong ZFS trên Linux

theanh

Administrator
Nhân viên
Trong hướng dẫn trước, chúng ta đã học cách tạo zpool và hệ thống tệp hoặc tập dữ liệu ZFS. Trong hướng dẫn này, tôi sẽ chỉ cho bạn từng bước cách làm việc với ảnh chụp nhanh, bản sao và sao chép ZFS. Ảnh chụp nhanh, bản sao và sao chép là những tính năng mạnh mẽ nhất của hệ thống tệp ZFS.


Ảnh chụp nhanh ZFS - tổng quan​

Ảnh chụp nhanh là một trong những tính năng mạnh mẽ nhất của ZFS, ảnh chụp nhanh cung cấp bản sao chỉ đọc, tại một thời điểm của hệ thống tệp hoặc ổ đĩa không chiếm thêm dung lượng trong nhóm ZFS. Ảnh chụp nhanh chỉ sử dụng dung lượng khi tham chiếu khối thay đổi. Ảnh chụp nhanh bảo toàn dung lượng đĩa bằng cách chỉ ghi lại sự khác biệt giữa tập dữ liệu hiện tại và phiên bản trước đó.

Một ví dụ điển hình về cách sử dụng ảnh chụp nhanh là có cách nhanh chóng để sao lưu trạng thái hiện tại của hệ thống tệp khi thực hiện hành động rủi ro như cài đặt phần mềm hoặc nâng cấp hệ thống.

Tạo và hủy ảnh chụp nhanh ZFS​

Không thể truy cập trực tiếp ảnh chụp nhanh của ổ đĩa, nhưng có thể sao chép, sao lưu và khôi phục lại. Tạo và hủy một ảnh chụp nhanh ZFS rất dễ, chúng ta có thể sử dụng lệnh zfs snapshot và zfs destroy cho việc đó.

Tạo một nhóm có tên là datapool.
Mã:
# zpool create datapool mirror /dev/sdb /dev/sdc 
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
datapool 1.98G 65K 1.98G - 0% 0% 1.00x ONLINE -
Bây giờ, chúng ta có một nhóm có tên là datapool, tiếp theo chúng ta phải tạo một hệ thống tệp ZFS để mô phỏng tính năng ảnh chụp nhanh.
Mã:
# zfs create datapool/docs -o mountpoint=/docs
# zfs list -r datapool
TÊN ĐÃ SỬ DỤNG CÓ SẴN THAM KHẢO ĐIỂM LẮP ĐẶT
datapool 93,5K 1,92G 19K /datapool
datapool/docs 19K 1,92G 19K /docs
Để tạo ảnh chụp nhanh của hệ thống tệp, chúng ta có thể sử dụng lệnh zfs snapshot bằng cách chỉ định nhóm và tên ảnh chụp nhanh. Chúng ta có thể sử dụng tùy chọn -r nếu muốn tạo ảnh chụp nhanh theo cách đệ quy. Tên ảnh chụp nhanh phải đáp ứng các yêu cầu đặt tên sau:
Mã:
filesystem@snapnamevolume@snapname
Mã:
# zfs snapshot datapool/docs@version1
# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/docs@version1 0 - 19.5K -
Ảnh chụp nhanh cho datapool/docs được tạo.

Để hủy ảnh chụp nhanh, chúng ta có thể sử dụng lệnh zfs destroy như bình thường.
Mã:
# zfs destroy datapool/docs@version1
# zfs list -t snapshot
no datasets available

Hoàn nguyên ảnh chụp nhanh​

Đối với mô phỏng, chúng ta cần tạo tệp thử nghiệm trong /docs.
Mã:
# echo "phiên bản 1" > /docs/data.txt
# cat /docs/data.txt
phiên bản 1
Mã:
# zfs snapshot datapool/docs@version1
# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/docs@version1 9K - 19.5K -
Bây giờ chúng ta thay đổi nội dung của /docs/data.txt
Mã:
# echo "phiên bản 2" > /docs/data.txt
# cat /docs/data.txt
version 2
Chúng ta có thể khôi phục hoàn toàn về một snapshot cũ hơn, cho chúng ta bản sao thời điểm snapshot được chụp.
Mã:
# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/docs@version1 9,50K - 19,5K -
# zfs rollback datapool/docs@version1
# cat /docs/data.txt
version 1
Như chúng ta thấy, nội dung của data.txtđã trở lại nội dung trước đó.

Nếu muốn đổi tên snapshot, chúng ta có thể sử dụng lệnhzfs rename.
Mã:
# zfs rename datapool/docs@version1 datapool/docs@version2
# zfs list -t snapshot
TÊN ĐÃ SỬ DỤNG CÓ SẴN THAM KHẢO ĐIỂM LẮP ĐẶT
datapool/docs@version2 9,50K - 19,5K -
Lưu ý: không thể hủy một tập dữ liệu nếu có các bản chụp nhanh của tập dữ liệu này, nhưng chúng ta có thể sử dụng tùy chọn -r để ghi đè lên điều đó.
Mã:
# zfs destroy datapool/docs
không thể hủy 'datapool/docs': hệ thống tệp có các phần tử con
sử dụng '-r' để hủy các tập dữ liệu sau:
datapool/docs@version2
Mã:
# zfs destroy -r datapool/docs
# zfs list -t snapshot
không có tập dữ liệu nào khả dụng

Tổng quan về bản sao ZFS​

Bản sao là một ổ đĩa hoặc hệ thống tệp có thể ghi có nội dung ban đầu giống với tập dữ liệu mà nó được tạo ra đã tạo.


Tạo và hủy bản sao ZFS​

Bản sao chỉ có thể được tạo từ ảnh chụp nhanh và không thể xóa ảnh chụp nhanh cho đến khi bạn xóa bản sao dựa trên ảnh chụp nhanh này. Để tạo bản sao, hãy sử dụng lệnh zfs clone.
Mã:
# zfs create datapool/docs -o mountpoint=/docs
# zfs list -r datapool
NAME USED AVAIL REFER MOUNTPOINT
datapool 93,5K 1,92G 19K /datapool
datapool/docs 19K 1,92G 19K /docs
Mã:
# mkdir /docs/folder{1..5}
# ls /docs/
folder1 folder2 folder3 folder4 folder5
Mã:
# zfs snapshot datapool/docs@today
# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/docs@today 0 - 19K -
Bây giờ chúng ta tạo một bản sao từ ảnh chụp nhanh datapool/docs@today
Mã:
# zfs clone datapool/docs@today datapool/pict
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
datapool 166K 1.92G 19K /datapool
datapool/docs 19K 1.92G 19K /docs
datapool/pict 1K 1.92G 19K /datapool/pict
Quá trình sao chép đã hoàn tất, ảnh chụp nhanh datapool/docs@today đã được sao chép vào /datapool/pict.Khi chúng ta kiểm tra nội dung của thư mục/datapool/pict, nội dung phải giống với/datapool/docs.
Mã:
# ls /datapool/pict
folder1 folder2 folder3 folder4 folder5
Sau khi chúng tôi sao chép một ảnh chụp nhanh, ảnh chụp nhanh không thể bị xóa cho đến khi bạn xóa tập dữ liệu.
Mã:
# zfs destroy datapool/docs@today
không thể hủy 'datapool/docs@today': snapshot có các bản sao phụ thuộc
sử dụng '-R' để hủy các tập dữ liệu sau:
datapool/pict
Mã:
# zfs destroy datapool/pict
Cuối cùng, chúng ta có thể hủy ảnh chụp nhanh.
Mã:
# zfs destroy datapool/docs@today
# zfs list -t snapshot
không có tập dữ liệu nào khả dụng

Tổng quan về ZFS Bản sao​

Cơ sở cho bản sao ZFS này là một ảnh chụp nhanh, chúng ta có thể tạo một ảnh chụp nhanh bất kỳ lúc nào và chúng ta có thể tạo bao nhiêu ảnh chụp nhanh tùy thích. Bằng cách liên tục tạo, chuyển và khôi phục ảnh chụp nhanh, bạn có thể cung cấp tính năng đồng bộ hóa giữa một hoặc nhiều máy. ZFS cung cấp tính năng tuần tự hóa tích hợp có thể gửi biểu diễn luồng của dữ liệu đến đầu ra chuẩn.

Cấu hình bản sao ZFS​

Trong phần này, tôi muốn chỉ cho bạn cách sao chép một tập dữ liệu từ datapool sang backuppool, nhưng bạn không chỉ có thể lưu trữ dữ liệu trên một nhóm khác được kết nối với hệ thống cục bộ mà còn có thể gửi dữ liệu qua mạng đến một hệ thống khác. Các lệnh được sử dụng để sao chép dữ liệu là zfs send và zfs receive.

Tạo một nhóm khác có tên là backuppool.
Mã:
# zpool create backuppool mirror sde sdf
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backuppool 1.98G 50K 1.98G - 0% 0% 1.00x ONLINE -
datapool 1.98G 568K 1.98G - 0% 0% 1.00x ONLINE -
Kiểm tra trạng thái nhóm:
Mã:
# zpool status
 pool: datapool
 state: ONLINE
 scan: none yêu cầu
cấu hình:

 TÊN TRẠNG THÁI ĐỌC GHI CKSUM
 nhóm dữ liệu TRỰC TUYẾN 0 0 0
 mirror-0 TRỰC TUYẾN 0 0 0
 sdb TRỰC TUYẾN 0 0 0
 sdc TRỰC TUYẾN 0 0 0

lỗi: Không có lỗi dữ liệu nào được biết đến
nhóm: backuppool
trạng thái: TRỰC TUYẾN
quét: không có yêu cầu
cấu hình:

TÊN TRẠNG THÁI ĐỌC GHI CKSUM
nhóm dữ liệu sao lưu TRỰC TUYẾN 0 0 0
mirror-0 TRỰC TUYẾN 0 0 0
sde TRỰC TUYẾN 0 0 0
sdf TRỰC TUYẾN 0 0 0

lỗi: Không có lỗi dữ liệu nào được biết đến

Tạo một tập dữ liệu mà chúng ta sẽ sao chép.
Mã:
# zfs snapshot datapool/docs@today
# zfs list -t snapshot
TÊN ĐÃ SỬ DỤNG CÓ SẴN THAM KHẢO ĐIỂM LẮP ĐẶT
datapool/docs@today 0 - 19K -
# ls /docs/
folder1 folder2 folder3 folder4 folder5
Đã đến lúc thực hiện sao chép.
Mã:
# zfs send datapool/docs@today | zfs nhận backuppool/backup
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
backuppool 83K 1.92G 19K /backuppool
backuppool/backup 19K 1.92G 19K /backuppool/backup
datapool 527K 1.92G 19K /datapool
datapool/docs 19K 1.92G 19K /docs
Mã:
# ls /backuppool/backup
folder1 folder2 folder3 folder4 folder5
Bộ dữ liệu datapool/docs@todayđã được sao chép thành công vào backuppool/backup.

Để sao chép bộ dữ liệu sang máy khác, chúng ta có thể sử dụng lệnh bên dưới:
Mã:
# zfs gửi datapool/docs@today | ssh otherserver zfs recv backuppool/backup
Hoàn tất.

Kết luận​

Snapshot, clone và replication là những tính năng mạnh mẽ nhất của ZFS. Snapshot được sử dụng để tạo bản sao tại thời điểm của hệ thống tệp hoặc ổ đĩa, clone được sử dụng để tạo một tập dữ liệu trùng lặp và replication được sử dụng để sao chép một tập dữ liệu từ một nhóm dữ liệu này sang một nhóm dữ liệu khác trên cùng một máy hoặc để sao chép các nhóm dữ liệu giữa các máy khác nhau.
 
Back
Bên trên