Внешний жесткий диск отформатирован в ZFS, другой внешний жесткий диск в качестве (автономного) резервного копирования. Как мне защитить мои данные от тихого повреждения?

Я фотограф-любитель, использующий базовую модель MacBook Air (128 ГБ SSD) с двойной загрузкой macOS/Ubuntu 16.04. Поскольку твердотельный накопитель слишком мал, чтобы хранить мою библиотеку фотографий, я использовал его для хранения на 2,5 ГБ 2,5-дюймовом внешнем жестком диске, который ранее использовал в качестве резервного диска. Очевидно, у меня больше не было резервной копии моих фотографий. из этого я купил внутренний жесткий диск на 2 ТБ, который я использую с 3,5"док-станцией. Последний теперь стал моим "основным" внешним жестким диском, с 2,5-дюймовым диском снова.

Вчера я отформатировал диск 2 ТБ в ZFS, потому что хочу защитить свои фотографии от тихого повреждения данных (немного гнили). 3,5-дюймовый жесткий диск ранее был отформатирован в HFS+, и я использовал Darktable на macOS для управления / редактирования / любых фотографий:). Теперь я буду использовать Darktable в Ubuntu 16.04 (включая новую официальную поддержку ZFS) с моей библиотекой фотографий Я прочитал, что ZFS автоматически обнаруживает и пытается исцелить поврежденные данные, вычисляя контрольные суммы данных. Затем я понял, что бит самовосстановления возможен только с зеркальным пулом. Но ZFS также может уведомить меня о том, что конкретная фотография является поврежден, и я мог бы затем вручную заменить его копией с 2,5-дюймового диска резервного копирования, прежде чем резервная копия будет загрязнена поврежденной версией.

К сожалению, я прочитал, что ZFS не уведомляет пользователя, когда обнаруживает поврежденные файлы во время автоматического вычисления / сравнения контрольной суммы. Так что моя идея не возможна. Конечно, я мог бы просто отразить пул с 2,5-дюймовым диском, но я не хочу, чтобы он был подключен постоянно, потому что:

  1. мой MacBook Air имеет только 2 порта, которые будут использоваться тогда, а это значит, что я не смогу использовать свою внешнюю клавиатуру (мой дешевый USB-концентратор некоторое время назад умер, и я не очень хочу его заменять;))

  2. Я не хочу излишне стирать резервный диск

Так что было бы лучшим решением для защиты моих данных от гниения с помощью принадлежащего мне оборудования? Конечно, моя ситуация не настолько уникальна;)

2 ответа

Решение

У меня похожий рабочий процесс. Вы должны периодически чистить внешний диск:

zpool scrub poolname

Это займет несколько часов, в зависимости от размера вашего бассейна. Вы можете проверить статус:

zpool status poolname

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

В качестве альтернативы иза счет емкости диска вы можете обеспечить избыточность вашего пула на уровне файловой системы ZFS, используя copiesсвойство сообщать ZFS о создании нескольких копий:

zfs set copies=2 poolname/filesystem

Установка этого свойства повлияет только нановые записанные данные, поэтому вы должны установить их во время или сразу после создания пула и файловой системы.

Затем я мог бы вручную заменить его копией с 2,5-дюймового резервного диска до того, как резервная копия будет загрязнена поврежденной версией. К сожалению, я прочитал, что ZFS не уведомляет пользователя, когда он обнаруживает поврежденные файлы во время автоматической контрольной суммы расчет / сравнение. Так что моя идея не возможна.

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

Что было бы лучшим решением для защиты моих данных от гниения с помощью принадлежащего мне оборудования?

Если вы хотите хотя бы частичную фактическую защиту от гниения на одном диске, то вам следует установить copies=2 в вашем бассейне. Обратите внимание, что это эффективно уменьшает емкость хранилища вдвое и должно быть выполнено до сохранения данных в пуле. (Вы также можете заставить этот параметр вступить в силу, переписав файлы, скажем, скопировав их в отдельный каталог и затем скопировав их обратно перед удалением второй копии.) Еще лучше установить свойства, такие как checksum, copies, compression и так далее при создании пула, если это возможно.

Имея только одну копию и без избыточного хранилища, ZFS может обнаруживать, но не исправлять большинство ошибок уровня хранилища. (Метаданные всегда хранятся с дополнительной копией, поэтому, если у вас есть пул с одним vdev без избыточности и копий =1, вы получите две фактические копии критических метаданных.) Для этого очистите пул, выполнив sudo zpool scrub poolname, Если вам нужно отменить запущенный скраб, запустите sudo zpool scrub poolname -s (-s обозначает "стоп"). После завершения очистки вы можете получить список всех файлов, затронутых ошибками на уровне хранилища, запустив zpool status poolname -v который, будем надеяться, напечатает no known data errors, Затем вы можете решить, хотите ли вы выбросить эти файлы или восстановить их из резервных копий. Обратите внимание, что можно запустить ZFS с checksum=off, который отключает контрольную сумму. (Страница man zfs(8) предупреждает, что отключение контрольных сумм НЕ рекомендуется, подчеркивает оригинал.)

Вы должны регулярно запускать скрабы. Сколько времени занимает очистка, во многом зависит от того, сколько у вас данных и ваших шаблонов записи (запись больших файлов один раз, в которые никогда не производится запись, намного лучше в этом отношении, чем небольшие файлы, которые регулярно обновляются на месте) из-за копирования ZFS -при записи архитектуры в конечном итоге приводит к фрагментации. Я рекомендую проводить скрабы не реже, чем каждые несколько недель. С несколькими сотнями гигабайт данных (на основании вашего заявления, которое вы использовали для хранения фотографий на диске 500 ГБ), очистка не должна занимать более нескольких часов.

Я не хочу излишне стирать резервный диск

Как правило, то, что убивает магнитные вращающиеся жесткие диски, - это раскрутка и физическая сила. Магнитный вращающийся жесткий диск не страдает от износа флэш-накопителей SSD (что, как правило , не является проблемой современных SSD). И жесткие диски, и твердотельные накопители спроектированы и созданы для использования, и пока они здоровы, они могут сильно пострадать. (Это когда жесткий диск маргинальный, вы должны начать беспокоиться и скопировать данные с него как можно скорее.)

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