Я пытаюсь сделать коровьи копии некоторых файлов / каталогов, но из нескольких известных мне способов все кажется неоптимальным.
Например, btrfs может cp --reflink=auto
быстро создавать копии файлов коров.
Что я пробовал:
- Симлинки: не хорошо. Переименован файл, битая ссылка.
- Жесткие ссылки: лучше, но все равно не хорошо. Изменения в одном файле изменят другой, и я не обязательно хочу, чтобы другой файл был изменен.
- Создайте снимок набора данных, а затем клонируйте снимок: это может работать, но не очень хорошо. Часто я не ищу копию всего набора данных или копии, которые будут действовать как другой набор данных. Кроме того, между клоном / снимком / оригиналом существуют родительские / дочерние отношения, которые, как я понимаю, трудно, если не невозможно нарушить.
- Используя
zfs send/receive
и включив дедупликацию, реплицируйте набор данных в новый набор данных: это позволяет избежать родительских / дочерних отношений при использовании клона, но все равно без необходимости создает другой набор данных и все еще страдает от медленности, связанной с тем, что файлы должны быть прочитаны на 100% и блоки ссылаются снова, а не записаны. - Скопируйте файлы и дайте дедупликации выполнить свою работу: это работает, но медленно, потому что файлы должны быть прочитаны на 100%, а затем на блоки снова сослаться вместо записи.
Замедление отправки / получения zfs и физического копирования или повторного синхронизации еще более усугубляется, поскольку большинство вещей хранятся в сжатом виде, и их необходимо распаковать во время чтения, а затем сжать, прежде чем включится дедупликация, чтобы сослаться на дублирующие блоки.
Во всех моих исследованиях я не смог найти ничего похожего на простоту --reflink в btrfs.
Итак, есть ли способ создания коровьих копий в ZFS? Или «физически» копирование и разрешение дедупликации делают свою работу единственным реальным вариантом?