Вопрос или проблема
У меня возникла странная проблема с ZFS инкрементальными снимками. Допустим, у меня есть следующие тома. kirssy
является резервной копией для abby
:
NAME USED AVAIL REFER MOUNTPOINT
abby 8.20T 4.40T 192K /mnt/abby
abby/main 8.20T 4.40T 8.20T /mnt/abby/main
abby/main@2024-10-08 399M - 8.06T -
abby/main@2025-01-18 14.2M - 8.19T -
krissy 8.06T 8.17T 192K /mnt/krissy
krissy/main 8.06T 8.17T 8.06T /mnt/krissy/main
krissy/main@2024-10-08 0B - 8.06T -
Если я запущу следующее:
zfs send -i abby/main@2024-10-08 abby/main@2025-01-18 | pv | zfs recv krissy/main
Попытка записать этот снимок в подтом krissy/main
приводит к тому, что полное имя будет krissy/main/main
:
krissy 8.06T 8.17T 192K /mnt/krissy
krissy/main 8.06T 8.17T 8.06T /mnt/krissy/main
krissy/main@2024-10-08 0B - 8.06T -
krissy/main/main 970M 8.17T 970M /mnt/krissy/main/main
Я попробовал изменить команду recv
на zfs recv krissy
, но появляется сообщение most recent snapshot of krissy does not match incremental source
.
Раньше с этим не сталкивался. Почему он позволяет мне получать снимок только в подтом оригинального тома с таким же именем?
Я использую Alpine 3.20.5 и zfs/zfs-kmod 2.2.5-1.
Ответ или решение
Главная проблема, с которой вы столкнулись, связана с неправильной интерпретацией команды zfs recv
при приеме инкрементных снимков. Рассмотрим ситуацию детальнее:
Теория
ZFS, или Zettabyte File System, предоставляет мощные инструменты для управления данными, включая создание и пересылку снимков файловых систем. Снимки ZFS используют метод инкрементной передачи: изменения передаются от предыдущего снимка к следующему, что позволяет экономить место и увеличивает скорость передачи. Однако данный процесс может столкнуться с проблемами, если структура пути размещения снимков не совпадает между источником и назначением.
Когда вы используете команду zfs send -i
, вы передаете изменения от одного снимка к другому. Команда zfs recv
должна правильно интерпретировать эти изменения и применять их к целевому пулу. Здесь важно знать, что ZFS чувствителен к совпадению имен снимков и подтомов. Когда структура целевого пула не соответствует ожидаемой, ZFS пытается создать новый подтом с оригинальным именем.
Пример
В вашей ситуации команда zfs send -i abby/main@2024-10-08 abby/main@2025-01-18
передает изменения между двумя снимками, ожидая, что подобная структура уже имеется на целевом диске. Однако, ZFS, не найдя подходящего снимка на krissy/main
, создает новую иерархию, в результате чего вы получаете krissy/main/main
.
Когда вы пробуете команду zfs recv krissy
, ZFS хочет, чтобы последний снимок на krissy
соответствовал снимку-источнику, поскольку инкрементное обновление применимо только к одинаковым аналогичным снимкам.
Применение
Чтобы исправить эту ситуацию, необходимо удостовериться, что структура снимков на целевом пуле соответствует источнику. Один из способов — это создать мгновенные снимки вручную или применить ключ zfs rollback
для настройки снимков на клеточном пуле до состояния, соответствующего снимку-источнику. Однако при использовании rollback стоит быть осторожным, так как это может привести к утрате некоторых данных.
Попробуйте следующий порядок действий:
-
Сверка снимков: Убедитесь, что снимок
krissy/main@2024-10-08
идентиченabby/main@2024-10-08
в плане данных и структуры (используя команды вродеzfs diff
для проверки). -
Создание необходимого снимка: Если нужного снимка нет в целевом пуле, вручную создайте его, например:
zfs snapshot krissy/main@2024-10-08
. -
Запуск передачи: После создания снимка попробуйте повторно запустить передачу:
zfs send -i abby/main@2024-10-08 abby/main@2025-01-18 | pv | zfs recv krissy/main
-
Использование ключа
-F
: Если совпадение снимков гарантировано, можно использовать ключ-F
для принудительного приложения снимка:zfs send -i abby/main@2024-10-08 abby/main@2025-01-18 | pv | zfs recv -F krissy/main
Использование этих шагов должно улучшить управление и передачу снимков в вашей ZFS-пульной системе, избегая создания ненужных подтомов.
Заключение
ZFS мощная и многофункциональная файловая система, но требует внимательного подхода к управлению снимками и миграции данных. Соблюдение правильной структуры и понимание работы с инкрементными снимками может помочь избежать различных проблем с дублированием подтомов. Если проблема сохраняется, рекомендуется изучить форумы и документацию ZFS или обратиться за консультацией к профессионалам, чтобы обеспечить наиболее эффективную реализацию ZFS на вашей системе.