Назад | Перейти на главную страницу

Лучшие практики ZFS с аппаратным RAID

Если у кого-то есть какое-то оборудование серверного уровня, целесообразно ли запускать ZFS поверх аппаратного RAID1 или чего-то подобного? Следует отключить аппаратный RAID и запустить ZFS на mirror или raidz zpool вместо?

С отключенной функцией аппаратного RAID, будут ли контроллеры SATA2 и SAS на основе аппаратного RAID с большей или меньшей вероятностью скрывать ошибки чтения и записи, чем контроллеры без аппаратного RAID?

Что касается ненастраиваемых серверов, если у кого-то есть ситуация, когда аппаратный RAID-контроллер эффективно экономически нейтрален (или даже снижает стоимость готового предложения сервера, поскольку его присутствие повышает вероятность того, что хостинговая компания предоставит дополнительный IPMI доступ), следует ли вообще этого избегать? Но стоит ли его искать?

Идея ZFS состоит в том, чтобы как можно больше узнать о поведении дисков. Затем от худшего к лучшему:

  • Аппаратный рейд (ZFS абсолютно ничего не знает о реальном оборудовании),
  • Режим JBOD (проблема связана с любым потенциальным расширителем: меньшая пропускная способность),
  • Режим HBA является идеальным (ZFS знает о дисках все)

Поскольку ZFS довольно параноидально относится к оборудованию, чем меньше он скрывается, тем лучше он может справиться с любыми аппаратными проблемами. И как указал Саммитч, Конфигурации RAID-контроллера и ZFS может быть очень сложно восстановить или перенастроить в случае сбоя (например, сбоя оборудования).

Что касается стандартизированного оборудования с каким-либо контроллером аппаратного RAID, просто будьте осторожны, чтобы аппаратный контроллер имел реальный сквозной режим или режим JBOD.

В. Если в вашем распоряжении имеется оборудование серверного уровня, целесообразно ли запускать ZFS поверх аппаратного RAID1 или чего-то подобного?

A. Настоятельно рекомендуется запускать ZFS прямо на диск и не использовать какие-либо промежуточные RAID. Независимо от того, препятствует ли система, которая эффективно требует от вас использовать карту RAID, использование ZFS, больше связано с ДРУГИМИ преимуществами ZFS, чем с отказоустойчивостью данных. Совершенно очевидно, что если имеется базовая карта RAID, отвечающая за предоставление одного LUN для ZFS, ZFS не улучшит отказоустойчивость данных. Если ваша единственная причина для перехода на ZFS в первую очередь - повышение отказоустойчивости данных, вы просто потеряли все основания для ее использования. Однако ZFS также предоставляет ARC / L2ARC, сжатие, моментальные снимки, клоны и различные другие улучшения, которые могут вам понадобиться, и в этом случае, возможно, это все еще ваша файловая система.

В. Следует ли отключить аппаратный RAID и вместо этого запустить ZFS на зеркале или на raidz zpool?

А. Да, если это вообще возможно. Некоторые карты RAID допускают сквозной режим. Если он есть, это предпочтительнее.

В. При отключенной функции аппаратного RAID, будут ли контроллеры SATA2 и SAS на основе аппаратного RAID с большей или меньшей вероятностью скрывать ошибки чтения и записи, чем контроллеры без аппаратного RAID?

A. Это полностью зависит от рассматриваемой карты RAID. Вам нужно будет изучить руководство или обратиться к производителю / поставщику карты RAID, чтобы узнать. Некоторым очень нравится, да, особенно если «отключение» функции RAID на самом деле не отключает ее полностью.

В. Что касается ненастраиваемых серверов, если у кого-то есть ситуация, когда аппаратный RAID-контроллер фактически экономически нейтрален (или даже снижает стоимость готового предложения сервера, поскольку его присутствие повышает вероятность предоставления хостинговой компанией дополнительный доступ IPMI), следует ли вообще его избегать? Но стоит ли его искать?

A. Это почти такой же вопрос, как и ваш первый. Опять же - если ваше единственное желание использовать ZFS - это улучшение отказоустойчивости данных, а для выбранной вами аппаратной платформы требуется, чтобы карта RAID предоставляла один LUN для ZFS (или несколько LUN, но у вас есть полоса ZFS через них), тогда вы делаете ничего для повышения отказоустойчивости данных, и поэтому ваш выбор ZFS может оказаться неподходящим. Однако, если вы найдете какие-либо другие функции ZFS полезными, они все равно могут быть полезны.

Я хочу добавить дополнительную проблему - приведенные выше ответы основаны на идее о том, что использование аппаратной карты RAID под ZFS ничего не делает, чтобы повредить ZFS, кроме устранения ее способности повышать отказоустойчивость данных. По правде говоря, это скорее серая зона. В ZFS есть различные настраиваемые параметры и допущения, которые не обязательно работают, когда передаются многодисковые LUN ​​вместо необработанных дисков. Большая часть этого может быть устранена с помощью надлежащей настройки, но из коробки вы не будете так эффективны на ZFS поверх больших RAID LUN, как если бы вы были на отдельных шпинделях.

Кроме того, есть некоторые свидетельства того, что совершенно другой способ, которым ZFS взаимодействует с LUN, в отличие от более традиционных файловых систем, часто вызывает пути кода в контроллере RAID и рабочие нагрузки, к которым они не привыкли, что может привести к странностям. В частности, вы, вероятно, окажете себе услугу, полностью отключив функциональность ZIL в любом пуле, который вы размещаете поверх одного LUN, если вы также не предоставляете отдельное устройство журнала, хотя, конечно, я настоятельно рекомендую вам ОБЯЗАТЕЛЬНО предоставьте пулу отдельное устройство необработанного журнала (это не LUN ​​с карты RAID, если это вообще возможно).

Я довольно часто запускаю ZFS поверх конфигураций HP ProLiant Smart Array RAID.

Зачем?

  • Потому что мне нравится ZFS для разделов данных, а не для загрузочных разделов.
  • Потому что загрузка Linux и ZFS, вероятно, сейчас для меня недостаточно надежна.
  • Поскольку контроллеры HP RAID не позволяют Сквозной режим устройства RAW. Настройка нескольких томов RAID 0 - это не то же самое, что диски RAW.
  • Поскольку объединительные платы серверов обычно недостаточно гибкие, чтобы выделить отсеки для дисков для определенного контроллера или разделить обязанности между двумя контроллерами. В наши дни чаще всего встречаются конфигурации с 8 и 16 отсеками. Не всегда достаточно, чтобы сегментировать то, как должно быть.
  • Но мне все еще нравятся возможности ZFS по управлению томами. Zpool позволяет мне динамически разделять объекты и максимально использовать доступное дисковое пространство.
  • Сжатие, ARC и L2ARC - потрясающие функции!
  • Правильно спроектированная установка ZFS на аппаратном RAID по-прежнему дает хорошие предупреждения и оповещения о сбоях, но превосходит решение только для оборудования.

Пример:

Конфигурация RAID-контроллера.

[root@Hapco ~]# hpacucli ctrl all show config

Smart Array P410i in Slot 0 (Embedded)    (sn: 50014380233859A0)

   array B (Solid State SATA, Unused Space: 250016  MB)
      logicaldrive 3 (325.0 GB, RAID 1+0, OK)

      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, Solid State SATA, 240.0 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, Solid State SATA, 240.0 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, Solid State SATA, 240.0 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, Solid State SATA, 240.0 GB, OK)

список блочных устройств

[root@Hapco ~]# fdisk  -l /dev/sdc

Disk /dev/sdc: 349.0 GB, 348967140864 bytes
256 heads, 63 sectors/track, 42260 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1       42261   340788223   ee  GPT

конфигурация zpool

[root@Hapco ~]# zpool  list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
vol1   324G  84.8G   239G    26%  1.00x  ONLINE  -

zpool деталь

  pool: vol1
 state: ONLINE
  scan: scrub repaired 0 in 0h4m with 0 errors on Sun May 19 08:47:46 2013
config:

        NAME                                      STATE     READ WRITE CKSUM
        vol1                                      ONLINE       0     0     0
          wwn-0x600508b1001cc25fb5d48e3e7c918950  ONLINE       0     0     0

список файловой системы zfs

[root@Hapco ~]# zfs list
NAME             USED  AVAIL  REFER  MOUNTPOINT
vol1            84.8G   234G    30K  /vol1
vol1/pprovol    84.5G   234G  84.5G  -

Обычно вы никогда не должны запускать ZFS поверх дисков, настроенных в массиве RAID. Обратите внимание, что ZFS не обязательно запускать в режиме RAID. Вы можете просто использовать отдельные диски. Однако практически 99% людей используют ZFS в качестве RAID. Вы можете просто запустить свои диски в чередующемся режиме, но это плохое использование ZFS. Как было сказано на других плакатах, ZFS хочет много знать об оборудовании. ZFS следует подключать только к карте RAID, для которой можно установить режим JBOD, или, желательно, к HBA. Перейти на канал IRC Freenode #openindiana; любой из экспертов ZFS на канале скажет вам то же самое. Попросите вашего хостинг-провайдера предоставить режим JBOD, если он не предоставит HBA.

Вкратце: использование RAID ниже ZFS просто убивает идею использования ZFS. Зачем? - Потому что он предназначен для работы с чистыми дисками, а не с RAID.

Для всех вас ... ZFS по сравнению с любым Raid - это полная БОЛЬНОСТЬ и выполняется только MAD-людьми! ... как использование ZFS с памятью без ECC.

С образцами вы лучше поймете:

  • ZFS через Raid1, один диск немного изменился, когда не был выключен ... Извольте все, что вы знаете, ZFS увидит некоторые повреждения или нет, в зависимости от того, какой диск читается (Raid-контроллер не видел, что этот бит изменен, и думает, что оба диска в порядке ) ... если ошибка связана с частью VDEV ... весь ZPOOL навсегда теряет все свои данные.
  • ZFS поверх Raid0, один диск немного изменился, когда он не был выключен ... Прикиньте все, что вы знаете, (Raid-контроллер не заметил, что этот бит изменился и считает, что оба диска в порядке) ... ZFS увидит это повреждение, но если fail находится в части VDEV ... весь ZPOOL теряет все свои данные навсегда.

ZFS хорош в обнаружении битов, которые изменились, когда диск отключен от питания (RAID-контроллеры не могут этого сделать), а также когда что-то изменяется без запроса и т. Д.

Это та же проблема, что и когда бит в модуле RAM самопроизвольно изменяется без запроса ... если память ECC, память исправляет себя; в противном случае эти данные были изменены, поэтому данные будут отправлены на измененные диски; извольте, что изменения не в части UDEV, если сбой в части VDEV ... весь ZPOOL теряет все свои данные навсегда.

Это слабость ZFS ... Неудача VDEV означает, что все данные потеряны навсегда.

Hardware Raid и Software Raid не могут обнаруживать спонтанные изменения бит, у них нет контрольных сумм, хуже всего на уровнях Raid1 (зеркала), они читают не все части и сравнивают их, они предполагают, что все части всегда будут иметь одинаковые данные, ВСЕГДА (я говорю это громко) Raid предполагает, что данные не были изменены другими вещами / способами ... но диски (как память) склонны к самопроизвольным битовым изменениям.

Никогда не используйте ZFS в ОЗУ без ECC и никогда не используйте ZFS на дисках с рейдом, позвольте ZFS видеть все диски, не добавляйте слой, который может испортить ваш VDEV и POOL.

Как смоделировать такой сбой ... выключите компьютер, вытащите один диск из этого Raid1 и измените только один бит ... воссоздайте и посмотрите, как Raid-контроллер не может знать, что изменилось ... ZFS может, потому что все чтения проверены против контрольной суммы, и если не совпадает, прочитайте с другой части ... Raid никогда не читает снова из-за сбоя (кроме аппаратного невозможного чтения, сбоя) ... если Raid может читать, он думает, что данные в порядке (но это не в таких случаях ) ... Raid пытается читать с другого диска, только если там, где он читает, написано "эй, я не могу читать оттуда, аппаратный сбой" ... ZFS читает с другого диска, если контрольная сумма не совпадает, а также как если бы он читал говорит: «Эй, я не могу читать оттуда, аппаратный сбой».

Надеюсь, я прояснил это ... ZFS на любом уровне Raid - это серьезная боль и полный риск для ваших данных! а также ZFS в памяти без ECC.

Но никто не говорит (кроме меня):

  • Не используйте диски с внутренним кешем (не только SHDD, но и те, которые имеют кеш от 8 до 32 МБ и т. Д.) ... некоторые из них используют память без ECC для такого кеша
  • Не используйте SATA NCQ (способ записи в очередь), потому что он может разрушить ZFS при отключении питания.

Итак, какие диски использовать?

  • Любой диск с внутренней батареей, который гарантирует, что вся очередь будет записана на диск в случаях сбоя питания, и использует внутри него память ECC (извините, есть очень маленькие диски со всем этим, и они дороги).

Но, эй, большинство людей не знают всего этого, и у них никогда не было проблем ... Я говорю им: вау, как вы удачливы, купите лотерейные билеты, пока удача не ушла.

Риски есть ... такие совпадения сбоев могут произойти ... так что лучший ответ:

  • Старайтесь не помещать какой-либо слой между ZFS и местом, где действительно хранятся данные (RAM, Raid, NCQ, внутренний дисковый кеш и т. Д.) ... столько, сколько вы можете себе позволить.

Что я лично делаю?

  • Добавьте еще несколько слоев ... Я использую каждый 2,5-дюймовый диск SATA III 7200 об / мин в корпусе USB 3.1 Gen2 типа C, я подключаю некоторые корпуса к концентратору USB 3.1 Gen 2 Type A, который я подключаю к ПК; другой - к другому концентратору что я подключаюсь к другому корневому порту на ПК и т. д.
  • Для системы я использую внутренние разъемы sata на ZFS (уровень Raid0), потому что я использую неизменяемую (например, LiveCD) систему Linux, каждый загружает идентичный контент на внутренние диски ... и у меня есть образ клонирования системы, который я могу восстановить (система менее 1 ГБ) ... также я использую трюк, чтобы система содержалась в файле и использовала диск с отображением RAM, где я клонирую его при загрузке, поэтому после загрузки вся система запускается в RAM ... помещая такой файл в DVD я также могу загружаться таким же образом, поэтому в случае отказа внутренних дисков я просто загружаюсь с DVD, и система снова в сети ... аналогичный трюк с SystemRescueCD, но немного более сложный, потому что файл ISO может быть на внутренняя ZFS или просто настоящий DVD, и мне не нужны две разные версии.

Надеюсь, я смогу пролить свет на ZFS против Raid, это действительно больно, когда что-то идет не так!