Проблемы с совместным использованием портативного зашифрованного диска в формате ZFS -между двумя компьютерами Linux

Ответ заключается в том, что MKLROOT находится там, где вы установили MKL. На моей машине это /opt/intel/mkl/, но у вас может быть по-другому. Информацию о каталогах установки MKL по умолчанию в различных ОС можно найти здесь .

Вам также не нужен MKL для использования OSQP. Если вы используете cmake для прямой сборки OSQP, вы можете указать -DENABLE_MKL_PARDISO=FALSE, и в этом случае OSQP будет использовать только свой собственный линейный решатель qdldl.

0
03.11.2021, 19:56
1 ответ

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

Учитывая, что вы работаете над обеспечением совместимости между системами, которые вы хотите использовать в этом пуле, я бы посоветовал вам отказаться от шифрования до тех пор, пока вы не будете уверены, что у вас есть правильная механика структуры zpool и что нет лежащих в основе блокировки, которые могут помешать успешному завершению ваших тестов.

При этом одно из необходимых условий переносимости пулов ZFS между системами заключается в том, что блочные устройства, которые составляют пул (и которые закодированы в метаданных пула ), должны быть однозначными в любых системах, где пул должен быть импортирован. Это делает неразумным использование голых физических устройств, таких как /dev/sdbи т. д. Лучше создать раздел на каждом используемом диске и назначить уникальную метку каждому используемому разделу. Серийный номер диска часто представляет собой удобную строку для использования, поскольку он будет виден в электронном виде не только в метаданных пула, но и в выводе blkid, а также виден человеку при осмотре корпуса физического диска.

Таким образом, если серийный номер жесткого диска 6SL0CTD, вы должны создать раздел на этом диске и пометить его zfs-data-6SL0CTD. Затем создайте пул, ссылающийся на это логическое устройство (вместо, возможно, переменного физического устройства ):

.
# zpool create tank /dev/disk/by-partlabel/zfs-data-6SL0CTCD

Кроме того, прочтите справочную страницу для zpool importи обратите внимание, что существует множество неразрушающих -инструментов, которые можно использовать, когда вы не уверены, что импортируете (или почему это произойдет. т импорт):

Без параметров:

# zpool import

показывает любой пул (с ), которые могут быть доступны для импорта. У меня нет тестового примера под рукой, но я думаю, что он также покажет пулы, которые нельзя импортировать, как правило, из-за отсутствующих или неисправных устройств.Одной из причин «отсутствующего» устройства может быть то, что в метаданных пула указано, что /dev/sdb должен использоваться, но на узле уже есть /dev/sdb, и это устройство не содержит метаданных, соответствующих пулу. Опять же, именно поэтому важно назначать метки разделов и создавать пулы исключительно на основе меток разделов. Если эта метка раздела присутствует, пул будет найден, и не будет иметь значения, физическое устройство, на котором находится этот раздел.

# zpool import -N tank

Импортирует пул tank, но не монтирует из него файловые системы. Это можно использовать как проверку второго уровня -пула. Хотя ничего не монтируется, можно посмотреть статистику пула, пул можно scrubкровать и т.д.

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

zpool status -Pпокажет полный логический путь ко всем устройствам в пуле:

# zpool status -P
  pool: tank
 state: ONLINE
  scan: scrub repaired 0B in 21h34m with 0 errors on Sun Oct 10 21:58:23 2021
config:

    NAME                                            STATE     READ WRITE CKSUM
    tank                                          ONLINE       0     0     0
      /dev/disk/by-partlabel/zfs-data-6SL0CTCD    ONLINE       0     0     0

errors: No known data errors

И наоборот, zpool status -Lпокажет физическое имя всех устройств в пуле:

# zpool status -L
  pool: tank
 state: ONLINE
  scan: scrub repaired 0B in 21h34m with 0 errors on Sun Oct 10 21:58:23 2021
config:

    NAME                                            STATE     READ WRITE CKSUM
    tank                       ONLINE       0     0     0
      sdb1                     ONLINE       0     0     0

errors: No known data errors

Конечным результатом использования меток разделов вместо узлов физических устройств является то, что выходные данные zpool status -Pбудут одинаковыми на всех машинах, которые импортируют пул, тогда как выходные данные zpool status -Lмогут сильно различаться. Что, в свою очередь, является причиной того, что команда zpool createдолжна быть написана с точки зрения логических устройств, отличных от -, которые гарантированно будут однозначными на всех машинах, которым может потребоваться импортировать пул.

После того, как вы создали пул, структурированный с точки зрения однозначных имен устройств, применение шифрования к пулу zpool должно быть простым, при условии, что у вас есть достаточно похожие стеки ZFS на хостах, которые должны иметь возможность импортировать пул.

0
03.11.2021, 22:53

Теги

Похожие вопросы