Я использую синкоид из саноид проект для создания копий файловых систем ZFS на другом компьютере в моей тестовой среде (пара Raspberry Pi)
Я испортил снимок на исходной машине: один сервер запаниковал во время передачи снимка, а позже я удалил снимок, который передавался.
Я вручную создал новый снимок и успешно восстановил его на цели.
Теперь, когда я запускаю syncoid на целевом сервере, используя:
${SYNCOID} --sshkey="${SSH_KEY}" root@${REMOTE_SERVER}:${SRC_POOL}/${SAMPLE_FILESYSTEM} ${DEST_POOL}
он жалуется, что не может возобновить транзакцию отправки / получения
Во время обычных операций syncoid извлекает receive_resume_token на целевой машине:
/usr/local/sbin/zfs get -H receive_resume_token 'destpool/samplefs'
Если он его находит, он пытается получить снимок, соответствующий этому токену на исходной машине:
ssh sourceserver zfs send -t (token stored in receive_resume_token retrieved above) | (network stuff...) | zfs receive -s -F 'destpool/samplefs'
cannot resume send: 'sourcepool/samplefs@samplesnap' used in the initial send no longer exists
Единственный способ заставить его работать - это добавить флаг "--no-resume" к команде syncoid. Это не то, что я хочу, так как некоторые файловые системы очень большие и в этом окружении вероятны сбои в работе систем.
Я попытался очистить этот токен, запустив:
zfs recv -A 'srcpool/samplefs'
на исходной машине и:
zfs recv -A 'destpool/samplefs'
на целевой машине я получаю:
srcpool/samplefs does not have any resumable receive state to abort
(на целевой машине это destpool / samplefs)
Вопрос: есть ли способ очистить атрибут receive_resume_token в целевой файловой системе?
Обратите внимание, что эта проблема присутствует только в ОДНОЙ файловой системе. На обеих машинах есть много других рабочих передач в обоих направлениях с использованием одного и того же набора команд.
Если zfs recv -A
не помогает, вы можете попробовать уничтожить (или переименовать) целевой набор данных и повторно синхронизировать его.
Также обратите внимание на использование syncoid
с --no-resume
вариант не должен быть проблемой: даже для больших наборов данных инкрементные обновления, как правило, довольно малы и не получают преимуществ от поддержки возобновления (что, наоборот, может быть полезно для первой полной синхронизации).