Лучший заказ RAID, LVM и LUKS

13

Я собираюсь установить файловый сервер с Debian GNU / Linux 8.

Я хочу иметь программный RAID-1 с использованием mdadm, а также зашифрованные диски с использованием LUKS. Мне также нравится гибкость наличия LVM.

Есть разные способы сделать это. Один из способов: сначала настроить RAID-1 с помощью mdadm. Затем настройте LVM PV, чтобы покрыть созданный / dev / mdX. Затем настройте LV и зашифруйте тех, кто использует LUKS. Затем отформатируйте их с помощью файловой системы, скажем, ext4. Это приводит к макету, как это:

RAID --> LVM --> LUKS --> ext4

Или я мог бы это в другом порядке:

RAID --> LUKS --> LVM --> ext4

Или, может быть, даже:

LVM --> RAID --> LUKS --> ext4

И, может быть, даже другой порядок в целом.

Каковы преимущества и недостатки различных подходов? Что дает лучшую производительность, безопасность, ремонтопригодность и т. Д.?

Есть ли лучший способ сделать это?

Томас
источник

Ответы:

18

Во-первых, порядок LUKS и LVM зависит от того, хотите ли вы иметь разные пароли LUKS или другие настройки для разных LV. Если, скажем, вам нужно установить разные пароли для разных LV, вам определенно нужно поставить LUKS поверх LVM. С другой стороны, если все LV имеют один и тот же пароль и настройки, как keylen, вам нужно, чтобы LUKS был ниже LVM, чтобы вам не приходилось сталкиваться с накладными расходами при наличии более одного раздела LUKS (подумайте, что вы придется делать, когда нужно сменить пароль).

Во-вторых, вы почти всегда хотите, чтобы RAID был на самом низком уровне, поэтому, когда один диск умирает, его можно легко и прозрачно заменить. Если бы вы установили RAID поверх LVM, вам пришлось бы заменить PV, когда один из дисков умирает, что было бы большой болью в шее. Кроме того, RAID поверх LVM полностью уничтожил бы гибкость LVM. Тогда вам, вероятно, потребуется снова установить второй уровень LVM поверх RAID!

Поэтому, поскольку в большинстве случаев людям просто нужно использовать один пароль, этого будет достаточно:

RAID -> LUKS -> LVM -> ext4

В некоторых случаях вам может понадобиться использовать LVM для объединения нескольких RAID-устройств в большой том, тогда вы можете сделать следующее:

RAID -> LVM -> LUKS (-> LVM) -> ext4

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

  1. убедитесь, что ваши разделы выровнены на 1 МБ (очень важно для SSD);
  2. для уровня RAID выбирайте размер фрагмента с умом;
  3. для LVM убедитесь, что вы установили --dataalignmentсоответствующий размер чанка RAID ( это может быть полезно).

Кроме того, если на SSD, убедитесь , что вы включили LUKS TRIM / DISCARD Сквозного путем добавления rd.luks.options=discardк /etc/default/grubи discardк /etc/crypttab(это то , что я делаю на Red Hat / Fedora Linux. Может быть немного отличается от Debian.) L и RAID автоматически поддержка Отклона если вы используете новое ядро.

Конечно, это всего лишь общие рекомендации. Если у вас есть особые потребности, не стесняйтесь обновить свой вопрос или комментарий здесь.

Ян Ли
источник
Спасибо за быстрый ответ. Хорошие моменты! Можете ли вы прокомментировать различия в производительности, если они нетривиальны?
Томас
Обновлено с некоторыми заметками производительности.
Ян Ли
1
Следует также отметить, что вам не всегда нужно использовать MDADM (хотя я ожидаю, что это будет наиболее типичным решением). - LVM предлагает RAID (он же зеркалирование)
davidgo
@davidgo Да. Я тоже думал об этом упомянуть, но не сделал этого, потому что не уверен, что это правильный путь. Я не пробовал это лично (в основном я использую более высокие уровни RAID, такие как 5 или 6), и прочитал смешанные отзывы о зеркалировании LVM, такие как упомянутые в некоторых ответах в этом вопросе .
Ян Ли
@ Ян, я согласен. Я тоже всегда использую mdadm RAid (1)
davidgo
4

Если вы хотите все RAID, LUKS и LVM, я бы порекомендовал RAID -> LUKS -> LVM -> FS. RAID --> LVM --> LUKS --> LVM --> FSне лучше, чем RAID -> LUKS -> LVM- для расширения томов просто добавьте больше RAID -> LUKSустройств в группу томов.

RAID --> LVM --> LUKS --> FS - шифрование только определенных логических томов имеет функцию не шифрования всего по умолчанию (может рассматриваться как преимущество или недостаток), но это облегчит расширение корневой FS.

Расширение LUKS поверх логических томов является распространенным источником проблем, когда пользователи расширяют / изменяют их размер в неправильном порядке. Наличие LUKS на всем устройстве md RAID упростит изменение размера - добавьте новое устройство md, создайте LUKS поверх этого, добавьте устройство в / etc / crypttab (по крайней мере, в клонах Fedora и RHEL) и расширьте группу томов. Если root FS входит в группу томов, вам нужно добавить еще одну rd.luks.uuidзапись в ядро ​​cmdline (отредактируйте / etc / default / grub и перегенерируйте grub.cfg.)

LUKS -> RAIDобычно неверно - данные будут зашифрованы несколько раз, потребляя больше циклов ЦП без усиления. Существует также вероятность ошибочной замены неисправного диска на новый без настройки LUKS в случае сбоя диска.

Расширение и сокращение:

При вытягивании всегда уходите с низа стопки, при сжимании сверху.

Пример:

Расширение RAID -> LVM -> LUKS -> FS (первые два шага необязательны, если в группе томов достаточно свободного места):

  1. Добавьте новые диски и создайте md RAID.
  2. Добавьте устройство mdX в группу томов.
  3. Расширить логический том.
  4. Выдвиньте устройство LUKS.
  5. Расширить ФС.

Сокращение RAID -> LVM -> LUKS -> FS :

  1. Сожмите ФС.
  2. Термоусадочное устройство LUKS.
  3. Сжатие логического тома.
марсианский
источник