В 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, довольно древнее, и после этой версии было внесено много исправлений и улучшений.