RAID-Z2 работает, беря диски, предоставленные vdev, и используя два из них для хранения избыточных данных в целях восстановления на случай, если что-то пойдет не так.
Следовательно, абсолютное минимальное количество дисков в RAID-Z2 vdev - это два избыточных плюс один, который работает на три диска.
Однако, делая это таким образом, вы:
- получают эффективную емкость только одного из дисков
- может потерять любые два из трех задействованных дисков без потери данных (в общем случае вы можете пережить потерю любых двух дисков в диске N RAID-Z2 vdev)
- вынуждают систему рассчитывать данные четности для RAID-Z2
Если вы хотите, чтобы vdev состоял из трех дисков, или если у вас есть три и вы хотите избыточности на два диска, вам, вероятно, будет лучше, если вместо этого настроить их как зеркало. Таким образом, вы:
- получают эффективную емкость только одного из дисков (независимо от количества зеркальных устройств)
- может пережить потерю любых двух из трех задействованных дисков без потери данных (в общем случае вы можете пережить потерю любых дисков N-1 в зеркале N диска vdev)
- избегают вычислений данных четности, потому что зеркала являются бит-идентичными копиями друг друга; записать одни и те же данные на несколько дисков гораздо дешевле, чем рассчитать отдельные данные четности и записать их на диск
Минимальное количество дисков, для которых RAID-Z2 имеет смысл, равно четырем, что дает эффективную емкость двух дисков и позволяет потерять любые два диска. Это выгодно по сравнению с использованием тех же четырех дисков в настройке зеркала 2x2, потому что, если у вас есть два зеркальных vdevs по два диска каждый и вы потеряете несколько комбинаций двух дисков, этот vdev не работает и заберет пул с его огненной гибелью. В зеркальном пуле vdev 2x2 по крайней мере один из дисков в каждой зеркальной паре должен оставаться работоспособным, чтобы пул оставался доступным. Тем не менее, зеркало вполне может иметь лучшую производительность. Как всегда, это компромисс между различными вариантами, и одна часть должностной инструкции системного администратора состоит в том, чтобы сделать эти компромиссы подходящими для каждой конкретной ситуации.
Таким образом, хотя RAID-Z2 может технически работать с описанной вами настройкой, он не дает никаких преимуществ и даже имеет некоторые недостатки по сравнению с простой конфигурацией с тремя зеркалами.
Было бы иначе, если бы ZFS позволяла нам динамически изменять уровень избыточности или увеличивать количество устройств в RAID-Zn vdev, но это не так. Единственный способ фактически увеличить пул - это добавить больше vdevs или увеличить размер существующих устройств, а не добавлять устройства в существующий vdev. (Вы можете добавлять и удалять устройства в зеркале vdev, но это только меняет объем избыточности, а не полезную емкость хранилища.)
Кроме того, можно настроить три диска как RAID-Z(1) VDEV, что даст вам возможность пережить потерю любого одного из дисков , прежде чем ваши данные в опасности , если что - либо вообще дальше пойдет не так, уменьшить CPU рабочая нагрузка по сравнению с RAID-Z2 (поскольку расчеты четности RAID-Z1 требуют меньше вычислительных ресурсов) и дают эффективную емкость для хранения двух дисков вместе.
Всегда имейте в виду, что если что-то пойдет не так, полное восстановление ZFS - трудоемкий процесс для оставшихся дисков, и не случайно, что на другом диске возникнут проблемы или он даже умрет под нагрузкой. По этой причине, особенно с ротационными приводами таких распространенных сегодня размеров, двойное резервирование должно быть выбором по умолчанию, а тройное резервирование - вариант, если вы действительно параноик. Единственная избыточность должна учитываться только для менее важных данных, где время простоя может быть допустимо. Однако для пула с SSD-поддержкой может быть допустимо одиночное резервирование.
Отсюда моя рекомендация: если вам нужны три диска ZFS и вы хотите избыточность, установите их как трехстороннее зеркало vdev. Если вам нужен RAID-Z2, используйте как минимум четыре диска, но имейте в виду, что вы блокируете количество дисков в vdev во время создания vdev. В настоящее время единственным способом увеличения пула ZFS является добавление дополнительных vdevs или увеличение размера устройств, составляющих vdev, или создание нового пула и передача данных. Вы не можете увеличить емкость пула, добавив устройства к существующему vdev.
Вы также должны убедиться, что вы храните резервные копии. Это вдвойне важно для ZFS, потому что восстановление ZFS после фактического сбоя, который приводит к пулу ниже порогового значения избыточности, очень сложно. ZFS имеет очень сложный формат на диске, который я не знаю ни о каком стандартном понимании программного обеспечения для восстановления данных, так что даже если вы можете прочитать большую часть данных с дисков, если ZFS не может понять это, то вам, скорее всего, не повезет, если вы не готовы потратить десятки тысяч долларов на эту проблему. Резервные копии дешевле.
В качестве альтернативы трехстороннему зеркалу вы также можете использовать двустороннее зеркало с запасным, но в большинстве случаев, и, безусловно, в описываемой вами ситуации, в этом нет никаких преимуществ и недостатков.
Кроме того, в связи с проблемой восстановления вы должны очень строго рассмотреть использование ОЗУ ECC в любой системе, в которой работает самовосстанавливающаяся файловая система с контрольной суммой, включая ZFS. Другие согласны.
Показывает, что RAID-Z2 с тремя устройствами возможен (это ZFS В Linux 0.6.4). Обратите внимание, что после жесткого удаления двух из трех файлов резервных копий «существует достаточное количество реплик для пула, чтобы он продолжал функционировать в ухудшенном состоянии». и vdev DEGRADED
, а не FAULTED
.
# truncate -s 1G /root/d1 /root/d2 /root/d3
# zpool create tank raidz2 /root/d1 /root/d2 /root/d3
# zpool status tank
pool: tank
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
/root/d1 ONLINE 0 0 0
/root/d2 ONLINE 0 0 0
/root/d3 ONLINE 0 0 0
errors: No known data errors
# zpool export tank
# rm /root/d1 /root/d2
# zpool import tank -d /root
# zpool scrub tank
# zpool status tank
pool: tank
state: DEGRADED
status: One or more devices could not be opened. Sufficient replicas exist for
the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
see: http://zfsonlinux.org/msg/ZFS-8000-2Q
scan: scrub repaired 0 in 0h0m with 0 errors on Tue Mar 29 11:00:23 2016
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
18130982121682915530 UNAVAIL 0 0 0 was /root/d1
18289483070703159278 UNAVAIL 0 0 0 was /root/d2
/root/d3 ONLINE 0 0 0
errors: No known data errors
#