Сегодня я сделал что-то очень глупое, пытаясь добавить третье зеркало к существующему zpool Linux с именем backup
. Достаточно сказать, что я сделал пару ошибок, потому что на самом деле я не занимаюсь администрированием своей ZFS, кроме как менять диски каждые пару лет. И, пытаясь исправить их, я неправильно прочитал онлайн-совет по воссозданию пула и создал новый пул с именем backup
тем самым разрушая существующий пул. (Да, я использовал -f
вариант после того, как пожаловался. Да я идиот. Теперь я знаю, что больше никогда этого не сделаю. Давайте двигаться дальше.)
Из того, что я прочитал в Интернете, мой оригинал backup
пул, над которым я «создал», скорее всего, невозможно восстановить. Что вроде нормально, потому что он назван backup
по какой-то причине - в нем в основном хранятся мои резервные копии за ~ 15 лет. Однако есть несколько вещей, которые было бы неплохо вернуть (некоторые несущественные данные, которые я временно переместил туда), и несколько вещей, на повторную настройку которых у меня уйдет несколько дней, связанных с настройками резервного копирования, которые находился на том томе. (Теперь я знаю, что нужно сделать резервную копию этого материала в другом месте, так что это будет полезным опытом.)
Но у меня есть резервная копия моих резервных копий - сегодня я заменял третье зеркало для диска, который я удалил несколько месяцев назад во время другого обновления моей системы (вместе с обновлением ОС). Этот диск на самом деле не вышел из строя, но он был старым и начал накапливать пару сбойных секторов, поэтому я подумал, что мог бы просто вынуть его, а не ждать, пока он повредится или что-то в этом роде.
Как бы то ни было, у меня все еще есть этот старый диск, поэтому я решил, что могу просто вставить его обратно в свою систему и восстановить оттуда данные пула. Мне не хватало данных резервных копий только за последние несколько месяцев. Я никогда официально не экспортировал пул на этом диске или что-то в этом роде. С тех пор я обновил свою ОС, поэтому не ожидал, что она автоматически обнаружит этот диск. (Я не знаю, подключен ли он к тому же порту SATA или нет, так как я переставил несколько дисков.)
Но zpool import
похоже, что команда ничего не находит автоматически. Поиграйте с некоторыми вариантами, zpool import
видит (теперь уничтоженную) вторую версию backup
пул, но это просто пустой пул, который я случайно создал на двух других дисках.
Какие-нибудь советы о том, как я могу попытаться прочитать данные на этом третьем диске? Насколько я помню, это было идеально функциональное и современное зеркало пула ZFS, прежде чем я вытащил его из кейса несколько месяцев назад. В частности:
backup
потенциально мешает возможности обнаружить и попытаться восстановить / импортировать этот старый пул? Есть ли способ обойти это?create -f
команда. Но если у кого-то есть идея, как я мог бы восстановить первый пул прямо там, это, очевидно, было бы здорово.Спасибо за любую помощь или предложения.
РЕДАКТИРОВАТЬ: вот результат zdb -l /dev/sdb1
(это третий привод)
------------------------------------
LABEL 0
------------------------------------
version: 5000
name: 'backup'
state: 0
txg: 0
pool_guid: 3936176493905234028
errata: 0
hostid: 8323329
hostname: [omitted]
top_guid: 14695910886267065742
guid: 17986383713788026938
vdev_children: 1
vdev_tree:
type: 'mirror'
id: 0
guid: 14695910886267065742
whole_disk: 0
metaslab_array: 34
metaslab_shift: 33
ashift: 12
asize: 1000197324800
is_log: 0
create_txg: 4
children[0]:
type: 'disk'
id: 0
guid: 17914838236907067293
path: '/dev/sdd1'
whole_disk: 0
DTL: 143
create_txg: 4
children[1]:
type: 'disk'
id: 1
guid: 17986383713788026938
path: '/dev/sdb1'
whole_disk: 0
DTL: 141
children[2]:
type: 'disk'
id: 2
guid: 1683783279473519399
path: '/dev/sdc1'
whole_disk: 0
DTL: 145
create_txg: 4
features_for_read:
com.delphix:hole_birth
com.delphix:embedded_data
create_txg: 0
labels = 0 1 2 3
Если я правильно интерпретирую, статус 0 означает, что пул не должен быть поврежден. Но когда я попытался импортировать даже с использованием GUID пула zpool import 3936176493905234028
, Я получаю сообщение об ошибке «не удается импортировать ... нет такого пула» (Я предполагаю, что мне следует использовать pool_guid, но я также пробовал использовать guid и top_guid, и, похоже, ничего не работает.)
EDIT2: я восстановил файл zpool.cache из исходной ОС, в которой этот пул был активен, и попробовал zpool import -c zpool.cache
, который дал это:
pool: backup
id: 3936176493905234028
state: UNAVAIL
status: One or more devices contains corrupted data.
action: The pool cannot be imported due to damaged devices or data.
see: http://zfsonlinux.org/msg/ZFS-8000-5E
config:
backup UNAVAIL insufficient replicas
mirror-0 UNAVAIL insufficient replicas
sdd1 FAULTED corrupted data
sdc1 FAULTED corrupted data
Этого и следовало ожидать. Это два диска, на которых пул был перезаписан моей командой create. Однако sdb1 не указан как потенциальный диск - вероятно, потому, что я удалил его из пула после того, как вынул диск. Тем не менее, я думаю, что у меня есть неповрежденная копия старых зеркальных данных на sdb1, и zdb соглашается. Почему не импортируется?