Tại sao, cp cp -R --reflink = luôn luôn thực hiện một bản sao tiêu chuẩn trên hệ thống tập tin btrfs?


12

Btrfs hỗ trợ Copy-On-Write. Tôi đã cố gắng sử dụng tính năng đó để sao chép một thư mục:

cp -R --reflink=always foo_directory foo_directory.mirror

Tôi dự kiến ​​lệnh sẽ hoàn thành gần như ngay lập tức (như a btrfs subvolume snapshot), nhưng cplệnh dường như thực hiện một bản sao chậm, chuẩn.

Theo trang man, tôi dự kiến ​​sẽ --reflink=alwaysthực thi Copy-On-Write:

Khi --reflink [= always] được chỉ định, hãy thực hiện một bản sao nhẹ, trong đó các khối dữ liệu chỉ được sao chép khi sửa đổi. Nếu điều này là không thể, bản sao thất bại hoặc nếu --reflink = auto được chỉ định, hãy quay lại bản sao tiêu chuẩn.

Câu hỏi:

  • Bạn có biết tại sao --reflink=alwayskhông làm việc?
  • Thay vào đó, tôi nên sử dụng tùy chọn nào (hoặc các lệnh khác)?

Câu trả lời:


20

cp --reflink=alwaysgần như chắc chắn hoạt động chính xác. Nếu không, bạn sẽ gặp lỗi. Theo thiết kế, đó là sự khác biệt giữa --reflink=always--reflink=auto. Lỗi sẽ như thế này:

# Filesystem that does not support the feature at all
cp: failed to clone `xx' from `yy': Inappropriate ioctl for device

# Filesystem that does support it, but copy across filesystems
cp: failed to clone `xx' from `yy': Invalid cross-device link

Bạn đang sao chép một cấu trúc thư mục với nhiều tệp nhỏ? Trong trường hợp đó cpvẫn phải tạo mọi thư mục và mở và đóng mọi tệp, vì vậy nó sẽ vẫn mất thời gian, không giống như btrfs subvolume snapshot. Điều đó rất có thể giải thích thời gian cần thiết để thực hiện các hoạt động.


3
Vâng, nó chứa một số lượng lớn các tệp, hầu hết là các tệp văn bản nhỏ. Tôi không biết rằng cp vẫn phải xử lý mọi tập tin. Cảm ơn, đó là phần mà tôi không hiểu. Tôi nghĩ trong trường hợp sử dụng của mình, tốt hơn là tạo một ảnh chụp nhanh có thể ghi.
Philipp Claßen

1
Vâng, nếu bạn có thể tạo một ảnh chụp nhanh thì hãy tìm nó. cp --reflink=alwaysvẫn có thể có ích khi những gì bạn đang cố gắng sao chép không phải là gốc của một subvolume, vì btrfs subvolume snapshotchỉ hoạt động trên các subvolume, không phải trên các phần của subvolume.
Celada
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.