Пул ZFS RAID 10 со смешанным диском
У меня есть 4 диска: 2x2TB и 2x1TB. Все тот же RPM 7200 и производитель. ОС Ubuntu 16.04. Я хочу создать пул RAID 10, но я слышал, что смешивание дисков по размеру не подходит для ZFS - поправьте меня, если я ошибаюсь... Итак, какой из этих трех вариантов лучше ("m" означает зеркало):
- Зеркала целые диски: (2 ТБ м 2 ТБ) + (1 ТБ м 1 ТБ).
- Разделите диски по 2 ТБ на разделы по 1 ТБ: (1 ТБ м 1 ТБ) + (1 ТБ м 1 ТБ) + (1 ТБ м 1 ТБ).
- Два отдельных пула: (2 ТБ м 2 ТБ) и (1 ТБ м 1 ТБ).
Лично мне не очень нравится третий вариант, но, может быть, он самый стабильный? Я новичок в ZFS, поэтому, пожалуйста, предложите.
Я сделал изображение, чтобы проиллюстрировать второй вариант:
2 ответа
Прежде чем ответить на ваш вопрос, откажитесь от ответственности: очевидно, проще всего использовать дублирующее оборудование. Стоит отметить, что даже если ваши устройства от одного производителя и имеют одинаковое количество оборотов в минуту, пропускная способность между ними будет разной для заданного размера ввода-вывода (поскольку диски емкостью 2 ТБ, вероятно, имеют более высокую плотность байтов на кольцо), а число количество операций ввода-вывода в секунду будет одинаковым между ними, даже если диски со скоростью 2 ТБ будут удваиваться в два раза чаще при случайном чтении. В принципе, в любом случае вы будете иметь асимметричную производительность: диски объемом 2 ТБ работают в ~2 раза лучше при больших вводах-выводах, а диски емкостью 1 ТБ - в ~2 раза лучше при коротких случайных ввода-выводах.
Я собираюсь ответить, предполагая, что вы не хотите продавать свои диски емкостью 1 ТБ, чтобы купить другой диск емкостью 2 ТБ. По твоему вопросу я не могу точно сказать - какой у тебя желаемый уровень репликации? Несмотря ни на что, есть два правила, которым вы должны следовать:
- Вам лучше позволить ZFS настроить полные диски в
zpool
потому что семантика сбоев при сбое одного диска намного проще, чем если два раздела могут выйти из строя вместе (когда на диске оба они отказывают). - Проще добавить новые диски в пул позже, если ваш узел верхнего уровня в пуле является чередующимся
vdev
, Таким образом, вы всегда можете добавлять группы дублирующихся новых устройств одновременно, и не имеет значения, соответствуют ли их размеры размерам существующих устройств в пуле.
Если вы хотите зеркало с двумя дисками, ваш вариант 1 кажется мне лучшим. Если вы когда-нибудь купите другой диск, купите вторую секунду того же типа и добавьте их как новое зеркало под полосатым узлом в этом дереве:
striped
mirror
2TB
2TB
mirror
1TB
1TB
Если вы хотите зеркало с 3 дисками, вы можете сделать зеркало, как это, но добавить устройства к нему позже будет сложнее (добавить их как другое зеркало? Добавить их как еще одну полосу в области 1 ТБ?):
mirror
2TB
2TB
striped
1TB
1TB
Если вы хотите использовать RAID-Z, я бы порекомендовал просто не использовать устройства разных размеров, или вы можете купить еще несколько устройств по 2 ТБ и 1 ТБ и распределить их по нескольким группам RAID-Z.
Альтернативным методом репликации данных в ZFS является copies=N
настройка, которую вы можете установить для файловых систем в пуле. Это может быть заманчиво для вашего варианта использования, но обратите внимание, что это не помогает при всех проблемах потери данных - сбой на уровне устройства все равно приведет к невозможности использования всего пула. (Основным вариантом использования для этого являются повреждения на диске.)
То , что я хотел бы предложить, это raid10 с: mirror-0 2TB & 1TB mirror-1 2TB & 1TB
для этого вы должны сначала создать raid0 с обоими 1 ТБ, а затем дважды выполнить zpool-присоединение, чтобы подключить каждый диск 2 ТБ к каждому диску 1 ТБ. это выравнивает нагрузку на оба зеркала. не забудьте установить автоэкспандирование для дальнейшего расширения. у вас останется около 2 ТБ места.