Назад | Перейти на главную страницу

Отправка / получение ZFS не работает последовательно с «ошибкой ввода / вывода»

У меня ZFS-диск с включенной дедупликацией. Я скопировал данные со многих других старых жестких дисков на этот диск ZFS, в конечном счете, с намерением избавиться от всех исходных дисков. Мне нужно сделать резервную копию диска ZFS, но у меня ужасные проблемы с тем, чтобы это работало.

Для резервного диска я подготовил второй диск такого же размера, что и исходный диск, и подключил его к той же машине. Оба они являются внешними USB-накопителями. Я создал снимок на исходном диске, а затем использовал следующую инструкцию, чтобы отправить его на резервный диск:

zfs send srcpool/dedup@snap1 | zfs recv backuppool/dedup

Но это никогда не завершится (по причинам, которые я не могу вспомнить). Чтобы попытаться исключить какую-нибудь глупую ошибку в конфигурации или синтаксисе команды, я с тех пор пытался использовать синкоид вместо. Однако это также постоянно терпит неудачу, каждый раз после дня или двух копирования, например:

$ sudo syncoid srcpool/dedup backuppool/dedup                                                                                                                                                       
INFO: Sending oldest full snapshot srcpool/dedup@snap1 (~ 3227.7 GB) to new target filesystem:
warning: cannot send 'srcpool/dedup@snap1': Input/output error=============================================>                                                                                         ] 46% ETA 21:18:35
1.45TiB 18:15:37 [23.2MiB/s] [=========================================================================>                                                                                         ] 46%             
cannot receive new filesystem stream: checksum mismatch or incomplete stream.
Partially received snapshot is saved.
A resuming stream can be generated on the sending system by running:
    zfs send -t 1-b12345678-b8-1234567890
CRITICAL ERROR:  zfs send  'srcpool/dedup'@'snap1' | mbuffer  -q -s 128k -m 16M 2>/dev/null | pv -p -t -e -r -b -s 3465678004032 |  zfs receive  -s -F 'backuppool/dedup' failed: 256 at /usr/sbin/syncoid line 474.

Когда затем пытаюсь возобновить работу, я сразу и последовательно получаю следующее:

$ sudo syncoid srcpool/dedup backuppool/dedup                                                                                                                                                   
Resuming interrupted zfs send/receive from srcpool/dedup to backuppool/dedup (~ 1738.2 GB remaining):
warning: cannot send 'srcpool/dedup@snap1': Input/output error
 264KiB 0:00:00 [ 745KiB/s] [>                                                                                                                                                                    ]  0%            
cannot receive resume stream: checksum mismatch or incomplete stream.
Partially received snapshot is saved.
A resuming stream can be generated on the sending system by running:
    zfs send -t 1-b87654321-b8-0987654321
CRITICAL ERROR:  zfs send  -t 1-b12345678-b8-1234567890 | mbuffer  -q -s 128k -m 16M 2>/dev/null | pv -p -t -e -r -b -s 1866392479776 |  zfs receive  -s -F 'backuppool/dedup' 2>&1 failed: 256 at /usr/sbin/syncoid line 559.

Ни экспорт / повторный импорт дисков, ни перезапуск всей машины не позволяют мне пройти этот момент. Он будет постоянно говорить cannot receive resume stream: checksum mismatch or incomplete stream при попытке возобновить.

Поэтому вместо этого я уничтожил резервный пул (на резервном диске) и попробовал еще несколько раз. Каждый раз, когда процесс в конечном итоге завершается сбоем с «ошибкой ввода / вывода», как указано выше, примерно в середине процесса.

В настоящее время я снова запускаю этот процесс с опцией syncoid "--debug", но, без сомнения, пройдет еще полтора дня, пока он снова не выйдет из строя с (надеюсь) дополнительной информацией.

Будем очень признательны за любые подсказки о том, как я могу отладить или решить эту проблему! Спасибо.