Переимпортируйте пул ZFS, который не был корректно экспортирован.

Вопрос или проблема

Недавно я купил NAS QNap и решил попробовать несколько ОС для NAS, среди которых TrueNAS. После создания пула ZFS на TrueNAS и передачи нескольких файлов, я разочаровался в TrueNAS и решил попробовать ОС QNap (QuTS). Обе ОС установлены на NAS. Я прошел через инициализацию QuTS, заметил, что QuTS не автоматически импортировал пул ZFS, и разочаровался в интерфейсе QuTS. После этого я решил переустановить TrueNAS вместе с QuTS (QuTS стер диск, на котором был установлен TrueNAS, который отличается от дисков в пуле ZFS). И это текущее состояние дел.

Пул ZFS состоит из 3 дисков емкостью 5 ТБ каждый. TrueNAS отображает пул в своем интерфейсе, но не может его смонтировать. Пул называется main-pool. Ниже приведены разные команды, которые я пробовал, и их результаты:

# zpool import -a
нет доступных для импорта пулов

# zpool status -v
  пул: boot-pool
 состояние: ONLINE
  сканирование: scrub исправил 0B за 00:00:08 с 0 ошибками в Вск 22 Сен 03:45:10 2024
конфигурация:

        ИМЯ         СОСТОЯНИЕ     ЧТЕНИЕ ЗАПИСЬ CKSUM
        boot-pool    ONLINE       0     0     0
          nvme0n1p3  ONLINE       0     0     0

ошибки: Нет известных ошибок данных

# zpool status -v main-pool
не удается открыть 'main-pool': такого пула не существует

# zdb -l /dev/sd{b,c,e}    
не удалось распаковать метку 0
не удалось распаковать метку 1
------------------------------------
МЕТКА 2 (Плохая контрольная сумма метки)
------------------------------------
    версия: 5000
    имя: 'main-pool'
    состояние: 0
    txg: 4
    pool_guid: 8298165464761202083
    errata: 0
    hostid: 1555077055
    hostname: 'nas'
    top_guid: 4887568585043273647
    guid: 12714426885291094564
    vdev_children: 1
    vdev_tree:
        тип: 'raidz'
        id: 0
        guid: 4887568585043273647
        nparity: 1
        metaslab_array: 128
        metaslab_shift: 34
        ashift: 12
        asize: 15002922123264
        is_log: 0
        create_txg: 4
        children[0]:
            тип: 'диск'
            id: 0
            guid: 12714426885291094564
            путь: '/dev/disk/by-partuuid/8b808c7a-cacd-46d1-b400-9f8c71d51b30'
            whole_disk: 0
            create_txg: 4
        children[1]:
            тип: 'диск'
            id: 1
            guid: 822100609061977128
            путь: '/dev/disk/by-partuuid/8965dbb6-9484-4da5-ba1b-d33303b19ae5'
            whole_disk: 0
            create_txg: 4
        children[2]:
            тип: 'диск'
            id: 2
            guid: 1731788408784132969
            путь: '/dev/disk/by-partuuid/fae9eb3e-e782-4115-bbc9-cde4dc72c408'
            whole_disk: 0
            create_txg: 4
    features_for_read:
        com.delphix:hole_birth
        com.delphix:embedded_data
        com.klarasystems:vdev_zaps_v2
    метки = 2 3 

Странно, но, похоже, я могу импортировать каждый диск отдельно по пути устройства:

# zpool import -d /dev/sdb                               
   пул: main-pool
     id: 8298165464761202083
  состояние: UNAVAIL
статус: Пул последний раз использовался другой системой.
 действие: Пул не может быть импортирован из-за поврежденных устройств или данных.
   см.: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-EY
 конфигурация:

        main-pool                                 UNAVAIL  недостаточно реплик
          raidz1-0                                UNAVAIL  недостаточно реплик
            sdb                                   ONLINE
            8965dbb6-9484-4da5-ba1b-d33303b19ae5  UNAVAIL
            fae9eb3e-e782-4115-bbc9-cde4dc72c408  UNAVAIL

Но не все вместе:

# zpool import -d /dev/sdb -d /dev/sdc -d /dev/sde                   
   пул: main-pool
     id: 8298165464761202083
  состояние: UNAVAIL
статус: Пул последний раз использовался другой системой.
 действие: Пул не может быть импортирован из-за поврежденных устройств или данных.
   см.: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-EY
 конфигурация:

        main-pool   UNAVAIL  недостаточно реплик
          raidz1-0  UNAVAIL  недостаточно реплик
            sdb     UNAVAIL  недействительная метка
            sdc     UNAVAIL  недействительная метка
            sde     UNAVAIL  недействительная метка

Так что… Мой пул ZFS потерян?

Если да, то как люди восстанавливают пул ZFS, когда система вышла из строя до того, как пул ZFS был корректно экспортирован? Например, если диск, содержащий систему, выходит из строя?

Ответ или решение

Ваша ситуация с ZFS пулом действительно проблематичная, но не безнадежная. Давайте поэтапно рассмотрим, как вы можете попытаться восстановить доступ к вашему ZFS пулу после того, как он не был корректно экспортирован из TrueNAS.

Общие Соображения

Как правило, ZFS пул может быть не доступен по следующим причинам:

  1. Не экспортированный пул: Если система, использующая ZFS, была неправильно выключена или переустановлена, это может повредить метаданные пула.
  2. Несоответствие версии: Разные версии ZFS могут иметь несовместимости, хотя в вашем случае обе ОС (TrueNAS и QuTS) основаны на ZFS.
  3. Повреждение дисков: Физическое повреждение дисков также может препятствовать импорту пула.

Теперь давайте перейдем к шагам, которые вы можете предпринять для восстановления доступа к вашему пулу.

Шаги Восстановления

  1. Проверьте Диски: Используйте smartctl или аналогичную утилиту, чтобы убедиться, что ваши диски «живы» и не имеют физических ошибок.

    smartctl -a /dev/sd[b-e]
  2. Попробуйте Импортировать with Force:
    Если ZFS уверен, что пул был неправильно закрыт, вы можете попробовать импортировать его с использованием ключа -f, который принудительно импортирует пул:

    zpool import -f main-pool
  3. Проверьте доступные метки (labels):
    Возможно, метки ваших дисков повреждены. Используйте zdb для просмотра информации о метках:

    zdb -l /dev/sd[b-e]
  4. Импортируйте Пул с Идентификаторами:
    Если вы видите, что некоторые из дисков могут быть доступны, попробуйте указать их явно по UUID:

    zpool import -d /dev/disk/by-partuuid/8965dbb6-9484-4da5-ba1b-d33303b19ae5 main-pool
  5. Используйте Альтернативный Вариант Импорта:
    Если ваш пул действительно «непристойный», и это не помогает, попробуйте импортировать без указания дисков, но с ключом -m:

    zpool import -o cachefile=/etc/zfs/zpool.cache -m /mnt/main-pool main-pool
  6. Проверьте Пул на Наличие Ошибок:
    Если вам удастся импортировать пул, выполните:

    zpool scrub main-pool
    zpool status

    Это может выявить любые проблемы с целостностью данных и позволяет восстановить любые поврежденные данные.

  7. Обратитесь к Ресурсам Общества:
    Если вы всё ещё не можете импортировать пул, возможно, стоит обратиться на форумах по ZFS или в соответствующей поддержке, где опытные пользователи могут предложить специфические решения на основе вашего вывода.

Заключение

Восстановление ZFS пула после неправильно выполненного экспорта — это сложный процесс, но при последовательном и осторожном подходе у вас есть шанс. Всегда создавайте резервные копии ваших данных на случай, если что-то пойдет не так, и помните, что ZFS спроектирован с учетом восстановления и устойчивости к ошибкам, поэтому, скорее всего, ваши данные всё ещё находятся на месте.

Оцените материал
Добавить комментарий

Капча загружается...