ZFS нескінченний resilvering


29

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

Коли я зняв систему і замінив накопичувачі, пул почав переставляти, як очікувалося, але, коли він закінчується приблизно на 80% (зазвичай це займає близько 100 годин), він знову запускається.

Я не впевнений, що заміна двох дисків одночасно створила перегонну умову, або якщо через розмір пулу resilver займає стільки часу, що інші системні процеси переривають його і змушують його перезапустити, але очевидних ознак у програмі немає результати 'статусу zpool' або системні журнали, які вказують на проблему.

З тих пір я змінив, як я викладаю ці пули, щоб покращити ефективність переробки, але будь-які рекомендації чи поради щодо повернення цієї системи у виробництво оцінені.

вихід статусу 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

Будь ласка, надайте вихідzpool status
longneck

То про які помилки воно повідомляє, якщо ви користуєтесь -v?
Боббі

"помилки: постійні помилки були виявлені в таких файлах:", а потім список близько 12 файлів, які мають помилки.
jasongullickson

Щодо частини "див:", ви можете прочитати тут більш детальне пояснення : lumos.org/msg/ZFS-8000-8A
Raymond Tau

Відповіді:


56

Вітаю і о-о. Ви натрапили на одну з кращих речей щодо ZFS, але також вчинили гріх конфігурації.

По-перше, оскільки ви використовуєте raidz1, у вас є лише один диск, варті даних парності. Однак у вас були два несправності одночасно. Єдиний можливий результат тут - втрата даних . Жодна кількість resilvering не збирається це виправити.

Ваші запаси трохи допомогли вам тут і врятували вас від абсолютно катастрофічної невдачі. Я збираюся тут вийти на кінцівку і сказати, що два диски, які вийшли з ладу, не вийшли з ладу одночасно і що перший запасний лише частково перекинувся до виходу з ладу другого накопичувача.

Це здається важким для слідування. Ось малюнок:

послідовність подій

Це насправді гарна річ, адже якби це був традиційний масив RAID, весь ваш масив просто відійшов би в автономний режим, як тільки другий диск не вдався, і ви не мали б жодного шансу на відновлення на місці. Але оскільки це ZFS, він все ще може працювати з використанням фрагментів, які він має, і просто повертає помилки на рівні блоку або файлу для фрагментів, яких він не має.

Ось як це виправити. Короткочасне отримання списку пошкоджених файлів zpool status -vі скопіюйте ці файли з резервної копії на їх початкові місця. Або видалити файли. Це дозволить відновити та завершити resilver.

Ось ваш гріх конфігурації: у вас занадто багато дисків у групі 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 досить агресивний, коли йдеться про захист метаданих, тому ви, мабуть, будете хорошими. тільки час покаже.
longneck

я особисто раніше не стикався з подіями корупції метаданих, тому не знаю, як це буде виглядати з погляду помилок.
longneck

1
@longneck Gotcha, ми згодні - це, безумовно, погана ідея, щоб група RAID-Z була достатньо великою, щоб ви знеболювали resilver і гальмували його. Інший великий ризик більших груп - збільшені шанси виходу з ладу другого пристрою під час повторного надходження - збільшена кількість дискових паритетів (з RAID-Z2 або 3) допоможе у вирішенні проблем із надійністю, але не зі швидкістю перекидання .
Шейн Медден
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.