Коротка відповідь: Коли масив викидає диск, який після перезавантаження повертається й нормально читає, зазвичай винна невідповідність часових лімітів. Ядро 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, Ultrastar | TLER увімкнено, відновлення обмежене сімома секундами і вимкнути його не можна | WD support, TLER on RAID edition internal drives |
| WD Red Plus | Product brief описує налаштування NASware для RAID NAS, але слова TLER в ньому немає — на конкретному екземплярі стан треба перевірити через smartctl | Product 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 recovery | Datasheet 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-боксі практичніше вибрати диски з увімкненим із заводу лімітом і триматися діагностики виробника.
Джерела
- Linux RAID wiki, Timeout Mismatch (архівована сторінка, остання правка 19. 5. 2022) — https://archive.kernel.org/oldwiki/raid.wiki.kernel.org/index.php/Timeout_Mismatch.html
- smartctl(8), опція
-l scterc— https://manpages.debian.org/bookworm/smartmontools/smartctl.8.en.html - Western Digital, TLER on RAID edition internal drives cannot be disabled — https://support-en.wd.com/app/answers/detailweb/a_id/3562/~/tler-on-raid-edition-internal-drives-cannot-be-disabled
- Seagate, datasheet IronWolf — https://www.seagate.com/www-content/datasheets/pdfs/ironwolf-18tb-DS1904-20-2111US-en_US.pdf
- Seagate, datasheet IronWolf Pro — https://www.seagate.com/files/www-content/datasheets/pdfs/ironwolf-pro-20tb-DS1914-19-2112US-en_US.pdf
- Western Digital, product brief WD Red Plus — https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/internal-drives/wd-red-plus-hdd/product-brief-western-digital-wd-red-plus-hdd.pdf
- Western Digital, data sheet WD Red Pro — https://documents.westerndigital.com/content/dam/doc-library/en_us/assets/public/western-digital/product/internal-drives/wd-red-pro-hdd/data-sheet-wd-red-pro-hdd.pdf
- Synology, керування дисками в Storage Manager — https://kb.synology.com/en-ro/DSM/help/DSM/StorageManager/disk
- Synology, відновлення storage pool — https://kb.synology.com/en-us/DSM/help/DSM/StorageManager/storage_pool_repair?version=7
- Synology, як відрізнити проблему NAS від проблеми диска — https://kb.synology.com/en-us/DSM/tutorial/How_do_I_know_whether_the_problem_is_with_my_Synology_NAS_or_drive_when_drive_errors_occur
- Synology, попередження про пошкоджені сектори — https://kb.synology.com/en-global/DSM/tutorial/How_to_diagnose_drives_health_status_when_receiving_bad_sector_warning
- QNAP, Recovering a RAID group with an Error status (QTS 5.2.x) — https://docs.qnap.com/operating-system/qts/5.2.x/en-us/recovering-a-raid-group-with-an-error-status-7E19C750.html
У вас випадає диск із масиву й ви не знаєте, чи він несправний, чи просто повільний? Ми разом із вами пройдемо логи та виведення 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).