Làm thế nào để xác minh một bản sao tập tin là Reflink / CoW?


8

Tôi đang chơi với btrfs, cho phép cp --reflinksao chép trên ghi. Các chương trình khác, chẳng hạn như lxc-clone, cũng có thể sử dụng tính năng này. Câu hỏi của tôi là, làm thế nào để biết nếu một tập tin là CoW của người khác? Giống như đối với liên kết cứng, tôi có thể nói từ số inode.

Câu trả lời:


5

Câu hỏi hay. Có vẻ như hiện tại không có cách nào dễ dàng để nói.

Một vấn đề là một tệp chỉ có thể chia sẻ một phần dữ liệu thông qua Copy-on-Write. Đây được gọi là phạm vi vật lý và một số hoặc tất cả các phạm vi vật lý có thể được chia sẻ giữa các tệp CoW.

Không có gì tương tự với cái inodemà khi so sánh giữa các tệp sẽ cho bạn biết rằng các tệp có cùng mức độ vật lý. (Chỉnh sửa: xem câu trả lời khác của tôi ).

Câu trả lời ở mức độ thấp là bạn có thể yêu cầu nhân mà mức độ vật lý được sử dụng cho các tập tin bằng cách sử dụng , được ghi nhận ở . Về nguyên tắc, nếu tất cả các phạm vi vật lý đều giống nhau, thì tệp phải được chia sẻ cùng một bộ lưu trữ bên dưới.FS_IOC_FIEMAP ioctlDocumentation/filesystems/fiemap.txt

Vài điều thực hiện một cách để xem thông tin này ở mức cao hơn. Tôi tìm thấy một số mã đi ở đây . Rõ ràng filefragtiện ích được cho là hiển thị phạm vi với -v. Ngoài ra, btrfs-debug-treehiển thị thông tin này.

Tuy nhiên, tôi sẽ thận trọng vì những thứ này có thể ít được sử dụng trong mục đích này, bạn có thể thấy các lỗi đưa ra câu trả lời sai, vì vậy hãy cẩn thận khi dựa vào dữ liệu này để quyết định các hoạt động có thể gây ra hỏng dữ liệu.

Một số câu hỏi liên quan:


Câu trả lời chính xác! Làm thế nào bạn sẽ sử dụng btrfs-debug-treeđể liệt kê các phạm vi trên một tên tệp nhất định?
Tom Hale

4

Ngoài ra với câu trả lời trước đây của tôi , tôi vừa phát hành fienodetính toán hàm băm SHA1 của các mức độ vật lý của tệp và có thể được sử dụng để tìm một số bản sao phản xạ (giống hệt). Hãy coi chừng, có những cảnh báo (xem tài liệu ). BTRFS đã quyết định thay đổi một số, nhưng không phải tất cả, về mức độ vật lý của một bản sao refink tôi đã thực hiện mà không có sự khiêu khích hoặc cảnh báo, khiến giá trị thay đổi.

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.