Что произойдет, если я заставлю ZFS отключить горячий резерв без действительных реплик?

9

У меня есть пул ZFS, состоящий из 6 RAIDZ. Один из RAIDZ поврежден из-за потери двух дисков в одном RAIDZ достаточно близко друг к другу, чтобы ZFS не смогла восстановиться после первого сбоя до отказа второго диска. Вот вывод «zpool status» вскоре после перезагрузки:

  pool: pod2
 state: DEGRADED
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 0h6m, 0.05% done, 237h17m to go
config:

        NAME                                                 STATE     READ WRITE CKSUM
        pod2                                                 DEGRADED     0     0 29.3K
          raidz1-0                                           ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F165XG    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F1660X    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F1678R    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F1689F    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16AW9    ONLINE       0     0     0
          raidz1-1                                           ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16C6E    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16C9F    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16FCD    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16JDQ    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17M6V    ONLINE       0     0     0
          raidz1-2                                           ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17MSZ    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17MXE    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17XKB    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17XMW    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17ZHY    ONLINE       0     0     0
          raidz1-3                                           ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F18BM4    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F18BRF    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F18XLP    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09880    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F098BE    ONLINE       0     0     0
          raidz1-4                                           DEGRADED     0     0 58.7K
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09B0M    ONLINE       0     0     0
            spare-1                                          DEGRADED     0     0     0
              disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BEN  UNAVAIL      0     0     0  cannot open
              disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F49M01  ONLINE       0     0     0  837K resilvered
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0D6LC    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWD1    ONLINE       0     0     0
            spare-4                                          DEGRADED     0     0     0
              disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09C8G  UNAVAIL      0     0     0  cannot open
              disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F4A7ZE  ONLINE       0     0     0  830K resilvered
          raidz1-5                                           ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-1CH_Z1F2KNQP    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BML0    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPV4    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPZP    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ78    ONLINE       0     0     0
          raidz1-6                                           ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ9G    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQDF    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQFQ    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CW1A    ONLINE       0     0     0
            disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BV7M    ONLINE       0     0     0
        spares
          disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F49M01      INUSE     currently in use
          disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F4A7ZE      INUSE     currently in use
          disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F49MB1      AVAIL   
          disk/by-id/scsi-SATA_ST3000DM001-1ER_Z5001SS2      AVAIL   
          disk/by-id/scsi-SATA_ST3000DM001-1ER_Z5001R0F      AVAIL   

errors: 37062187 data errors, use '-v' for a list

Когда первый диск вышел из строя, я заменил его горячим резервом, и он начал восстанавливаться. Перед завершением переноса второй диск вышел из строя, поэтому я заменил второй диск другим горячим резервом. С тех пор он начнет восстанавливаться, выполнит около 50%, а затем начнет сжимать память, пока не поглотит все это и не приведет к краху ОС.

Обновление ОЗУ на сервере на данный момент не является простым вариантом, и для меня неясно, что это будет гарантировать решение. Я понимаю, что на этом этапе произойдет потеря данных, но если я смогу пожертвовать содержимым этого одного RAIDZ, чтобы сохранить оставшуюся часть пула, это вполне приемлемый результат. Я нахожусь в процессе резервного копирования содержимого этого сервера на другой сервер, но проблема потребления памяти вызывает перезагрузку (или сбой) каждые 48 часов или около того, что прерывает мою резервную копию rsync, а перезапуск rsync требует времени (это может возобновить, как только он выяснит, где он остановился, но это занимает очень много времени).

Я думаю, что ZFS, пытающаяся справиться с двумя запасными операциями замены, является корнем проблемы потребления памяти, поэтому я хочу удалить один из «горячих» резервов, чтобы ZFS могла работать по одной за раз. Однако, когда я пытаюсь отсоединить одну из запчастей, я получаю сообщение «невозможно отсоединить / dev / disk / by-id / scsi-SATA_ST3000DM001-1CH_W1F49M01: нет допустимых реплик». Возможно, я могу использовать опцию -f, чтобы форсировать операцию, но мне не совсем ясно, каков будет результат, поэтому я хотел бы узнать, есть ли у кого-нибудь какие-либо входные данные, прежде чем идти вперед.

Если я смогу привести систему в стабильное состояние, где она сможет оставаться в рабочем состоянии достаточно долго, чтобы завершить резервное копирование, я планирую снять ее для капитального ремонта, но в текущих условиях она застрянет в некотором цикле восстановления.

jasongullickson
источник
Вы отметили это zfs-fuse. Это действительно ZFS Fuse? Пожалуйста, предоставьте детали ОС.
ewwhite
Вы держите пари Debian 6.0.6
jasongullickson
Сколько оперативной памяти у этой системы? Как часто вы чистили массив?
Крис С
Почему вы использовали FUSE, а не реальную реализацию ZFS? Особенно учитывая, что здесь много оборудования. Я думаю, что этот массив готов ...
Ewwhite
На момент создания системы не было собственной реализации ZFS для Linux.
jasongullickson

Ответы:

1

Прямо сейчас вы можете отсоединить диски UNAVAIL, так как ZFS их больше не использует.

У вас два сбойных диска в настройке RAIDZ-1. Скорее всего, вы смотрите на потерю данных и должны быть готовы к восстановлению из резервной копии.

В качестве примечания, RAIDZ оказался очень ненадежным в моем опыте с OpenSolaris / Solaris11. Я бы посоветовал не использовать его в ЛЮБОЙ рабочей нагрузке.

Кроме того, чтобы подкрепить сказанное Ewwhite, FUSE - не лучший вариант. Я бы воспользовался этой возможностью, чтобы перейти на что-то более стабильное (возможно, FreeBSD 10).

Джованни Тирлони
источник