какова вероятность того, что ZFS будет находиться в согласованном состоянии (даже если некоторые данные были потеряны) и пул будет доступен/читаем, когда он перезагрузится?
ZFS работает как транзакционный системы управления базами данных при этом старые данные не перезаписываются на месте при обновлении, как в традиционных файловых системах. Вместо этого новые данные записываются в другое место на диске, а затем структуры метаданных файловой системы обновляются, указывая на новые данные, и только тогда блок старых данных освобождается для повторного использования файловой системой. Таким образом, внезапная потеря мощности оставит старую копию данных на месте, если новые обновления данных не будут на 100% зафиксированы в постоянном хранилище. Вы не будете иметь половину блока заменены или что-нибудь подобное, что приводит к повреждению данных.
кроме того, ZFS использует сложная схема контрольной суммы, что позволяет файловой системе обнаруживать неправильно записанные или поврежденные данные.
если вы используя ZFS с резервным хранилищем, эта же схема позволяет файловой системе выбирать между двумя или более резервными копиями данных при восстановлении файловой системы. То есть, если у вас есть две копии данного блока, и только одна из них совпадает с его сохраненной контрольной суммой, файловая система знает, что она должна восстановить плохую копию/копии с чистой.
этот ремонт может происходить на лету, когда вы попытаетесь прочитать или изменить данные, после чего файловая система может понять, что просила блоки не полностью кошерные-или во время zfs scrub
операции. Обычно в пулах ZFS, к которым редко обращаются с файлами, запланирован периодический запуск очистки, так как в противном случае файловая система не обнаружила бы потерю аппаратных данных в ходе обычной работы. Обычно пулы ZFS, работающие на сомнительном оборудовании, показывают некоторое количество фиксированных блоков после каждой очистки.
очистка вроде как fsck
для других файловых систем типа Unix и, кроме что это происходит в сети, в то время как файловая система смонтирована и может использоваться; это происходит в фоновом режиме и только тогда, когда пул в противном случае простаивает. Также,fsck
реализации обычно проверяют только метаданные, но не данные, но контрольные суммы ZFS и так могут обнаружить ошибки в обоих. Если эти механизмы целостности решат, что один из блоков должен быть заменен,он может использовать контрольные суммы, чтобы решить, какой копией заменить поврежденные копии.
предполагая, что носители, аппаратное и программное обеспечение все еще работает надежно / должным образом, что еще должно пойти не так, чтобы результат был потерей пула?
насколько мне известно, такого случая нет. Либо одна из трех вещей, которые вы упомянули, не удалась, либо ZFS смонтирует пул и прочитает из него.
явно недостаточное резервирование + сбой диска (или другая серьезная проблема с оборудованием) - это один случай
да, хотя это может произойти в более тонкий корпус, чем я думаю, ты обдумываешь.
возьмите простое двустороннее зеркало. Я думаю, вы думаете об одном из дисков, физически удаляемых с компьютера, или, по крайней мере, недоступных по какой-то причине. Но представьте, что сектор 12345 поврежден на обоих дисках. Тогда все умные контрольные суммы и избыточность в ZFS вам не помогут: обе копии повреждены, поэтому весь блок, содержащий этот сектор, не может быть прочитан.
а вот это умно: ведь в ZFS-это как файловая система и volume manager-в отличие от lash-up, как аппаратный RAID+ext4 или LVM2 + ext4-a zpool status
команда скажет вам, какой файл безвозвратно поврежден. При удалении этого файла пул немедленно возвращается в неповрежденное состояние; проблема устранена. Плетка-это отдельная файловая система с RAID и LVM штук не могу.
какие ситуации должны возникать прежде чем он не может, и что должно произойти, чтобы привести к их?
единственный случай, о котором я знаю, - это что-то вроде приведенного выше примера, когда повреждение данных повредило достаточно избыточных копий метаданных ключевой файловой системы, которые ZFS не может прочитать.
по этой причине, с сегодняшними чрезвычайно большими дисками - 100 триллионов бит! - Я рекомендую вам настроить ZFS (или любую другую RAID или LVM систему), по крайней мере, с двойной избыточностью. С точки зрения файловой системы ZFS, что означает raidz2, 3-зеркала, или высший.
тем не менее, ZFS обычно хранит дополнительные копии всех метаданных файловой системы за пределами нормального уровня избыточности, используемого для обычных файловых данных. Например, двустороннее зеркало будет хранить 2 копии обычных пользовательских данных, но 4 копии всех метаданных. Вы можете набрать это обратно для производительности, но вы не можете отключить его полностью.
в руководстве ZFS есть глава о ЗФС отказов что вы можете найти полезным.