Staram się tworzyć krowie kopie niektórych plików / katalogów, ale z kilku znanych mi sposobów wszystkie wydają się nieoptymalne.
Na przykład, btrfs może, za pomocą cp --reflink=auto
szybkiego generowania krowich kopii plików.
Co próbowałem:
- Symlinks: Nie dobrze. Zmieniono nazwę pliku, uszkodzony link.
- Twarde linki: lepsze, ale wciąż nie są dobre. Zmiany w jednym pliku zmienią drugi, i niekoniecznie chcę, aby drugi plik został zmieniony.
- Utwórz migawkę zestawu danych, a następnie sklonuj migawkę: To może działać, ale nie dobrze. Często nie szukam kopii całego zestawu danych ani kopii, które działałyby jak inny zestaw danych. Są też relacje rodzic / dziecko między klonem / migawką / oryginałem, które, jak rozumiem, są trudne, jeśli nie niemożliwe, do zerwania.
- Za pomocą
zfs send/receive
i włączonej deduplikacji replikuj zestaw danych do nowego zestawu danych: Pozwala to uniknąć relacji rodzic / dziecko korzystania z klonu, ale wciąż niepotrzebnie tworzy inny zestaw danych i wciąż cierpi na powolność związaną z plikami, które muszą być odczytane w 100% i bloki odwoływały się ponownie zamiast pisać. - Skopiuj pliki i pozwól deduprze wykonać swoje zadanie: Działa to, ale działa wolno, ponieważ pliki muszą być w 100% odczytane, a następnie bloki ponownie odwoływane zamiast pisać.
Powolność wysyłania / odbierania ZFS i fizycznego kopiowania lub rsynchronizacji jest jeszcze bardziej zaostrzona, ponieważ większość rzeczy jest przechowywana w formie skompresowanej i musi zostać zdekompresowana podczas odczytu, a następnie skompresowana przed uruchomieniem deduplikacji w celu odniesienia do duplikatów bloków.
We wszystkich moich badaniach nie udało mi się znaleźć niczego, co przypominałoby prostotę --reflink w btrfs.
Czy istnieje sposób tworzenia kopii krów w ZFS? Czy też „fizyczne” kopiowanie i pozwalanie deduplikacji wykonywać swoją pracę jest jedyną realną opcją?