Dlaczego „cp -R --reflink = always” wykonuje standardową kopię w systemie plików btrfs?


12

Btrfs obsługuje kopiowanie przy zapisie. Próbowałem użyć tej funkcji do sklonowania katalogu:

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

Oczekiwałem, że polecenie zakończy się prawie natychmiast (jak a btrfs subvolume snapshot), ale cpwydaje się, że polecenie wykonuje powolną, standardową kopię.

Według strony podręcznika spodziewałbym się, że będę --reflink=alwayswymuszał kopiowanie przy zapisie:

Jeśli podano opcję --reflink [= zawsze], wykonaj lekką kopię, w której bloki danych są kopiowane tylko po zmodyfikowaniu. Jeśli nie jest to możliwe, kopiowanie nie powiedzie się lub jeśli podano opcję --reflink = auto, wróć do standardowej kopii.

Pytania:

  • Czy wiesz dlaczego --reflink=alwaysnie działa?
  • Jakich opcji (lub innych poleceń) powinienem użyć zamiast tego?

Odpowiedzi:


20

cp --reflink=alwaysprawie na pewno działa poprawnie. Gdyby tak nie było, pojawiałby się błąd. Z założenia jest to różnica między --reflink=alwaysi --reflink=auto. Błąd wyglądałby następująco:

# 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

Czy kopiujesz strukturę katalogów z dużą ilością małych plików? W takim przypadku cpnadal trzeba utworzyć każdy katalog oraz otworzyć i zamknąć każdy plik, więc w przeciwieństwie do niego, to zajmie trochę czasu btrfs subvolume snapshot. To najprawdopodobniej tłumaczy czas potrzebny na wykonanie operacji.


3
Tak, zawiera ogromną liczbę plików, w większości małych plików tekstowych. Nie wiedziałem, że cp nadal musi przetwarzać każdy plik. Dzięki, tej części nie zrozumiałem. Myślę, że w moim przypadku użycia lepiej jest utworzyć zapisywalną migawkę.
Philipp Claßen,

1
Tak, jeśli możesz stworzyć migawkę, wybierz ją. cp --reflink=alwaysnadal może się przydać, gdy to, co próbujesz sklonować, nie jest źródłem podobjętości, ponieważ btrfs subvolume snapshotdziała tylko na podobjętościach, a nie na częściach podobjętości.
Celada
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.