Ошибке датчика личинки ZFS не удалось получить канонический путь/dev/DISK_NAME

Фон:

  • Гостеприимная Ubuntu
  • ZFS установил для системного диска (так, Вы знаете: rpool/ROOT)
  • Система хорошо работает, но когда ядро обновляет, grub-probe ошибка коры упомянута выше
  • Я не перезагрузил бы прямо сейчас

Существует дискуссия здесь о grub-probe и как это должно "просто быть лучше", но это помогает, пока это не приходит. Я получил идею от того обсуждения.

Больше детали: полный экземпляр ошибки (для моей системы) похож:

/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/ata-ADATA_SP550_2G1520009135-part1'.

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

Этот диск соответствует одному из моих разделов ZIL. Я добавил ZIL и кэш после завершенной установки, таким образом, я предполагаю вот почему, что я не видел проблемы прежде. Я еще не перезагрузил, и вот почему я вижу проблему вообще. Да, можно перезагрузить для фиксации всего этого, но принятие Вас не хочет делать это, продолжать читать:

Если я смотрю в/dev, я вижу ссылки на все свои диски ZFS, которые похожи:

lrwxrwxrwx  1 root     root           4 Sep 16 23:31 ata-WDC_WD10EARS-00Y5B1_WD-WMAV51436394-part1 -> sdc1
lrwxrwxrwx  1 root     root           4 Sep 16 23:31 ata-WDC_WD20EZRX-00D8PB0_WD-WCC4MK86SWX7-part1 -> sdd1
lrwxrwxrwx  1 root     root           4 Sep 16 23:31 ata-WDC_WD20EZRX-00D8PB0_WD-WCC4N1085683-part1 -> sde1
lrwxrwxrwx  1 root     root           4 Sep 16 23:31 ata-WDC_WD2500JS-22MHB0_WD-WCANK4053187-part1 -> sda1

... но особенно ни один для разделов ZIL.

Я могу протестировать ситуацию путем выполнения:

$ sudo grub-probe /
grub-probe: error: failed to get canonical path of `/dev/ata-ADATA_SP550_2G1520009135-part1'.

Таким образом, вопрос: как решить эту проблему так grub-probe ведет себя?

1
задан 20 September 2016 в 00:33

3 ответа

Существует переменная среды, которая фиксирует это. Проблема от моего чтения, кажется, что Grub нравится идея 'поддерживать' zfs, но не идею устранить проблемы, связанные с zfs в Grub. Конкретно его плохая обработка ошибок с точки зрения нахождения вещей.

, Например, инструменты личинки, которые поставлются с Ubuntu 16.x, не найдут начальную загрузку / на объеме ZFS без некоторого вмешательства пользователя, и затем счастливо записать некоторым (но не все) необходимый вывод файлов от любой утилиты Вы используете для папки начальной загрузки/, что это просто сказало Вам, что не могло найти.

В любом случае...

http://list.zfsonlinux.org/pipermail/zfs-discuss/2016-June/025765.html

To check if you have commit (should see full paths):

ZPOOL_VDEV_NAME_PATH=1 zpool status

If so you can do:

ZPOOL_VDEV_NAME_PATH=1 grub-whatevs ....

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

export ZPOOL_VDEV_NAME_PATH=YES

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

я соглашаюсь, что пользователям не придется иметь дело с этим, в отношении комментария femulator. Действительное решение? То же как любой проект с открытым исходным кодом, который томится в ошибках, которые никогда не исправляются. Разветвите его, зафиксируйте его сами и прекратите использовать источник project/library/whatever. Способ FOSS "уволить" кого-то, другими словами, ;). По-видимому, Debian знал об этой конкретной ошибке семь лет назад.

Это было единственной вещью, останавливающей меня от успешной миграции пула начальной загрузки FreeBSD RaidZ к Ubuntu. Если кто-либо еще делает попытку чего-то подобного, процесс относительно прост, пока Вы понимаете ZFS достаточно хорошо для игнорирования частей документации от Grub и zfsonlinux, которые являются неправильными (такие как установка корневого набора данных, чтобы не автосмонтироваться, а...? Как точно это собирается загрузиться затем?). Несколько нелепо, что Ubuntu указывает в их документах, что загрузчик является большей частью небезопасной 'функции' Linux, которая верна, что я предполагаю, но в этом случае это - также явный дефект Ubuntu. Мне потребовался бы час или два для миграции пула BSD ZFS в другую ОС, если я, возможно, сделал это с помощью утилит Sun/Solaris, это на самом деле работает. Проблема, я должен был использовать утилиты Linux (как Grub), которые не делают (или едва) работы в какой-то момент, таким образом, там находится отказ в течение других двух дней, я потратил фиксацию этого. Ubuntu была бы намного лучше, если бы она не должна была копаться для начальной загрузки...

3
ответ дан 3 December 2019 в 06:57

Каков ZFS, прослушивают/устраняют для этого? пользователям не придется иметь дело с этим-> https://github.com/zfsonlinux/grub/issues/5

0
ответ дан 3 December 2019 в 06:57

Принятие Вас не хочет перезагружать (см. ниже), ответ на это оказывается создающими подобными ссылками для дисков, которые отсутствуют. Для меня и моей системы, это означало добавлять эти ссылки:

$ cd /dev
$ sudo ln -sf sdf1 /dev/disk/by-id/ata-ADATA_SP550_2G1520009135-part1
$ sudo ln -sf sdf3 /dev/disk/by-id/ata-ADATA_SP550_2G1520009135-part3
$ sudo ln -sf sdg1 /dev/disk/by-id/ata-SPCC_Solid_State_Disk_EB84076413B201101308-part1
$ sudo ln -sf sdg3 /dev/disk/by-id/ata-SPCC_Solid_State_Disk_EB84076413B201101308-part3

(раздел 2 на обоих дисках зеркально отражается, чтобы быть ZIL для home, но grub-probe не заботится об этом),

Формула для этого должна определить который диски grub-probe потребности, затем создайте символьные ссылки для них согласно шаблону:

$ sudo ln -sf {sdname}{partN} /dev/disk/by-id/{diskid}-part{partN}

Можно определить диски, требуемые путем повторения команды $ sudo grub-probe / и создание ссылок, пока это не счастливо и в конечном счете сообщает:

$ sudo grub-probe /
zfs

Пока это не будет счастливо, Вы будете видеть жалобы, которые похожи:

$ sudo grub-probe /
grub-probe: error: failed to get canonical path of `/dev/disk/by-id/ata-ADATA_SP550_2G1520009135-part3'.

Обратите внимание, что это жалуется конкретно на -part3 и дисковое имя ata-ADATA_SP550... Создайте ссылку:

Найдите дисковое соответствие ata-ADATA_SP.... путем выполнения:

$ ls -l /dev/disk/by-id | grep ata-ADATA_SP
lrwxrwxrwx 1 root root  9 Sep 17 13:45 ata-ADATA_SP550_2G1520009135 -> ../../sdf
lrwxrwxrwx 1 root root 10 Sep 17 13:49 ata-ADATA_SP550_2G1520009135-part1 -> ../../sdf1
lrwxrwxrwx 1 root root 10 Sep 17 13:51 ata-ADATA_SP550_2G1520009135-part2 -> ../../sdf2
lrwxrwxrwx 1 root root 10 Sep 17 13:50 ata-ADATA_SP550_2G1520009135-part3 -> ../../sdf3

Обратите внимание, что это - sdf, таким образом, Ваша команда ссылки становится:

$ sudo ln -sf /dev/sdf3 /dev/disk/by-id/ata-ADATA_SP550_2G1520009135-part3

Промывка и повторение до grub-probe команда успешно выполняется. Если Вы знаете то, что Вы делаете, и Вы знаете, какие разделы используются любыми дисками, участвующими в ROOT пул, любой ценой пойдите непосредственно в конец и свяжите тех, которые вместо использования grub-probe сказать Вам, что сделать.

Можно думать, что это ниспровергало бы причину, Вы использовали их /dev/disk/by-id/* имена во-первых. Если /dev/sd* изменение путей, Вы политы из шланга и должны сделать ссылки снова, правильно? Оказывается, что альтернатива всему этому должна перезагрузить хост: это создает ссылки на перезагрузку.

1
ответ дан 3 December 2019 в 06:57

Другие вопросы по тегам:

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