Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Cách sử dụng Snapshot và Clone của ZFS

Nếu bạn quyết định dùng ZFS trên thiết bị lưu trữ, chúc mừng! Bạn đang dùng một trong những hệ thống tệp phức tạp và giàu tính năng nhất trên hành tinh. Và nếu bạn từng quyết định lưu trữ dữ liệu lâu dài, như ảnh và video gia đình, hãy cân nhắc ZFS thật kỹ. Trong thiết lập dự phòng, như bốn ổ cứng gương (mirrored), nó tuyệt đối đảm bảo bạn sẽ không bao giờ mất một bit dữ liệu nào do bit rot hoặc các dạng suy giảm lưu trữ khác theo thời gian, lỗi máy tính, v.v. ZFS có thể tự chữa lành và khôi phục dữ liệu tự động. Các thuật toán phức tạp, hàm băm và cây Merkle đảm bảo tính toàn vẹn dữ liệu.

Tuy nhiên, trong hướng dẫn này, lý do ZFS là lựa chọn tốt nhất cho lưu trữ dài hạn không được đề cập. Thay vào đó, chúng ta thảo luận về những gì snapshot và clone có thể làm cho bạn.

Snapshot và Clone ZFS là gì?

Snapshot đơn giản là một bức tranh chính xác trạng thái dữ liệu của bạn tại một thời điểm nhất định. Ví dụ, bạn đang làm một trang web phức tạp. Bạn lưu tất cả mã, cơ sở dữ liệu, hình ảnh trên tập dữ liệu ZFS. Bạn thay đổi thiết kế, sửa hình ảnh, thay đổi kích thước bố cục và sửa mã để tất cả phù hợp. Nếu muốn quay lại thiết kế cũ, bạn phải hoàn tác từng thay đổi riêng lẻ. Với ZFS, bạn chỉ cần chụp snapshot thiết kế hiện tại, làm mọi thay đổi muốn làm, và nếu không hài lòng với thiết kế mới, chỉ cần quay lại snapshot trước. Và đúng, có Git, GitHub và thậm chí một số trình soạn thảo mã có khả năng chụp snapshot và rollback. Nhưng ZFS bao gồm các tính năng sau:

  • Snapshot mang tính toàn cục. Chúng tạo snapshot của tất cả dữ liệu trong dự án.
  • Snapshot và rollback gần như tức thì, không quan trọng dự án lớn đến đâu (dù có hàng trăm gigabyte).

Không có giới hạn số lượng snapshot. Bạn có thể có "Thiết kế 1", "Thiết kế 2", "Thiết kế 3" và chuyển đổi tự do giữa chúng, làm thay đổi, và tạo snapshot mới: "Thiết kế 2 - Cải tiến".

Clone

Trong khi snapshot về cơ bản là trạng thái dữ liệu đóng băng mà bạn có thể quay lại, clone giống như các nhánh bắt đầu từ một điểm chung. Để hiểu tốt hơn, hãy tưởng tượng kịch bản: Bạn tạo video cho chiến dịch quảng cáo. Sau đó, chụp snapshot video này (thực tế là tập dữ liệu ZFS nơi bạn lưu video). Bây giờ, bạn clone snapshot này ba lần. Bạn đưa "Clone 1" cho nhân viên một, "Clone 2" cho nhân viên hai, "Clone 3" cho nhân viên ba. Bây giờ họ có thể làm việc trong không gian riêng và làm thay đổi mong muốn.

Tại sao điều này hữu ích? Video có thể chiếm lượng lớn dung lượng ổ. Phim thô độ phân giải cao có thể yêu cầu hàng trăm hoặc hàng nghìn GB lưu trữ. Nếu video chính cần 500GB và ba người cần clone và làm việc trên các thay đổi phân kỳ, sẽ cần hơn 1500GB lưu trữ.

Với ZFS, snapshot và ba (hoặc nhiều hơn) clone sẽ không yêu cầu quá 501GB lưu trữ. Các khối dữ liệu không thay đổi (tất cả clone chia sẻ chung) chỉ được lưu một lần. Cách này, chỉ các khác biệt mà mỗi người chỉnh sửa thêm mới được lưu như dữ liệu bổ sung. Trong thực tế, bạn có thể cần khoảng 650GB cho ba clone. Đó là việc sử dụng hiệu quả lưu trữ và tài nguyên, và dữ liệu được cô lập đúng cách để mỗi người chỉnh sửa thoải mái.

Đương nhiên, điều này hữu ích cho nhiều kịch bản khác nơi bạn cần phân nhánh nội dung giống nhau theo nhiều hướng khác nhau, ngay cả khi yêu cầu dung lượng không phải lo ngại.

Lệnh làm việc với ZFS Snapshot

Mặc dù các bản phân phối Linux khác có thể dùng hệ thống tệp/trình quản lý khối này, Ubuntu cung cấp hỗ trợ tốt nhất cho ZFS tính đến nay.

Vì không phải người dùng nào cũng có cả ổ đĩa cho ZFS, có thể hữu ích biết bạn cũng có thể tạo pool trên phân vùng trống bằng lệnh như sudo zpool create pool_name /dev/sda3, nơi /dev/sda3 là tên thiết bị của phân vùng thứ ba trên ổ đầu tiên.

Sau khi cài gói thích hợp và tạo tập dữ liệu ZFS đầu tiên, đây là cách tạo snapshot.

Trước tiên, tìm tên tập dữ liệu ZFS bạn muốn snapshot.

zfs list

Trong ví dụ này, tên tập dữ liệu là data và tên snapshot sẽ là snap1. Thay thế các giá trị này trong lệnh tiếp theo cho phù hợp với trường hợp của bạn. Để tạo snapshot, nhập:

sudo zfs snapshot data@snap1

Nếu trong trường hợp của bạn tập dữ liệu tên videos, và bạn muốn gọi snapshot là first, lệnh sẽ là:

sudo zfs snapshot videos@first

Để rollback thay đổi và khôi phục tập dữ liệu về chính xác nội dung khi chụp snapshot, dùng:

sudo zfs rollback data@snap1

Khi không còn cần snapshot, xóa nó bằng:

sudo zfs destroy data@snap1

Lệnh làm việc với ZFS Clone

Giả sử bạn có snapshot tên "data@snap1", clone nó bằng:

sudo zfs clone data@snap1 data/clone1

Để xóa clone:

sudo zfs destroy data/clone3

Bạn cũng có thể snapshot clone.

sudo zfs snapshot data/clone2@snap_of_clone

Trong tương lai, khi muốn nhớ tất cả snapshot và clone đã tạo, dùng:

zfs list -t all

Kết luận

Điều này bao quát tất cả các thao tác cơ bản với ZFS snapshot và clone. Có thể hữu ích biết mỗi tập dữ liệu có một thư mục ẩn bên trong gọi là ".zfs". Với lệnh như ls /data/.zfs/snapshot/snap1/, bạn có thể thấy trạng thái tệp trong snapshot. Vì nó hoạt động như thư mục thông thường (chỉ đọc), bạn cũng có thể sao chép từng tệp từ snapshot nếu không cần rollback toàn bộ snapshot.