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

ZFS: перевод диска в режим онлайн в недоступном пуле

У меня есть домашний сервер, использующий FreeBSD и ZFS, который хорошо работал последние 5 лет, и несколько раз я успешно заменял неисправные диски.

Однако сегодня произошла небольшая катастрофа, и я надеюсь найти решение.

У меня есть пул верхнего уровня, состоящий из 3 vdev, каждый из которых является пулом raidz1, поэтому до 3 дисков могут выйти из строя - при условии, что все они принадлежат разным vdev, - и целостность данных не нарушена.

Вчера я заметил довольно много ошибок, сообщаемых 1 диском в 1 vdev. Исходя из прошлого опыта, это обычно означает, что диск вот-вот выйдет из строя, поэтому я делаю то, что обычно делаю:

  1. Автономный диск: zpool offline tank gpt / ta4
  2. Физически заменить диск
  3. Установите новый диск с помощью gpart, а затем zpool замените tank gpt / ta4

Однако на этот раз между шагами 2 и 3 произошла катастрофа: когда я включил сервер после установки нового диска, я почувствовал запах гари, и мой HBA указал, что 4 дисков были недоступны! По невероятной неудаче, должно быть, произошел скачок напряжения, потому что другой привод в том же vdev (gpt / ta2) теперь полностью мертв, и визуальный осмотр показывает, что один из полевых МОП-транзисторов на печатной плате взорван.

Итак, теперь gpt / ta2 НЕДОСТУПЕН, а gpt / ta4 ОФФЛАЙН, поэтому очевидно, что vdev, который является raidz1, также НЕДОСТУПЕН.

Мои вопросы: 1) Есть ли способ вернуть gpt / ta4 в онлайн? Когда я пытаюсь ввести "zpool online tank gpt / ta4", он сообщает мне, что пул недоступен, поэтому я не могу этого сделать. Я могу понять, почему это может быть так, но я думал, что gpt / ta4, хотя и испытывал некоторые ошибки чтения, в основном все еще был `` хорошим '' членом пула raidz1 до того, как отключить его (статус zpool сообщил, что нет известных данных ошибки). Есть ли способ добиться этого?

2) Если это не удается, есть ли способ хотя бы вывести оставшуюся часть моего пула верхнего уровня (который состоит из 3 raidz1 vdev) в сети? Остальные 2 vdev в порядке.

Пожалуйста, помогите, у меня по нему много ценных данных :-)

Заранее спасибо.

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

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

1: Убедитесь, что диски безопасны - даже если для этого придется отключить их все.

2: Обновите FreeBSD до последней версии - вам нужны самые свежие биты ZFS, которые вы можете получить.

3: Поместите исходный gpt / ta4 (который предположительно «в порядке» и просто испытывает ошибки чтения) обратно в систему или в новую систему с более новыми битами ZFS (а также все остальные, если вы их удалили), загрузитесь его и запускать по порядку, пока один из них не заработает (имейте в виду - они небезопасны, особенно последний, поскольку при попытках восстановить систему они, вероятно, откатятся и, таким образом, потеряют недавно записанные данные):

  • zpool import -f бак
  • zpool import -fF бак
  • zpool import -fFX tank

Если все 3 терпят неудачу, вы выходите из сферы «простого» восстановления. Поиск в Google для 'импорта плохих пулов', 'zdb', 'zpool import -F', 'zpool import -X', 'zpool import -T' (опасность!) И т.п. может предоставить вам дополнительные блоги и информацию. о попытках восстановления, предпринятых другими, но на этом этапе это уже очень опасно и потенциально может повредить данные, и вы быстро входите на территорию платных услуг восстановления (а не от традиционных компаний по восстановлению данных, у них нет опыта работы с ZFS и не будет вам никакой пользы).

Примечание. Более точным и «безопасным» методом будет «zpool import -o readonly = on -f -T [txg_id] tank». Однако, чтобы это сработало, вам нужно будет использовать zdb самостоятельно, во-первых, чтобы найти, казалось бы, здоровый недавний txg_id, и я не готов пытаться объяснять все это здесь. Google будет здесь вашим другом - не предпринимайте никаких действий, пока не прочтете достаточно информации, чтобы чувствовать себя комфортно в том, что вы делаете. Не доверяйте ни одному источнику.

Примечание 2: «самым безопасным» было бы немедленно связаться с кем-нибудь, кто может предоставить услуги восстановления ZFS.

Примечание 3: следующий самый безопасный вариант - поместить диски в безопасную систему и перенести каждый необработанный диск целиком на новый диск, что теоретически даст вам идентичные копии ваших дисков, но это будет означать вам понадобится такое же количество новых дисков, желательно того же или идентичного размера / типа, что и старые, но не обязательно. И только затем попробуйте выполнить одно из вышеперечисленных действий на одном комплекте дисков, оставив остальные в стороне для сохранности.