ZFS xóa ảnh chụp nhanh với sự phụ thuộc lẫn nhau và nhân bản


9

Dưới đây là danh sách các khối và ảnh chụp nhanh ZFS của tôi, cũng như nguồn gốc và bản sao cho từng khối.

Tôi muốn xóa tất cả các snapshot, nhưng giữ tất cả các hệ thống tập tin. Tôi có thể làm cái này như thế nào?

Tôi đã cố gắng làm zfs promotetheo bằng cách cố gắng xóa từng hệ thống tập tin cho nhiều tổ hợp hệ thống tập tin khác nhau. Điều này thay đổi xung quanh nơi ảnh chụp nhanh "sống"; ví dụ, zfs promote tank/containers/sixdi chuyển ảnh chụp nhanh Ftừ tank/containers/three@Fđến tank/containers/six@F. Dữ liệu trực tiếp trong hệ thống tập tin không được sửa đổi (đó là những gì tôi muốn!), Nhưng tôi vẫn không thể xóa ảnh chụp nhanh (đó không phải là những gì tôi muốn).

Một điển hình zfs destroynỗ lực nói với tôi nó có nhái phụ thuộc, một số trong đó (các bức ảnh chụp) Tôi làm muốn tiêu diệt, nhưng những người khác trong số đó (những loại phân vùng) Tôi không muốn tiêu diệt.

Ví dụ.

# zfs destroy tank/containers/six@A
cannot destroy 'tank/containers/six@A': snapshot has dependent clones
use '-R' to destroy the following datasets:
tank/containers/five
tank/containers/two@B
tank/containers/two

Trong ví dụ trên, tôi không muốn phá hủy tank/containers/fivehoặc tank/containers/two, nhưng nếu tôi zfs promotenăm và hai, tôi vẫn không thể phá hủy bất kỳ ảnh chụp nhanh nào. Có một giải pháp?

# zfs list -t all -o name,origin,clones
NAME                         ORIGIN                       CLONES
tank                         -                            -
tank/containers              -                            -
tank/containers/five         tank/containers/two@B        -
tank/containers/four         tank/containers/six@C        -
tank/containers/one          -                            -
tank/containers/one@E        -                            tank/containers/three
tank/containers/two          tank/containers/six@A        -
tank/containers/two@B        -                            tank/containers/five
tank/containers/six          tank/containers/three@F      -
tank/containers/six@A        -                            tank/containers/two
tank/containers/six@C        -                            tank/containers/four
tank/containers/three        tank/containers/one@E        -
tank/containers/three@F      -                            tank/containers/six

Câu trả lời:


9

AFAIK bạn sẽ phải sao chép các bộ dữ liệu đó ra các bộ dữ liệu độc lập mới. Quảng cáo chỉ chuyển xung quanh tập dữ liệu nào là "cha mẹ" và "con", nó không thực sự phá vỡ bất kỳ sự phụ thuộc nào nếu bạn muốn giữ cả hai.

Ví dụ:

root@box~# zfs snapshot tank/containers/six@1 
root@box~# zfs send tank/containers/six@1 | pv | zfs receive tank/containers/newsix  
root@box~# zfs destroy -R tank/containers/six  
root@box~# zfs destroy tank/containers/three@F 
root@box~# zfs rename tank/containers/newsix tank/containers/six

Hãy dành thời gian của bạn và chắc chắn về những gì bạn đang làm. Đặc biệt với việc xóa thực tế.

Bản sao này là block-for-block, vì vậy nếu có bất kỳ dữ liệu quan trọng nào trong đó thì SILL sẽ mất một lúc. Phần pvnày là hoàn toàn tùy chọn, nhưng sẽ cung cấp cho bạn một thanh tiến trình để xem xét trong khi bạn chờ đợi.

Cũng có thể xem xét syncoid để tự động hóa các nhiệm vụ sao chép, bây giờ và trong tương lai. (Bắt buộc: Tôi là tác giả gốc của công cụ này, được cấp phép GPLv3 và miễn phí sử dụng.)


Jim, xin vui lòng tiết lộ liên kết của bạn với syncoid. Từ các quy tắc của trang web: "Đăng câu trả lời tốt, có liên quan và nếu một số (nhưng không phải tất cả) xảy ra về sản phẩm hoặc trang web của bạn, điều đó không sao. Tuy nhiên, bạn phải tiết lộ liên kết của mình trong câu trả lời của mình."
Costin Gușă

Rất vui, Costin - đã không nhận ra đó là một vấn đề lớn, vì tôi đã liên kết trực tiếp đến dự án GitHub repo và không nói một lời nào về dịch vụ tư vấn.
Jim Salter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.