Как восстановить поврежденный файл на реплике ZFS?
У меня есть две машины: одна с основным хранилищем файлов ZFS на 24 ТБ, а другая - клон этого хранилища файлов в качестве резервной копии. Время от времени я создаю новый снимок на первичном и выполняю дифференциальное
zfs send
на резервную машину. Первичный - raidz3, а вторичный - только полосатый.
Недавно в резервной копии был обнаружен поврежденный файл во время обычной очистки. Файл не поврежден в основном хранилище файлов, поэтому, если бы это были две рабочие файловые системы, я мог бы просто скопировать хороший файл в резервную копию и покончить с этим. Но с
zfs send
к
zfs recv
рабочий процесс, я не знаю, как с этим справиться. Каков наилучший подход к исправлению этого искажения, чтобы я сохранил способность делать дифференциал?
zfs send
? Я полагаю, я мог бы изменить файл на основном компьютере и надеяться, что он будет добавлен как часть следующей резервной копии, но я даже не уверен на 100%, какое изменение в этом файле приведет к его обновлению.
1 ответ
Вам нужно будет переписать весь файл, чтобы все блоки изменились. Предполагая, что вы не используете дедупликацию, должно работать что-то вроде этого:
cat brokenfile > brokenfile2
mv brokenfile2 brokenfile
zfs snapshot ...
zfs send
Это должно дать вам полный рабочий файл на сервере резервного копирования.