Диск випадає з NAS, хоча він справний: часовий ліміт читання (ERC/TLER) і що з ним робити

Коротка відповідь: Коли масив викидає диск, який після перезавантаження повертається й нормально читає, зазвичай винна невідповідність часових лімітів. Ядро Linux припиняє чекати через тридцять секунд, тоді як десктопний диск на проблемному секторі намагається читати й понад дві хвилини — а масив тим часом оголошує його мертвим. Саме тому диски, призначені для NAS, мають увімкнене обмеження відновлення після помилок (ERC у Seagate, TLER у Western Digital) і дозволяють перервати себе через сім секунд. Для диска, який цього не вміє, натомість підвищують тайм-аут на боці системи. Але перш ніж щось налаштовувати, ви маєте знати, чи диск випав через очікування, чи тому, що він справді відходить.

Що насправді сталося в тому масиві

Wiki Linux RAID описує правильний перебіг так: диск натрапляє на сектор, який не вдається прочитати з першої спроби, певний час «старається більше», потім здається й повертає системі помилку. Код RAID обчислює, як мали виглядати дані, і записує їх назад на диск. Така заминка — звичайний режим роботи, і якщо диск не помирає, вона розв’язується сама собою: невдале читання одного сектора зовсім не означає, що на те саме місце не вдасться записати.

Ламається це тієї миті, коли диск не повертає помилку вчасно. Ядро чекає тридцять секунд, а потім здається. Код RAID обчислює дані й хоче записати їх назад, але диск досі намагається читати й не відповідає — тож масив вирішує, що він мертвий, і викидає його з тому. Wiki підсумовує це без прикрас: саме так одна-єдина помилка читання на таких дисках здатна вбити цілий масив.

При цьому диск поводиться точно за задумом. Одинокий диск у комп’ютері не має звідки взяти дані, тож намагатися читати якнайдовше — правильно. У надлишковому масиві навпаки: дані лежать і в іншому місці, а диск, який утримує запит дві хвилини, для масиву гірший за диск, який швидко визнає невдачу. Той самий шматок заліза відтак у ПК «справний», а в NAS «несправний».

Як розпізнати, що йдеться саме про це

Невідповідність тайм-аутів має кілька доволі характерних ознак:

  • диск зник із масиву раптово, а не після тижнів поступового погіршення продуктивності,
  • після перезавантаження або після виймання й повернення в слот він знову з’являється, і з нього нормально читається,
  • SMART на викинутому диску не виглядає як на диску, який відходить (як це розрізнити, розбирає стаття як зрозуміти, що HDD помирає),
  • у масиві стоять десктопні диски або принаймні один такий, який хтось додав під час розширення.

Вирішальне, однак, одне питання: чи вміє цей диск взагалі обмежити тривалість відновлення? Відповідь дасть smartctl -l scterc /dev/sda. Коли у виведенні видно, що диск не підтримує SCT Error Recovery Control, причина у вас на столі.

Особливо підступною є комбінація з технологією SMR. Wiki зазначає, що диски SMR під час перевпорядкування даних застрягають і більш ніж на десять хвилин, тож жодне розумне налаштування тайм-ауту їх не врятує. Чи належить ваша модель до цієї групи, з’ясовує огляд CMR і SMR.

Які диски мають ліміт, а які ні

Тут варто спиратися не на те, що «загальновідомо», а на те, що виробник написав у документації.

Серія дисківЩо виробник каже про лімітДжерело
WD Red, WD Gold, UltrastarTLER увімкнено, відновлення обмежене сімома секундами і вимкнути його не можнаWD support, TLER on RAID edition internal drives
WD Red PlusProduct brief описує налаштування NASware для RAID NAS, але слова TLER в ньому немає — на конкретному екземплярі стан треба перевірити через smartctlProduct brief WD Red Plus
WD Red ProТе саме: datasheet говорить про NASware, а про TLER мовчить — перевіряти на екземпляріData sheet WD Red Pro
Seagate IronWolfТаблиця параметрів має окремий рядок «Error Recovery Control» зі значенням Yes для всіх моделейDatasheet IronWolf
Seagate IronWolf ProПрошивка AgileArray, за datasheet, вмикає dual-plane balancing і time-limited error recoveryDatasheet IronWolf Pro
Дешеві десктопні серіїБільшість сучасних дешевих десктопних дисків не дозволяє налаштувати відновлення після помилокLinux RAID wiki, Timeout Mismatch

Зверніть увагу на те, чого таблиця не каже. Те, що серія має ліміт, ще не означає, що ваш конкретний екземпляр має його виставленим на розумне значення — wiki попереджає, що навіть старіші диски з підтримкою ERC часто мають невідповідне налаштування. Надійне джерело правди — виведення з диска, який стоїть у вашому слоті. Під час вибору нових екземплярів допоможе порівняння WD Red, IronWolf і Toshiba N300.

Що можна налаштувати

На сервері з Linux і mdadm є, по суті, два важелі, і застосовують їх залежно від того, що вміє диск.

Диск уміє ERC. Ви встановлюєте тривалість відновлення на сім секунд:

smartctl -l scterc,70,70 /dev/sda

Значення подані в десятих часток секунди — це найчастіше джерело помилок, бо 70 виглядає як сімдесят секунд. Посібник smartctl каже точно: аргументи READTIME і WRITETIME подаються в десятих часток секунди, значення 0 вимикає функцію, значення нижчі за 65 радше не підтримуються, а для RAID типово встановлюють 70,70. Двадцять секунд отже були б scterc,200,200.

За замовчуванням налаштування є нетривким. Новіші версії smartctl уміють опцію ,p, після якої значення переживають і вимкнення та ввімкнення живлення — але це вимагає диска за ATA ACS-4 або новішим. Для решти дисків діє те, що радить wiki: запускати налаштування під час кожного старту, бо дешевші екземпляри під час вимкнення системи все забувають.

Диск не вміє ERC. Тоді підвищують тайм-аут на боці ядра, щоб він був довшим за те, що дозволяє собі диск:

echo 180 > /sys/block/sdX/device/timeout

Трьох хвилин вистачить і на десктопний диск, який застрягає більш ніж на дві. Значення в /sys не переживає перезавантаження, тож і це належить до стартового скрипта.

І одна пастка, на яку wiki звертає окрему увагу: у дисків, які взагалі не підтримують SCT, спроба налаштувати ERC хоч і зазнає невдачі, але повертає нульовий код завершення. Скрипт, який керується лише кодом завершення, відтак оцінить такий диск як справний. Тому після кожного налаштування прочитайте значення назад.

Synology і QNAP: що в руках адміністратора

На готових NAS-боксах із тайм-аутами не граються — працюють із тим, що пропонує система виробника.

На Synology відключений диск переводить увесь storage pool у стан degraded. Пул при цьому лишається доступним, бо втрати даних не сталося. Реактивація відключеного диска, за KB виробника, проста: витягти зі слота, зачекати кілька секунд і вставити назад. Перш ніж замовляти новий диск, пройдіть офіційну процедуру, як відрізнити несправний диск від несправного слота — це саме та ситуація, коли залізо купують намарно. Що означають окремі повідомлення в DSM, розбирає стаття Storage Pool Degraded або Volume Crashed.

На QNAP стан групи RAID під час відключення дисків змінюється на Error, а томи й storage pool’и падають у стан Inactive. Документація QTS описує відновлення через Storage & Snapshots і функцію Recover RAID з умовою, яку не обійти: кожен диск має повернутися у свою початкову позицію. Водночас вона попереджає, що це відновлення допоможе лише за тимчасово відключених дисків, а не за справжньої відмови диска. Далі йде QNAP RAID Group Degraded або Volume Read-Only.

Коли йдеться вже не про тайм-аут, а про несправність

Невідповідність тайм-аутів — лише одне з пояснень. Не повертайте викинутий диск у масив наосліп і не запускайте rebuild, доки не знаєте, чому він випав. Якщо за цим справді стоїть нечитабельне місце, rebuild прочитає всю поверхню решти дисків, а це саме те навантаження, після якого сиплеться другий диск. Механіку такої відмови розбирає чому rebuild убиває RAID-масиви.

Дайте масиву спокій, якщо диск клацає, зникає зі списку навіть без навантаження, випадає повторно на тому самому місці або якщо про проблему повідомляє вже кілька дисків. У Synology є власна діагностична процедура для зростаючої кількості пошкоджених секторів, і варто пройти її, перш ніж будь-що запуститься. Коли безпечніше витягти дані поза масив, описують як витягти дані з NAS і порятунок даних з RAID-масиву.

Часті запитання

Чому диск повертається після перезавантаження, якщо він «несправний»?

Бо несправним він бути не мусить. Масив викинув його за те, що він не відповів вчасно, а не за те, що не вміє читати. Але це не означає, що все гаразд — наступного разу це повториться.

Чи можу я налаштувати ERC і на диску, який його, за виведенням, не підтримує?

Ні. Лишається підвищити тайм-аут ядра до 180 секунд і зважати на те, що масив під час помилки читання чекатиме хвилинами. Постійне рішення — заміна на екземпляр, який має ліміт із заводу.

Чи стосується це й дисків SMR?

Для SMR цього не досить. За wiki, диски SMR застрягають і більш ніж на десять хвилин, і скрипт зі зміною тайм-ауту з цим нічого не вдіє.

Як з’ясувати, чи проблема в диску, чи в слоті?

Переставити диск в іншу позицію й простежити, чи помилка йде за диском, чи лишається в слоті. У Synology є на це власна інструкція, і розумно пройти її, перш ніж замовляти заміну.

Чи можу я налаштувати ERC вручну на готовому NAS?

Наведені команди передбачають доступ до shell на сервері з Linux. На готовому NAS-боксі практичніше вибрати диски з увімкненим із заводу лімітом і триматися діагностики виробника.

Джерела

У вас випадає диск із масиву й ви не знаєте, чи він несправний, чи просто повільний? Ми разом із вами пройдемо логи та виведення SMART ще до того, як запуститься rebuild — у межах управління ІТ для компаній або разово як ІТ-аудит. Якщо масив уже впав, далі йде порятунок даних з RAID і NAS. Звертайтеся через контакт, за телефоном +420 775 556 063 або електронною поштою info@ithope.cz. Диски зі слотів поки що не виймайте, а головне — не переставляйте їх: порядок під час відновлення принципово важливий.

Де нас знайти

ITHOPE — компанія з Брно, Чехія: ми робимо відновлення даних з дисків, RAID і NAS, сервіс ПК та ноутбуків та IT для бізнесу, усе у власній лабораторії за адресою Viniční 3587/216, 615 00 Brno.

Телефон +420 775 556 063 (цілодобово). Пристрій можна привезти особисто або надіслати курʼєром (Zásilkovna, PPL).