Я планирую установить набор 3x 2TB 7200rpm дисков в качестве пула Z-RAID с шифрованием LUKS в Linux (для решения NAS).
Насколько я понимаю, проблема заключается в том, что единственный способ добиться этого - использовать luksFormat
каждое физическое устройство, а затем собрать zpool из разблокированных контейнеров LUKS.
У меня есть следующие проблемы с этим:
Разве это существенно не повлияет на производительность записи? В этой настройке избыточные данные зашифрованы несколько раз, потому что LUKS не «знает» о Z-RAID. В решении LUKS-on-mdadm данные шифруются один раз и просто записываются на диски несколько раз. Мой процессор поддерживает Intel AES-NI.
Будет ли ZFS знать о сбоях диска при работе с контейнерами LUKS устройства отображения, в отличие от физических устройств? Как насчет дедупликации и других функций ZFS?
Ответы:
Один из серверов, которые я администрирую, использует тип конфигурации, который вы описываете. Он имеет шесть жестких дисков по 1 ТБ с пулом RAIDZ, зашифрованным LUKS. У меня также есть два жестких диска по 3 ТБ в зеркале ZFS с шифрованием LUKS, которые меняются каждую неделю, чтобы быть удаленными. Сервер использует эту конфигурацию около трех лет, и у меня никогда не было проблем с ней.
Если вам нужна ZFS с шифрованием в Linux, я рекомендую эту настройку. Я использую ZFS-Fuse, а не ZFS в Linux. Однако я считаю, что это никак не повлияет на результат, кроме того, что ZFS в Linux, вероятно, будет иметь лучшую производительность, чем установка, которую я использую.
Имейте в виду, что LUKS не знает о RAID. Он только знает, что он сидит на блочном устройстве. Если вы используете mdadm для создания устройства RAID, а затем
luksformat
его, именно mdadm реплицирует зашифрованные данные на базовые устройства хранения, а не LUKS.Вопрос 2.8 из часто задаваемых вопросов LUKS посвящен тому, должно ли шифрование быть поверх RAID или наоборот . Это обеспечивает следующую диаграмму.
Поскольку ZFS сочетает в себе функциональность RAID и файловой системы, ваше решение должно выглядеть следующим образом.
Я перечислил необработанные разделы как необязательные, поскольку ZFS ожидает, что он будет использовать хранилище необработанных блоков, а не раздел. Хотя вы можете создать свой zpool с использованием разделов, это не рекомендуется, потому что это добавит бесполезный уровень управления, и его необходимо будет учитывать при расчете того, каким будет ваше смещение для выравнивания блоков разделения.
Не должно быть проблем с производительностью, если вы выбираете метод шифрования, который поддерживается вашим драйвером 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 будет знать о сбоях диска, поскольку может читать и записывать их без проблем. ZFS требует блочного хранилища и не заботится или не знает об особенностях этого хранилища и о том, откуда оно берется. Он только отслеживает любые ошибки чтения, записи или контрольной суммы, с которыми он сталкивается. Это зависит от вас, чтобы контролировать работоспособность соответствующих устройств хранения.
В документации ZFS есть раздел по устранению неисправностей, который стоит прочитать. В разделе о замене или ремонте поврежденного устройства описывается, с чем вы можете столкнуться в случае сбоя, и как вы можете его устранить. Здесь вы сделали бы то же самое, что и для устройств без ZFS. Проверьте системный журнал на наличие сообщений от вашего драйвера SCSI, контроллера HBA или HD и / или программного обеспечения для мониторинга SMART, а затем действуйте соответствующим образом.
Все функции ZFS будут работать одинаково, независимо от того, зашифровано ли базовое хранилище блоков или нет.
Резюме
cryptsetup benchmark
чтобы увидеть, что будет лучше всего работать на вашем оборудовании.источник
geli
используется для создания зашифрованного устройства, и данные в виде открытого текста становятся доступными через второе устройство, которое использует ZFS. См. Второй пункт на странице doc.freenas.org/index.php/Volumes#Encryption .Альтернативная реализация - создать блочное устройство ZVOL ( http://zfsonlinux.org/example-zvol.html ), использовать LUKS для шифрования вновь созданного ZVOL, а затем создать файловую систему ext4 (или другую) поверх зашифрованного блока. устройство.
источник