ZFS: nén lại các tệp hiện có sau khi thay đổi thuật toán nén


14

Tôi có một nhóm được tạo vào năm 2011, bằng cách sử dụng lzjb compressionvà phải đến một vài năm sau đó, bản nâng cấp mới cho phép tôi đặt chế độ nén lz4. Tôi ước tính rằng ít nhất 20% nội dung (theo không gian) trên mảng đã được tạo trước năm 2013, có nghĩa là nó vẫn được nén bằng cách sử dụng lzjb.

Tôi có thể nghĩ ra một vài lựa chọn để sửa lỗi này và lấy lại (một số) dung lượng:

  1. Sao lưu và khôi phục lại một hồ bơi mới. Không thực sự thiết thực, vì tôi không có đủ dung lượng dự phòng để giữ bản sao tạm thời. Việc khôi phục cũng sẽ yêu cầu nhóm ngoại tuyến trong vài giờ.

  2. Viết một kịch bản để sao chép lại bất kỳ tệp nào có dấu thời gian cũ hơn năm 2013. Có khả năng rủi ro, đặc biệt là nếu nó bị kẹt trên khoảng trắng hoặc các ký tự đặc biệt khác và kết thúc việc xáo trộn tên gốc.

Có cách nào để ZFS nén lại bất kỳ khối kế thừa nào bằng thuật toán nén hiện tại không? Kiểu như một chà, nhưng chữa lành nén.

Một câu hỏi liên quan: có cách nào để xem cách sử dụng của từng loại thuật toán nén không? zdb chỉ hiển thị các số liệu thống kê nén tổng thể, thay vì chia chúng thành các thuật toán riêng lẻ.


2
Tôi khá chắc chắn rằng bạn đặt tên cho hai lựa chọn duy nhất. Xem thêm cuộc thảo luận trong vấn đề 3013 để biết lý do tại sao chức năng này không tồn tại và bạn có thể không muốn làm điều này cả.
Michael Hampton

2
lz4 được cho là nhiều nhất là 10% tốt hơn trên nén hơn lzjb. Nếu 20% dữ liệu của bạn có thể được nén 10% tốt hơn, bạn sẽ nhận được nhiều hơn 2% dung lượng trống. Nó có đáng không?
đường ống

1
Nếu bạn viết tập lệnh shell để thực hiện sao chép, hãy thêm export LC_ALL=Cvào phần đầu của tập lệnh và tất cả các ký tự đặc biệt không phải ASCII trong tên tệp sẽ được giữ nguyên. Giữ nguyên khoảng trắng và dấu gạch ngang là khó khăn hơn, sử dụng dấu ngoặc kép và --, vd cp -- "$SOURCE" "$TARGET".
pts

4
@pipe Space là một (rất) lợi thế nhỏ, nhưng tôi quan tâm nhiều hơn đến tốc độ giải nén. Từ trang quản lý các tính năng zpool FreeBSD: "Thông thường, nén lz4 nhanh hơn khoảng 50% đối với dữ liệu có thể nén và nhanh hơn 200% đối với dữ liệu không thể nén hơn lzjb. Nó cũng nhanh hơn khoảng 80% khi giải nén, trong khi cho tỷ lệ nén tốt hơn khoảng 10%. "
rowan194

@pts Tôi sẽ không tuân theo các quy tắc lập trình shell cơ bản (trích dẫn kép xung quanh các biến hoặc sử dụng --) "trickier". Điều đó cũng quan trọng như việc tránh SQL tiêm chẳng hạn.
glglgl

Câu trả lời:


14

Bạn phải sao chép dữ liệu (toàn bộ hoặc một phần) hoặc zfs gửi / nhận dữ liệu đến một nhóm mới hoặc hệ thống tệp ZFS.

Không có lựa chọn nào khác.

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.