Пул ZFS RAID 10 со смешанным диском

У меня есть 4 диска: 2x2TB и 2x1TB. Все тот же RPM 7200 и производитель. ОС Ubuntu 16.04. Я хочу создать пул RAID 10, но я слышал, что смешивание дисков по размеру не подходит для ZFS - поправьте меня, если я ошибаюсь... Итак, какой из этих трех вариантов лучше ("m" означает зеркало):

  1. Зеркала целые диски: (2 ТБ м 2 ТБ) + (1 ТБ м 1 ТБ).
  2. Разделите диски по 2 ТБ на разделы по 1 ТБ: (1 ТБ м 1 ТБ) + (1 ТБ м 1 ТБ) + (1 ТБ м 1 ТБ).
  3. Два отдельных пула: (2 ТБ м 2 ТБ) и (1 ТБ м 1 ТБ).

Лично мне не очень нравится третий вариант, но, может быть, он самый стабильный? Я новичок в ZFS, поэтому, пожалуйста, предложите.

Я сделал изображение, чтобы проиллюстрировать второй вариант:

2 ответа

Решение

Прежде чем ответить на ваш вопрос, откажитесь от ответственности: очевидно, проще всего использовать дублирующее оборудование. Стоит отметить, что даже если ваши устройства от одного производителя и имеют одинаковое количество оборотов в минуту, пропускная способность между ними будет разной для заданного размера ввода-вывода (поскольку диски емкостью 2 ТБ, вероятно, имеют более высокую плотность байтов на кольцо), а число количество операций ввода-вывода в секунду будет одинаковым между ними, даже если диски со скоростью 2 ТБ будут удваиваться в два раза чаще при случайном чтении. В принципе, в любом случае вы будете иметь асимметричную производительность: диски объемом 2 ТБ работают в ~2 раза лучше при больших вводах-выводах, а диски емкостью 1 ТБ - в ~2 раза лучше при коротких случайных ввода-выводах.

Я собираюсь ответить, предполагая, что вы не хотите продавать свои диски емкостью 1 ТБ, чтобы купить другой диск емкостью 2 ТБ. По твоему вопросу я не могу точно сказать - какой у тебя желаемый уровень репликации? Несмотря ни на что, есть два правила, которым вы должны следовать:

  1. Вам лучше позволить ZFS настроить полные диски в zpoolпотому что семантика сбоев при сбое одного диска намного проще, чем если два раздела могут выйти из строя вместе (когда на диске оба они отказывают).
  2. Проще добавить новые диски в пул позже, если ваш узел верхнего уровня в пуле является чередующимся 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 ТБ места.

Другие вопросы по тегам