ZFS бесконечное обновление

29

У меня большой (> 100 ТБ) пул ZFS (FUSE) на Debian, который потерял два диска. Когда диски вышли из строя, я заменил их запасными, пока не смог запланировать отключение и физически заменить неисправные диски.

Когда я выключил систему и заменил диски, пул начал восстанавливаться, как и ожидалось, но когда он завершается примерно на 80% (обычно это занимает около 100 часов), он перезапускается снова.

Я не уверен, что при замене двух дисков одновременно возникло состояние состязания или из-за размера пула резервное копирование занимает так много времени, что другие системные процессы прерывают его и вызывают его перезапуск, но в результаты «zpool status» или системные журналы, указывающие на проблему.

С тех пор я изменил способ размещения этих пулов для повышения производительности переноса данных, но любые рекомендации или советы по возвращению этой системы в эксплуатацию приветствуются.

Вывод статуса zpool (ошибки новые с момента последней проверки):

  pool: pod
 state: ONLINE
status: One or more devices has experienced an error resulting in data
    corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
    entire pool from backup.
   see: http://www.sun.com/msg/ZFS-8000-8A
 scrub: resilver in progress for 85h47m, 62.41% done, 51h40m to go
config:

    NAME                                                 STATE     READ WRITE CKSUM
    pod                                                  ONLINE       0     0 2.79K
      raidz1-0                                           ONLINE       0     0 5.59K
        disk/by-id/wwn-0x5000c5003f216f9a                ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWPK    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQAM    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPVD    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ2Y    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CVA3    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQHC    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPWW    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09X3Z    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ87    ONLINE       0     0     0
        spare-10                                         ONLINE       0     0     0
          disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F20T1K  ONLINE       0     0     0  1.45T resilvered
          disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BJN  ONLINE       0     0     0  1.45T resilvered
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQG7    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQKM    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQEH    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09C7Y    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWRF    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ7Y    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0C7LN    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQAD    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CBRC    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPZM    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPT9    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ0M    ONLINE       0     0     0
        spare-23                                         ONLINE       0     0     0
          disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F226B4  ONLINE       0     0     0  1.45T resilvered
          disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CCMV  ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0D6NL    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWA1    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CVL6    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0D6TT    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPVX    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BGJ    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0C9YA    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09B50    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0AZ20    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BKJW    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F095Y2    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F08YLD    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQGQ    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0B2YJ    ONLINE       0     0    39  512 resilvered
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQBY    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0C9WZ    ONLINE       0     0     0  67.3M resilvered
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQGE    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ5C    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWWH    ONLINE       0     0     0
    spares
      disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CCMV      INUSE     currently in use
      disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BJN      INUSE     currently in use

errors: 572 data errors, use '-v' for a list
jasongullickson
источник
пожалуйста, предоставьте выводzpool status
longneck
Так о каких ошибках он сообщает, если вы используете -v?
Бобби
«ошибки: постоянные ошибки были обнаружены в следующих файлах:», а затем список из примерно 12 файлов, которые имеют ошибки.
Ясонгулликсон
Для части 'see:' вы можете прочитать более подробное объяснение здесь: illumos.org/msg/ZFS-8000-8A
Раймонд Тау

Ответы:

56

Поздравляю и э-э-э. Вы наткнулись на одну из лучших вещей в ZFS, но также совершили грех конфигурации.

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

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

Кажется, это трудно понять. Вот картинка:

цепочка событий

Это на самом деле хорошая вещь, потому что если бы это был традиционный RAID-массив, весь ваш массив просто перешел бы в автономный режим, как только вышел из строя второй диск, и у вас не было бы шансов на восстановление на месте. Но поскольку это ZFS, он все еще может работать с использованием имеющихся у него частей и просто возвращает ошибки на уровне блоков или файлов для частей, которых у него нет.

Вот как вы можете это исправить: Кратковременно получите список поврежденных файлов zpool status -vи скопируйте их из резервной копии в их исходное местоположение. Или удалите файлы. Это позволит возобновить и завершить преобразователь.

Вот грех вашей конфигурации: у вас слишком много дисков в группе raidz.

Долгосрочный: вам нужно перенастроить ваши диски. Более подходящей конфигурацией будет размещение дисков в небольшие группы из 5 дисков или около того в raidz1. ZFS автоматически распределяется между этими небольшими группами. Это значительно сокращает время восстановления при сбое одного диска, потому что вместо всех из них требуется участие только 5 дисков. Команда для этого будет выглядеть примерно так:

zpool create tank raidz da0 da1 da2 da3 da4 \
                  raidz da5 da6 da7 da8 da9 \
                  raidz da10 da11 da12 da13 da14 \
                  spare da15 spare da16
длинная шея
источник
Большое спасибо @longneck за подробный и информативный ответ! Вы точно знаете последовательность событий, и я уже воспользовался вашим советом по настройке устройства (второе устройство, которое я построил, настроено почти так же, как вы описали, с некоторыми дополнительными соображениями, чтобы каждый рейд распространялся на оборудование для уменьшить шансы потерять весь рейд из-за отказа объединительной платы и т. д.).
jasongullickson
После удаления поврежденных файлов «zfs status» теперь возвращает шестнадцатеричные значения вместо имен файлов; Я предполагаю, что это пройдет, когда скраб наконец закончится?
jasongullickson
@jasongullickson, только если метаданные файловой системы также не повреждены. ZFS довольно агрессивен, когда речь идет о защите метаданных, поэтому вы, вероятно, будете в порядке. время покажет.
длинная шея
Лично я раньше не сталкивался с событием повреждения метаданных, поэтому не знаю, как это будет выглядеть с точки зрения событий ошибок.
длинная шея
1
@ longneck Понятно, тогда мы согласны - определенно плохая идея иметь достаточно большую группу RAID-Z, чтобы вы стали узким местом для восстановления и замедлили его. И еще один большой риск для больших групп - увеличение вероятности отказа второго устройства во время переноса - увеличенное количество дисков четности (с RAID-Z2 или 3) поможет решить проблемы с надежностью, но не со скоростью работы переносчика. ,
Шейн Мэдден