Назад | Перейти на главную страницу

Восстановление из пула zfs с ошибкой. Параметр «-F» игнорируется

В Ubuntu я недавно начал пробовать ZFS на внешнем жестком диске USB. Теперь у меня, похоже, поврежден пул zfs, что, вероятно, произошло просто в результате того, что я выключил свой компьютер (с poweroff).

$ zpool import
   pool: zfs
     id: 1234512345123451234
  state: FAULTED
 status: The pool metadata is corrupted.
 action: The pool cannot be imported due to damaged devices or data.
    The pool may be active on another system, but can be imported using
    the '-f' flag.
   see: http://zfsonlinux.org/msg/ZFS-8000-72
 config:

        zfs                      FAULTED  corrupted data
          usb-Disk_Name_etc-0:0  ONLINE

Когда я пытаюсь импортировать его, я получаю это полезное сообщение, объясняющее, что я потеряю около 1 секунды данных (что было бы хорошо) и что я могу попытаться восстановить его с помощью опции «-F»:

$ zpool import zfs
cannot import 'zfs': I/O error
    Recovery is possible, but will result in some data loss.
    Returning the pool to its state as of Thu 12 Mar 2020 00:58:03 GMT
    should correct the problem.  Approximately 1 seconds of data
    must be discarded, irreversibly.  Recovery can be attempted
    by executing 'zpool import -F zfs'.  A scrub of the pool
    is strongly recommended after recovery.

Используя флаг пробного запуска, я получаю подтверждение, что -F должно работать:

$ zpool import -Fn zfs
Would be able to return zfs to its state as of Thu 12 Mar 2020 00:58:03 GMT.
Would discard approximately 1 seconds of transactions.

Но когда я пробую настоящую вещь, кажется, что она полностью игнорирует параметр «-F» и повторяет исходное сообщение:

$ zpool import -F zfs
cannot import 'zfs': I/O error
    Recovery is possible, but will result in some data loss.
    Returning the pool to its state as of Thu 12 Mar 2020 00:58:03 GMT
    should correct the problem.  Approximately 1 seconds of data
    must be discarded, irreversibly.  Recovery can be attempted
    by executing 'zpool import -F zfs'.  A scrub of the pool
    is strongly recommended after recovery.

Я нашел упоминание об опции "-X" в этом ответе: https://serverfault.com/a/645866/74394 но я продолжаю получать то же самое сообщение. Я пробовал все эти комбинации параметров, как с именем пула (zfs), так и с числовым идентификационным номером (например, 1234512345123451234), и всегда получаю точно такое же сообщение, как и выше, с предложением использовать параметр -F.

-F -FX -f -fF -fFX

Я здесь что-то явно не так делаю? ZFS кажется невероятно ненадежным, если я безвозвратно потерял весь диск только из-за 1 секунды данных из-за выключения системы! У меня нет резервной копии пула, так как я только начал пробовать ZFS. Спасибо за любую помощь.

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

Попробуйте: zdb -e zfs -ul

Надеюсь, здесь будут перечислены некоторые txgs.

Затем попробуйте: zpool import -f -FX -N -T [txg_number]

где вы получили txg_number из zdb выше.

Что еще можно попробовать: Обновите ZFS до последней версии 0.8.3. То, что поставляется с Ubuntu, довольно древнее, и после этой версии было внесено много исправлений и улучшений.