Недавно я прочитал тревожную статистику по уровню повреждения в системах с не-ECC RAM и типичными файловыми системами. Насколько я могу судить по Google, наличие системы с ECC RAM, работающей на ZFS, вероятно, является лучшим способом предотвращения повреждения. Большая часть этой информации была в контексте обсуждений NAS.
Я понимаю, как такая система могла бы быть полезна для архивирования файлов, при условии, что они еще не повреждены на исходном компьютере и без проблем передаются по сети.
Чего я не смог погуглить, так это: какой смысл иметь максимально надежный NAS-хостинг файлов (или в качестве резервного копирования), когда я работаю с файлами на менее надежных компьютерах? Я также не могу найти хорошую информацию об исправлении ошибок в Samba (какой бы последней версии ни была в ОС с поддержкой ZFS, например, FreeNAS или OpenIndiana) - если она вообще подвержена ошибкам, то почти все остальное бессмысленно (если только я лично не хеширую все и не проверяю все передачи).
Нужно ли мне (образно) выбрасывать мои текущие системы и заменять их на (мини)серверное оборудование, если я не хочу беспокоиться о битовой гнили и т. д.? И если я пойду по этому пути, могу ли я разумно ожидать, что у меня будут ресурсы для чего-то, кроме работы ZFS? Не тратя тысячи долларов?
Мой вариант использования:
Меня волнует не только воспроизведение (например, фильмов и других медиафайлов). Я часто занимаюсь программированием на своих домашних компьютерах. Например, у меня постоянно растет количество файлов базы данных SQLite для различных проектов. Если один из них повредится, это может стать проблемой. У меня также есть много гигабайт семейных и отпускных фотографий, которые я хочу не только архивировать, но и организовывать, помечать и т. д. Поэтому, хотя я и не управляю банком, у меня есть вещи, которые трудно заменить, и я ненавижу думать об их «тихой порче».
решение1
ZFS весьма требовательна к оборудованию, на котором она работает.
Не в том смысле, что у вас должен быть именно тот чипсет, видеокарта, версия прошивки диска и т. д., а в смысле возможностей, предоставляемых оборудованием. Помните, ZFS была разработана как высокопроизводительное серверное решение, и некоторые предположения, которые она делает, отражают это.
Основная причина, по которой ZFS так хороша для хранения важных для вас данных, заключается в том, что вы можете настроить ее таким образом, чтобы она могла обнаруживатьи правильноОшибки в хранилище. Это могут быть тривиальные ошибки, например, одиночный битовый сдвиг где-то, или катастрофические ошибки, например, одновременный сбой нескольких дисков. Пока вы остаетесь выше порога избыточности вашей схемы хранилища (например, не более двух дисков одновременно испытывают проблемы в raidz2 vdev), ZFS может исправить любую ошибку, используя избыточные данные. Дальнейшие ошибки, в зависимости от того, где и как они происходят, могут привести к (полу) изящной системной панике или простой ошибке ввода-вывода.
Если вы сделаете это правильно, вы также настроите свою систему на очистку пула(ов) ZFS через регулярные интервалы. Это позволит обнаружить деградацию до того, как она станет проблемой, и уведомит вас об этом, чтобы вы могли рассмотреть замену устройств хранения, которые испытывают трудности с удержанием ваших данных, до того, как это станет проблемой.
Однако это величиезависит от того, можно ли доверять оперативной памяти.Вся эта проверка, исправление, перезапись и т. д. происходит в основном в оперативной памяти. На высокопроизводительных серверах вы не найдете ничего, кроме ECC RAM.
ZFS защищает (и обрабатывает) метаданные пула, метаданные файловой системы и пользовательские данные одинаково.Здесь нет никакой особой разницы.
Если ваша рабочая станция испытывает инвертирование бита RAM, то когда вы записываете инвертированные биты в ZFS, инвертированные биты будут основой для того, что ZFS в конечном итоге запишет на диск. Это, очевидно, плохо, потому что это означает, что ваш файл будет поврежден. Однако инвертированные биты будутправильно, насколько это касается ZFS. Это на самом делехороший, потому что это означает, что все обычные методы восстановления ZFS будут работать. Да, самая последняя копия файла будет повреждена, ноэто было бы коррумпировано в любом случае,независимо от того, какую файловую систему вы использовали.Вы можете использовать моментальные снимки ZFSчтобы хотя бы иметь возможность вернуться назад во времени к неповрежденной копии. Настройте что-то вродеzfs-авто-привязкадля создания снимков файловых систем с регулярными, близкими интервалами, сохраняйте более грубую историю в обратном направлении и забудьте о ней, пока она вам не понадобится. (Например, сохраняйте десять снимков с интервалом в десять минут; 50 снимков с интервалом в один час; 30 снимков с интервалом в шесть часов; и т. д.) Снимки практически бесплатны в ZFS; если вы используете ZFS,использовать моментальные снимкитакже.
Если на вашем сервере хранения, работающем под управлением ZFS, возникли проблемы с оперативной памятью, будь то переворот бита или застревание (одного или нескольких) битов, и на сервере хранения есть ECC RAM, это будет обнаружено, и событие будет зарегистрировано, или система будет остановлена (если ошибку невозможно исправить). В любом случае целостность данных, хранящихся на сервере, сохраняется. Если на вашем сервере хранения ZFS есть не-ECC RAM,то ошибка может распространиться на все ваши данные и метаданные.поскольку ZFS пытается «исправить» ошибки, которые на самом деле являются лишь плодом воображения компьютера. В худшем случае,что на самом деле происходит с людьми, весь ваш пул будет разрушен из-за этого, и все ваши данные исчезнут. Избыточность на уровне хранилища/vdev-уровня здесь тоже не поможет. В большинстве других файловых систем (без поведения автокоррекции) будет повреждено только одно место, которое было напрямую затронуто переворотом бита, и если это произойдет с метаданными файловой системы, это, скорее всего, будет легко исправлено традиционными средствами проверки и восстановления файловой системы. ZFS не имеет этого аварийного выхода;нет fsck.zfs.(Естьzpool скраб, но это не сработает, если бассейн сломан и не подлежит ремонту.)
Чего я не смог найти в Google, так это: какой смысл иметь максимально надежный NAS-хостинг файлов (или в качестве резервного копирования), если я работаю с файлами на менее надежных компьютерах?
Это означает, что у вас есть надежное хранилище данных.Вы знаете, что как только данные попадают на ваш NAS, они защищены от повреждения. Любое повреждение будет либо исправлено автоматически, либо вы будете уведомлены о проблеме (в случае ZFS, через ошибку ввода-вывода). Данные все еще могут быть повреждены, пока они обрабатываются с использованием менее надежных систем, но у вас будет место, куда можно обратиться за известной неповрежденной копией. Это преимущество, даже если только система NAS имеет ECC RAM, ZFS и высококачественный мониторинг хранилища и оповещения.
Затем, при желании, вы можете добавить (в частности) ECC RAM в другие свои системы, если позволяет ваш бюджет, чтобы заткнуть последнюю дыру.
Нужно ли мне (образно) выбрасывать мои текущие системы и заменять их на (мини)серверное оборудование, если я не хочу беспокоиться о битовой гнили и т. д.? И если я пойду по этому пути, могу ли я разумно ожидать, что у меня будут ресурсы для чего-то, кроме работы ZFS? Не тратя тысячи долларов?
Во-первых, вам на самом деле не нужно серверное оборудование.В первую очередь вам понадобится ECC RAM (а также процессор и контроллер памяти/чипсет, поддерживающие ECC RAM),достаточно надежное постоянное хранилище, а в идеале — корпус, который позволяет легко добавлять и удалять диски во время работы системы. Это не обязательно должно быть очень дорогим, и уж точно не должно стоить «тысячи долларов».
Во-вторых, ZFS любит ОЗУ, но в основном для кэширования. Для большинства рабочих нагрузок 8-16 ГБ ОЗУ должно быть вполне достаточно, а 24-32 ГБ (легко достижимые даже на материнских платах "потребительского" класса) все еще разумно оценены даже при покупке высококачественной фирменной ECC ОЗУ. ZFS не так уж и прожорлива к процессору; вы можете заставить ее требовать много процессора (например, с помощьюЗоЛ, настроив комбинацию sha256, сжатия gzip-9 и, возможно, дедупликации), но вам это не обязательно. Моя собственная система работает на ZFS, она не очень мощная (тактовая частота процессора FX-6100 понижена), я везде использую sha256, и даже при чисто последовательном вводе-выводе диски являются ограничивающим фактором: как только он проходит начальную часть небольших случайных чтений очистки, я получаю примерно такую же пропускную способность при очистке, как и при использовании необработанных данных dd
с базового устройства хранения, с запасом ЦП.
решение2
Чего я не смог найти в Google, так это: какой смысл иметь максимально надежный NAS-хостинг файлов (или в качестве резервного копирования), если я работаю с файлами на менее надежных компьютерах?
Вероятность того, что что-то пойдет не так, имеет свойство накапливаться.
Другими словами (и с фальшивыми цифрами):
если существует 10%-ная вероятность того, что что-то пойдет не так на NAS, и
если существует 10%-ная вероятность того, что что-то пойдет не так на другом устройстве,
то существует 20%-ная вероятность сбоя при чтении чего-либо с NAS и воспроизведении этого на другом устройстве.
Я также не могу найти хорошую информацию об исправлении ошибок в Samba.
Какая версия samba. Протоколы довольно сильно изменились между тремя версиями.
если это хоть немного подвержено ошибкам, то почти все остальное бессмысленно (если только я лично не хеширую все и не проверяю все переводы).
Всегда есть риск ошибок. Они просто случаются. И они обнаруживаются и исправляются (например, с помощью контрольных сумм). Это не всегда верно при использовании ОЗУ, что можно улучшить, используя четность и/или ECC. Однако эти проблемы относительно маловероятны, и вам нужно найти баланс между позолоченным (и дорогим) дизайном и «достаточно хорошим».
Этот баланс будет совершенно иным для некоторых из нас (например, банки нуждаются в вещах идеально). Они, вероятно, не гарантируют использование ECC на персональных системах, предназначенных для воспроизведения фильмов.
решение3
Связь:
Я попытался прочитать документацию на сайте Samba, но не смог определить, есть ли у Samba исправление ошибок. Мне пришлось предположить худший вариант — что Samba полагается на отсутствие ошибок в базовой сети. Если эта базовая сеть — TCP/IP, похоже, единственной защитой является слабая контрольная сумма.
Я остановился на iSCSI, потому что он поддерживает необязательные заголовки и дайджесты данных, которые используют алгоритм CRC32C. Это сверх проверки TCP/IP.
Есть ли какая-то польза?
Для меня ответ: "Да, по крайней мере в одном сценарии". Я могу сделать резервную копию файлов на машине ZFS серверного уровня, используя программу, которой я доверяю. Затем я могу периодически проверять,предположительноНеизмененные файлы на исходной машинена самом деленеизмененный. Если есть несоответствия, я могу восстановить резервную копию с сервера.
Единственная слабая точка — когда файлы намеренно изменяются на ненадежной потребительской машине. Поскольку повреждение в течение этих коротких промежутков времени маловероятно, я считаю это приемлемым. Если я обнаружу, что повреждение произошло во время изменения, у меня будут инкрементные резервные копии, на которые можно будет опереться.
Заменить компьютер на сервер, достаточно мощный для работы ZFS и при этом оставить ресурсы, чтобы использовать его в качестве основного компьютера?
Может быть, но это будет очень дорого. Меня устраивает описанный выше сценарий, поэтому я не буду пытаться это сделать.