Один из серверов, которые я администрирую, использует тип конфигурации, который вы описываете. Он имеет шесть жестких дисков по 1 ТБ с пулом RAIDZ, зашифрованным LUKS. У меня также есть два жестких диска по 3 ТБ в зеркале ZFS с шифрованием LUKS, которые меняются каждую неделю, чтобы быть удаленными. Сервер использует эту конфигурацию около трех лет, и у меня никогда не было проблем с ней.
Если вам нужна ZFS с шифрованием в Linux, я рекомендую эту настройку. Я использую ZFS-Fuse, а не ZFS в Linux. Однако я считаю, что это никак не повлияет на результат, кроме того, что ZFS в Linux, вероятно, будет иметь лучшую производительность, чем установка, которую я использую.
В этой настройке избыточные данные зашифрованы несколько раз, потому что LUKS не «знает» о Z-RAID. В решении LUKS-on-mdadm данные шифруются один раз и просто записываются на диски несколько раз.
Имейте в виду, что LUKS не знает о RAID. Он только знает, что он сидит на блочном устройстве. Если вы используете mdadm для создания устройства RAID, а затем luksformat
его, именно mdadm реплицирует зашифрованные данные на базовые устройства хранения, а не LUKS.
Вопрос 2.8 из часто задаваемых вопросов LUKS посвящен тому, должно ли шифрование быть поверх RAID или наоборот . Это обеспечивает следующую диаграмму.
Filesystem <- top
|
Encryption
|
RAID
|
Raw partitions
|
Raw disks <- bottom
Поскольку ZFS сочетает в себе функциональность RAID и файловой системы, ваше решение должно выглядеть следующим образом.
RAID-Z and ZFS Filesystem <-top
|
Encryption
|
Raw partitions (optional)
|
Raw disks <- bottom
Я перечислил необработанные разделы как необязательные, поскольку ZFS ожидает, что он будет использовать хранилище необработанных блоков, а не раздел. Хотя вы можете создать свой zpool с использованием разделов, это не рекомендуется, потому что это добавит бесполезный уровень управления, и его необходимо будет учитывать при расчете того, каким будет ваше смещение для выравнивания блоков разделения.
Разве это существенно не повлияет на производительность записи? [...] Мой процессор поддерживает Intel AES-NI.
Не должно быть проблем с производительностью, если вы выбираете метод шифрования, который поддерживается вашим драйвером AES-NI. Если у вас Cryptsetup 1.6.0 или новее, вы можете запустить cryptsetup benchmark
и посмотреть, какой алгоритм обеспечит наилучшую производительность.
Этот вопрос о рекомендуемых вариантах для LUKS также может иметь значение.
Учитывая, что у вас есть аппаратная поддержка шифрования, вы, скорее всего, столкнетесь с проблемами производительности из-за смещения раздела.
ZFS в Linux добавил ashift
свойство к zfs
команде, чтобы вы могли указать размер сектора для ваших жестких дисков. Согласно связанному FAQ, ashift=12
скажу, что вы используете диски с размером блока 4K.
В FAQ по LUKS указано, что раздел LUKS имеет выравнивание 1 МБ. Вопросы 6.12 и 6.13 обсуждают это подробно, а также дают советы о том, как увеличить заголовок раздела LUKS. Однако я не уверен, что возможно сделать его достаточно большим, чтобы гарантировать, что ваша файловая система ZFS будет создана на границе 4K. Мне было бы интересно услышать, как это работает для вас, если это проблема, которую вам нужно решить. Поскольку вы используете диски емкостью 2 ТБ, вы можете не столкнуться с этой проблемой.
Будет ли ZFS знать о сбоях диска при работе с контейнерами LUKS устройства отображения, в отличие от физических устройств?
ZFS будет знать о сбоях диска, поскольку может читать и записывать их без проблем. ZFS требует блочного хранилища и не заботится или не знает об особенностях этого хранилища и о том, откуда оно берется. Он только отслеживает любые ошибки чтения, записи или контрольной суммы, с которыми он сталкивается. Это зависит от вас, чтобы контролировать работоспособность соответствующих устройств хранения.
В документации ZFS есть раздел по устранению неисправностей, который стоит прочитать. В разделе о замене или ремонте поврежденного устройства описывается, с чем вы можете столкнуться в случае сбоя, и как вы можете его устранить. Здесь вы сделали бы то же самое, что и для устройств без ZFS. Проверьте системный журнал на наличие сообщений от вашего драйвера SCSI, контроллера HBA или HD и / или программного обеспечения для мониторинга SMART, а затем действуйте соответствующим образом.
Как насчет дедупликации и других функций ZFS?
Все функции ZFS будут работать одинаково, независимо от того, зашифровано ли базовое хранилище блоков или нет.
Резюме
- ZFS на устройствах с шифрованием LUKS работает хорошо.
- Если у вас есть аппаратное шифрование, вы не увидите снижения производительности, если используете метод шифрования, поддерживаемый вашим оборудованием. Используйте,
cryptsetup benchmark
чтобы увидеть, что будет лучше всего работать на вашем оборудовании.
- Думайте о ZFS как о RAID и файловой системе, объединенных в единую сущность. См. Диаграмму ASCII выше, где она помещается в стек хранения.
- Вам нужно будет разблокировать каждое блочное устройство с шифрованием LUKS, которое использует файловая система ZFS.
- Следите за состоянием оборудования хранения точно так же, как сейчас.
- Помните о выравнивании блоков файловой системы, если вы используете диски с блоками 4K. Возможно, вам придется поэкспериментировать с параметрами luksformat или другими настройками, чтобы получить требуемое выравнивание для приемлемой скорости.