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.