FreeNAS zfs zraid два сбойных диска

У меня есть файловый сервер FreeNAS 8.3 с ZFS выполнение четырех дисков на 3 ТБ в набегах.

camcontrol devlist:

          at scbus0 target 0 lun 0 (pass0,ada0)
          at scbus1 target 0 lun 0 (pass1,ada1)
          at scbus2 target 0 lun 0 (pass2,ada2)
          at scbus3 target 0 lun 0 (pass3,ada3)
       at scbus6 target 0 lun 0 (pass4,da0)

На прошлой неделе я заметил, что два из дисков из четыре начинали перестать работать:

freenas smartd[2241]: Device: /dev/ada0, 24 Currently unreadable (pending) sectors
freenas smartd[2241]: Device: /dev/ada0, 24 Offline uncorrectable sectors
freenas smartd[2241]: Device: /dev/ada2, 24 Currently unreadable (pending) sectors
freenas smartd[2241]: Device: /dev/ada2, 24 Offline uncorrectable sectors

состояние шпульки-v не показало мне ошибок как бы то ни было. Я не все, что знакомый с ZFS, и это было установкой другим администратором. По некоторым причинам у меня создалось впечатление, что я мог просто заменить сбойные диски один за другим. Который является тем, что я продолжил делать.

2014-10-13.17:41:29 zpool offline vol1 gptid/24726389-df9e-11e1-9963-c860009da3f8
2014-10-13.18:19:24 zpool replace vol1 15380758640793782293 gptid/f1a3e8b8-5326-11e4-966d-c860009da3f8
2014-10-13.18:21:28 zpool detach vol1 15380758640793782293

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

[root@freenas] ~# zpool status -v
  pool: vol1
 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
  scan: resilvered 2.25T in 27h51m with 1 errors on Tue Oct 14 22:10:59 2014
config:

        NAME                                            STATE     READ WRITE CKSUM
        vol1                                            ONLINE       0     0     1
          raidz1-0                                      ONLINE       0     0     2
            gptid/f1a3e8b8-5326-11e4-966d-c860009da3f8  ONLINE       0     0     0
            gptid/24f91374-df9e-11e1-9963-c860009da3f8  ONLINE       0     0     0
            gptid/25865cb9-df9e-11e1-9963-c860009da3f8  ONLINE       0     0     0
            gptid/260cd97a-df9e-11e1-9963-c860009da3f8  ONLINE       0     0     0

errors: Permanent errors have been detected in the following files:
 vol1@auto-20140830.0102-6m:/home/.../some.pdf

Теперь этот файл был удален давным-давно, и таким образом, я не забочусь об этом вообще, я полагал, что могу просто удалить снимок, но это сделало вещи хуже:

[root@freenas]~# zfs destroy vol1@auto-20140830.0102-6m
[root@freenas] ~# zpool status -v
  pool: vol1
 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
  scan: resilvered 2.25T in 27h51m with 1 errors on Tue Oct 14 22:10:59 2014
config:

        NAME                                            STATE     READ WRITE CKSUM
        vol1                                            ONLINE       0     0     1
          raidz1-0                                      ONLINE       0     0     2
            gptid/f1a3e8b8-5326-11e4-966d-c860009da3f8  ONLINE       0     0     0
            gptid/24f91374-df9e-11e1-9963-c860009da3f8  ONLINE       0     0     0
            gptid/25865cb9-df9e-11e1-9963-c860009da3f8  ONLINE       0     0     0
            gptid/260cd97a-df9e-11e1-9963-c860009da3f8  ONLINE       0     0     0

errors: Permanent errors have been detected in the following files:

        <0x7c343>:<0x45b6bcd>

Таким образом, я решил заняться расследованиями далее, прочитать документы Oracle, и нашел это: "если два диска в RAID-Z с четырьмя путями (raidz1) виртуальное устройство даны сбой, то никакой диск не может быть заменен, потому что недостаточные копии, из которых можно получить данные, существуют". ada2 все еще бросает ошибки, и похоже, что я не могу заменить его в существующем пуле, поскольку это сделает данные недоступными?

Это означает, что единственный способ восстановиться состоит в том, чтобы скопировать существующие данные, уничтожьте пул, замените ada2, создайте новый пул и восстановите данные по новому пулу? Или есть ли другой способ сделать это, удаляя все снимки прежде 20140830, возможно? Btw последний куст нашел другой снимок с поврежденными данными, тот же файл, очевидно:

  vol1@auto-20140831.0102-6m:/home/.../some.pdf
4
задан 20 October 2014 в 18:11
1 ответ

I полагаю причина, по которой вы видите вещи типа

errors: Permanent errors have been detected in the following files:

        <0x7c343>:<0x45b6bcd>

, в том, что данные все еще существуют в виде снимка, и только в виде снимка.

Помните, что снэпшот в ZFS - это всего лишь маркер точки во времени; на самом деле он не копирует никакие блоки, он просто сохраняет ссылки на старые блоки живыми, когда данные заменяются (используя обычное поведение ZFS при копировании на запись). Следовательно, если есть снэпшоты со ссылками на плохие блоки, то во время скрабов он будет продолжать отображаться как ошибка.

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

Исправление заключается в том, чтобы уничтожить каждый снэпшот в свою очередь, который содержит файл, на который она повлияла. После уничтожения всех таких снэпшотов не останется ссылок на плохие блоки, и ZFS (будем надеяться) сообщит об отсутствии ошибок.

Кроме того, рекомендуемый способ замены неработающего, но все еще функционирующего (маржинального) устройства в ZFS-пуле - это использование zpool для замены пула old-dev new-dev с подключением как old-dev, так и new-dev на протяжении всего процесса замены. Это позволяет ZFS использовать данные на периферийном устройстве там, где это возможно. Как только zpool replace завершит процесс замены, старое устройство будет автоматически удалено из пула и может быть физически отключено. Очевидно, что для этого требуется наличие соответствующего количества дополнительных соединений на хосте.

.
2
ответ дан 3 December 2019 в 03:57

Теги

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