Я намагаюся зробити копіювальні копії деяких файлів / каталогів, але з декількох мені відомих способів все здається неоптимальним.
Наприклад, btrfs може, з використанням cp --reflink=auto
швидко створювати коров’ячі копії файлів.
Що я спробував:
- Символьні посилання: Немає користі. Перейменований файл, пошкоджене посилання.
- Тверді посилання: Краще, але все-таки нічого доброго. Зміни одного файлу змінять інший, і я не обов'язково хочу, щоб інший файл був змінений.
- Створіть знімок набору даних, а потім клонуйте знімок: Це може працювати, але не дуже добре. Часто я не шукаю копії цілого набору даних або для того, щоб копії діяли як інший набір даних. Тоді між клоном / знімком / оригіналом виникають відносини батько / дитина, які, як я розумію, важко, якщо не неможливо розірвати.
- Використовуючи
zfs send/receive
та увімкнувши дедуппію, копіюйте набір даних на новий набір даних: Це дозволяє уникнути взаємовідносин між батьками та дітьми при використанні клону, але все-таки непотрібно створювати інший набір даних, і все ще страждає від повільності, пов'язаної з тим, що файли потрібно читати на 100% і блоки, на які посилається знову, замість написаних. - Скопіюйте файли та дозвольте дедупу виконувати свою роботу: Це працює, але повільно, оскільки файли (файли) повинні бути на 100% прочитані, а потім на блоки знову посилаються замість написання.
Повільність надсилання / прийому zfs та фізичного копіювання чи rsyncing ще більше посилюється, оскільки більшість речей зберігаються стислими та підлягають декомпресії під час читання, після чого стискаються, перш ніж дедуп починає посилатися на повторювані блоки.
У всіх своїх дослідженнях мені не вдалося знайти нічого віддаленого, що нагадувало б простоту --reflink у btrfs.
Отже, чи існує спосіб створення коров’ячих копій у ZFS? Або "фізично" копіювання та надання дедупу робити свою справу єдино реальним варіантом?