Вопрос или проблема
Миграция с https://stackoverflow.com/questions/79240445/
У меня есть пул ZFS с 6 дисками и 3 зеркалами, который был смонтирован на виртуальной машине. К сожалению, скрипт отформатировал один из дисков в зеркале. Кроме того, я неправильно экспортировал zpool. Теперь виртуальная машина исчезла, и у меня новая ОС (NixOS) вместо предыдущего гипервизора (Proxmox). Я пытаюсь импортировать zpool в NixOS напрямую, но пул отображается в состоянии degraded и не может быть импортирован. Вот вывод того, как это выглядит, когда я пытаюсь импортировать пул.
root@host1:/tmp/mnt/ > zpool import -fd /dev/sdb1 -fd /dev/sdc1 -fd /dev/sdd1 -fd /dev/sde1 -fd /dev/sdf1 -d /dev/sdg1 -o readonly
pool: data
id: 14999838061156736712
state: UNAVAIL
status: The pool was last accessed by another system.
action: The pool cannot be imported due to damaged devices or data.
see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-EY
config:
data UNAVAIL insufficient replicas
mirror-0 DEGRADED
sde ONLINE
pci-0000:01:05.0-scsi-0:0:0:4 UNAVAIL
mirror-1 ONLINE
sdb ONLINE
sdc ONLINE
indirect-2 ONLINE
mirror-3 UNAVAIL insufficient replicas
pci-0000:01:01.0-scsi-0:0:0:0 UNAVAIL
pci-0000:01:06.0-scsi-0:0:0:5 UNAVAIL
Я понимал, что пока у меня есть одна реплика для зеркала в пуле, я должен быть в состоянии импортировать и восстановить данные. Однако mirror-3 не показывает доступной реплики. Есть один indirect-2, который я не понимаю, и он показывает онлайн. Я полагаю, что один из них является действительным диском. Внутри виртуальной машины я импортировал zpool, используя /dev/dis/by-path, поэтому он показывает pci-000xxxxx. Я считаю, что причина, по которой все pci-000xxx отображаются как UNAVAIL, заключается в том, что новая ОС больше не распознает их как PCI-диски.
Вывод zpool import -a
говорит, что нет доступных пулов для импорта
root@host1:~/ > zpool import -a
no pools available to import
Ответ или решение
Восстановление недоступного пула ZFS может представлять собой серьезную задачу, особенно в сложной ситуации, когда один из дисков в зеркале был отформатирован, а сам пул не был корректно экспортирован. Основываясь на предоставленном вами описании проблемы, давайте рассмотрим возможные шаги для восстановления пула данных на новой операционной системе NixOS.
Шаг 1: Оценка текущего состояния пула
Вероятно, что при попытке импорта ZFS-пула вы столкнулись с проблемой "UNAVAIL", что указывает на то, что ZFS не может видеть достаточно реплик данных для некоторых зеркал. В вашем случае, следующее состояние пула:
- mirror-0: содержит один доступный диск (sde) и один UNAVAIL диск.
- mirror-1: полностью доступен, все диски онлайн (sdb и sdc).
- mirror-3: оба диска UNAVAIL, что критично для восстановления.
- indirect-2: этот элемент требует дополнительного внимания.
Шаг 2: Проверка доступных устройств
Поскольку вы наблюдаете, что некоторые устройства были идентифицированы как pci-...
, а не /dev/sdX
, и так как вы находитесь на новой ОС, необходимо убедиться, что все устройства корректно распознаны. Выполните команду для отображения всех доступных устройств:
lsblk
Убедитесь, что все диски, используемые в пуле, видны. Если некоторые диски не отображаются, возможно, необходимо удостовериться, что они правильно подключены и распознаны системой.
Шаг 3: Работа с отсутствующими репликами
Для зеркала, где отсутствуют реплики (в вашем случае mirror-3), попробуйте временно удалить его из конфигурации пула с помощью следующей команды:
zpool import -f -m data
Команда -f
(force) может помочь в импортировании пула, игнорируя некоторые проблемы. Однако это может привести к потере данных в недоступных пространственных сегментах.
Шаг 4: Используя zpool import
Для попытки импорта пула, работая с минусовыми состояниями, вы можете попробовать следующую команду:
zpool import -d /dev/disk/by-id data
Параметр -d
указывает на каталог, где находятся устройства блока. Использование by-id
может быть более надежным.
Шаг 5: Если импорт не удается
Если вы все еще сталкиваетесь с проблемами, вам потребуется проверить статус и возможность резервного копирования данных. Используйте команды для выполнения диагностики:
zpool status
zpool history
Это даст вам представление о том, какие команды и операции были выполнены на пуле.
Шаг 6: Восстановление данных
Если ни один из вышеперечисленных методов не сработал, возможно, вам нужно будет обратиться к специализированному программному обеспечению для восстановления данных, которое может помочь извлечь данные из поврежденного пула. Рекомендуется использовать инструменты, такие как photorec
или специализированные сервисы восстановления данных.
Заключение
Восстановление недоступного ZFS пула требует большого внимания и аккуратности, так как любые действия могут привести к потере данных. Следуйте указанным шагам, чтобы попытаться вернуть свой пул. Если у вас не получится восстановить данные, возможно, стоит обратиться за помощью к профессионалам. Подходите к этому процессу с терпением и пониманием, что безопасность данных должна оставаться приоритетом.