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