5

Я фотограф-любитель, использующий базовую модель 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 ответа2

3

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

zpool scrub poolname

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

zpool status poolname

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

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

zfs set copies=2 poolname/filesystem

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

1

Затем я мог бы вручную заменить его копией с 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 , которая отключает контрольную сумму. (Справочная страница zfs (8) предупреждает, что отключение контрольных сумм НЕ рекомендуется , подчеркивает оригинал.)

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .