Ответ заключается в том, что MKLROOT находится там, где вы установили MKL. На моей машине это /opt/intel/mkl/
, но у вас может быть по-другому. Информацию о каталогах установки MKL по умолчанию в различных ОС можно найти здесь .
Вам также не нужен MKL для использования OSQP. Если вы используете cmake для прямой сборки OSQP, вы можете указать -DENABLE_MKL_PARDISO=FALSE
, и в этом случае OSQP будет использовать только свой собственный линейный решатель qdldl
.
Я полагаю, что вы ответили на свой первый вопрос в ходе эксперимента :да, выполнение 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 на хостах, которые должны иметь возможность импортировать пул.