Как восстановить поврежденный файл на реплике ZFS?

У меня есть две машины: одна с основным хранилищем файлов ZFS на 24 ТБ, а другая - клон этого хранилища файлов в качестве резервной копии. Время от времени я создаю новый снимок на первичном и выполняю дифференциальное zfs sendна резервную машину. Первичный - raidz3, а вторичный - только полосатый.

Недавно в резервной копии был обнаружен поврежденный файл во время обычной очистки. Файл не поврежден в основном хранилище файлов, поэтому, если бы это были две рабочие файловые системы, я мог бы просто скопировать хороший файл в резервную копию и покончить с этим. Но с zfs send к zfs recvрабочий процесс, я не знаю, как с этим справиться. Каков наилучший подход к исправлению этого искажения, чтобы я сохранил способность делать дифференциал? zfs send? Я полагаю, я мог бы изменить файл на основном компьютере и надеяться, что он будет добавлен как часть следующей резервной копии, но я даже не уверен на 100%, какое изменение в этом файле приведет к его обновлению.

1 ответ

Вам нужно будет переписать весь файл, чтобы все блоки изменились. Предполагая, что вы не используете дедупликацию, должно работать что-то вроде этого:

cat brokenfile > brokenfile2
mv brokenfile2 brokenfile
zfs snapshot ...
zfs send

Это должно дать вам полный рабочий файл на сервере резервного копирования.

Другие вопросы по тегам