
Я заметил, что руководства по zfs+redundancy+performance, как правило, подчеркивают, что зеркалирование является хорошим вариантом, но информация по администрированию zfs, как правило, содержит относительно мало информации об управлении зеркальной конфигурацией по сравнению с конфигурацией на основе raidz.
Я планирую миграцию пула zfs с зеркальных дисков под Windows. Моя предпочтительная настройка всегда была чисто зеркальной, и, изучив zfs, я хотел бы сохранить ее и использовать чистое зеркалирование для избыточности вместо RAIDZ. В идеале каждый диск остается логически читаемым в изоляции, т. е. для 6 дисков данные эффективно хранятся как , (1+2+3 mirror) + (4+5+6 mirror)
а не как ((1+2 stripe) x 3 mirror)
. Я понимаю, что это было бы не очень эффективно и потребовало бы наличия нескольких пулов/наборов данных меньшего размера, но, теряя данные ранее, я ценю это преимущество над эффективностью. Это также, вероятно, намного быстрее при чтении и переносе данных, и гораздо более гибко физически.
Если я хочу запустить такую настройку, каковы будут последствия зеркалирования в рамках vdev по сравнению с зеркалированием vdev, и если хранилище в будущем будет расширено за счет добавления набора из 3 новых дисков, лучше ли будет добавить их как отдельный пул или отдельный vdev (или 3 отдельных vdev)?
решение1
В ZFS вывсегда имейте избыточность любого рода на уровне vdev, вы не можете иметь ее на уровне пула.
Виртуальный девайс может состоять из одного диска (1 диск), зеркальных дисков (2+ дисков), полосы Z1 (2+ дисков), полосы Z2 (3+ дисков) или полосы Z3 (4+ дисков). Затем вы можете создать свои пулы, где каждый пул поддерживается 1+ виртуальными устройствами, и у вас может быть столько пулов, сколько вам нужно. Каждый пул использует все поддерживающие виртуальные устройства без какой-либо избыточности (которая управляется на уровне виртуальных устройств), и потеря одного виртуального устройства (не диска) означает потерю всего пула.
Таким образом, если вы разделите свои пулы, у вас по сути будет несколько массивов RAID1, расположенных рядом друг с другом и полностью отдельных — потеря одного пула не повлияет на другие, но вы получите более низкую производительность, поскольку все они представляют собой RAID1, а не RAID10.
Расширение также имеет свой компромисс: если вы увеличиваете свой единый пул, он становится быстрее (по крайней мере, для вновь записанных данных, автоматическая перебалансировка не предусмотрена), но при этом увеличивается и вероятность сбоя.
Помимо этого, возникает вопрос, хотите ли вы иметь 2- или 3-сторонние зеркала для ваших виртуальных устройств — 3-сторонние намного безопаснее (до такой степени, что 4-сторонние практически бесполезны), но и более затратны (требуют больше дисков или имеют меньше места). 3-сторонние также немного быстрее для чтения, но скорость записи не меняется.
Таким образом, это компромисс между стоимостью, производительностью, безопасностью и простотой использования.