Что делать с поврежденным пулом ZFS

Был запущен тестовый экземпляр NAS с использованием ZFS, как указано в Восстановление сервера Ubuntu с использованием ZFS RAIDZ для данных .

На этой неделе один из моих дисков умер. Не должно ли быть проблемой, не так ли (преимущества RAID заключаются в устойчивости и производительности)?

За исключением того, что мой пул ZFS был поврежден, как в: это тестовый экземпляр, и поэтому я могу легко начать заново. Но что, если этот пул содержит важные данные? Что будет правильным следующим шагом (ами) для восстановления данных и восстановления моего NAS в рабочем состоянии? Или ZFS автоматически пробует все возможные подходы к восстановлению, так что теперь данные обновляются?

5
задан 13 April 2017 в 15:24

4 ответа

Похоже, что ваш пул на самом деле не поврежден. Хотя, судя по выводу, могут возникнуть проблемы с несколькими устройствами. Я предполагаю, что несколько дисков могут быть в сомнительном состоянии, следовательно, неисправное состояние на SDB и SDC. Выясните, что может быть с ними не так, и ваш пул может доказать, что вы не правы. Это не похоже на фатальное состояние пула.

0
ответ дан 13 April 2017 в 15:24

Вооружившись пониманием @slashdot, я в основном исправил свою проблему, но на самом деле я не знаю, что я сделал. Пожалуйста, изучите следующий след и просветите меня.

В частности, какая из следующих гипотез верна и что я пропускаю?

  1. Ни zdb -u tank, ни zdb -dcsv tank не сделали ничего полезного.
  2. Второй zpool import -f tank работал, когда первый не сработал, потому что с момента zpool export tank прошло достаточно времени, чтобы у ZFS была возможность исправить себя.
  3. Весь этот эпизод был связан с тем, что метки менялись после отказа одного из дисков (думаю, что это был sdb, вызвавший sdc> sdb & sdd> sdb).

LOG

andy@ubuntu:~$ zpool status
andy@ubuntu:~$ sudo zpool status
  pool: tank
 state: UNAVAIL
status: One or more devices could not be used because the label is missing
        or invalid.  There are insufficient replicas for the pool to continue
        functioning.
action: Destroy and re-create the pool from
        a backup source.
   see: http://www.sun.com/msg/ZFS-8000-5E
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        UNAVAIL      0     0     0  insufficient replicas
          raidz1-0  UNAVAIL      0     0     0  insufficient replicas
            sdb     FAULTED      0     0     0  corrupted data
            sdc     FAULTED      0     0     0  corrupted data
            sdd     UNAVAIL      0     0     0
andy@ubuntu:~$ sudo zdb -u tank
zdb: can't open 'tank': No such device or address
andy@ubuntu:~$ sudo zpool scrub tank
cannot scrub 'tank': pool is currently unavailable
andy@ubuntu:~$ sudo zdb -bcsv tank
zdb: can't open 'tank': No such device or address
andy@ubuntu:~$ sudo zpool export tank
andy@ubuntu:~$ sudo zpool import tank
cannot import 'tank': pool may be in use from other system
use '-f' to import anyway
andy@ubuntu:~$ sudo zpool import -f tank
cannot import 'tank': one or more devices is currently unavailable
andy@ubuntu:~$ sudo zpool status
no pools available
andy@ubuntu:~$ sudo zpool status -x
no pools available
andy@ubuntu:~$ sudo zpool import
  pool: tank
    id: 9117894036185671023
 state: UNAVAIL
status: One or more devices contains corrupted data.
action: The pool cannot be imported due to damaged devices or data.
   see: http://www.sun.com/msg/ZFS-8000-5E
config:

        tank        UNAVAIL  insufficient replicas
          raidz1-0  UNAVAIL  insufficient replicas
            sdb     FAULTED  corrupted data
            sdb     UNAVAIL
            sdc     ONLINE
andy@ubuntu:~$ sudo zpool import tank
cannot import 'tank': pool may be in use from other system
use '-f' to import anyway
andy@ubuntu:~$ sudo zpool import -f tank
andy@ubuntu:~$ sudo zpool status
      pool: tank
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-4J
  scan: scrub repaired 0 in 0h13m with 0 errors on Mon Nov 21 09:22:11 2011
config:

        NAME                      STATE     READ WRITE CKSUM
        tank                      DEGRADED     0     0     0
          raidz1-0                DEGRADED     0     0     0
            10820373921989571629  UNAVAIL      0     0     0  was /dev/sdb1
            sdb                   ONLINE       0     0     0
            sdc                   ONLINE       0     0     0

errors: No known data errors
andy@ubuntu:~$
0
ответ дан 13 April 2017 в 15:24

Я думаю, что предыдущие плакаты высветили проблему. Вероятная причина была в том, как вы указали диски.

Мой опыт работы с ZFS в Ubuntu. Хотя я и использую ZFS на freenas, мне никогда не приходилось углубляться в реализацию bsd.

Конечно, для Ubuntu вам настоятельно рекомендуется указывать идентификатор устройства, а не дескриптор: т.е. / dev / disk / by-id / scsi-SATA-long строка, которая уникально идентифицирует физический диск, а не / dev / SDA.

Использование устройства by-id устраняет любую зависимость от конкретного порта SATA, к которому подключен диск.

Гарет

0
ответ дан 13 April 2017 в 15:24

Можете ли вы просто перепутать диски?

Как только я перепутал диски, zpool сказал «диски содержат поврежденные данные». После того, как я подключил диски в предыдущей последовательности, он начал работать.

Может быть, после того, как вы импортировали танк, zpool распознал правильную последовательность.

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: