Плохие сектора на HDD в массиве RAID10, как их заменить?

Вопрос или проблема

Первый пост здесь, и я хочу сказать привет. Надеюсь, это правильное место для вопроса.

У меня есть сервер на Ubuntu 22.04 с 4x 20TB в массиве RAID10 (созданном с помощью mdadm) с файловой системой XFS. Каждый диск – TOSHIBA MG10ACA20TE. Вчера я получил это письмо:

Это сообщение было сгенерировано демоном smartd, работающим на:

   имя хоста:  ubuntu
   DNS домен: [Пусто]

Следующее предупреждение/ошибка было залогировано демоном smartd:

Устройство: /dev/sdd [SAT], количество ошибок ATA увеличилось с 2 до 3

Информация об устройстве:
TOSHIBA MG10ACA20TE, S/N:XXXXXXXXX, WWN:XXX, FW:0102, 20.0 TB

Я проверил результаты SMART, и они показали reallocated_sector_ct=59:

ID# НАЗВАНИЕ_АТРИБУТА     ФЛАГ    ЗНАЧЕНИЕ ХУЖШИЙ ПРЕДЕЛ ТИП      ОБНОВЛЕНО  ПРИ_НЕУДАЧЕ СЫРОЕ_ЗНАЧЕНИЕ
  1 Скорость_Чтения_Ошибок  0x000b   100   100   050    Предаварийное  Всегда       -       0
  2 Производительность_Прохода 0x0005   100   100   050    Предаварийное  Офлайн      -       0
  3 Время_Нагрева            0x0027   100   100   001    Предаварийное  Всегда       -       9508
  4 Количество_Запусков_Остановок 0x0032   100   100   000    Старый_возраст   Всегда       -       38
  5 Количество_Релокализованных_Секторов 0x0033   100   100   010    Предаварийное  Всегда       -       59
  7 Скорость_Ошибок_Поиска  0x000b   100   100   050    Предаварийное  Всегда       -       0
  8 Производительность_Поиска 0x0005   100   100   050    Предаварийное  Офлайн      -       0
  9 Часы_Работы              0x0032   074   074   000    Старый_возраст   Всегда       -       10476
 10 Количество_Повторов_Спина 0x0033   100   100   030    Предаварийное  Всегда       -       0
 12 Количество_Циклов_Энергии 0x0032   100   100   000    Старый_возраст   Всегда       -       38
 23 Неизвестный_Атрибут      0x0023   100   100   075    Предаварийное  Всегда       -       0
 24 Неизвестный_Атрибут      0x0023   100   100   075    Предаварийное  Всегда       -       0
 27 Неизвестный_Атрибут      0x0023   100   100   030    Предаварийное  Всегда       -       787503
191 Скорость_Ошибок_G-сенсора 0x0032   100   100   000    Старый_возраст   Всегда       -       0
192 Количество_Отключений_Энергии 0x0032   100   100   000    Старый_возраст   Всегда       -       21
193 Количество_Циклов_Загрузки 0x0032   100   100   000    Старый_возраст   Всегда       -       2206
194 Температура_Целий      0x0022   100   100   000    Старый_возраст   Всегда       -       48 (Мин/Макс 20/60)
196 Количество_Событий_Релокации 0x0033   100   100   010    Предаварийное  Всегда       -       23
197 Текущий_Ожидающий_Сектор 0x0032   100   100   000    Старый_возраст   Всегда       -       0
198 Исправимый_Офлайн      0x0030   100   100   000    Старый_возраст   Офлайн      -       0
199 Количество_Ошибок_UDMA_CRC 0x0032   200   200   000    Старый_возраст   Всегда       -       0
220 Смещение_Диска         0x0002   100   100   000    Старый_возраст   Всегда       -       524288
222 Загруженные_Часы         0x0032   076   076   000    Старый_возраст   Всегда       -       9861
226 Время_Загрузки         0x0026   100   100   000    Старый_возраст   Всегда       -       688
240 Часы_Летания_Головы   0x0001   100   100   001    Предаварийное  Офлайн      -       0
241 Всего_Записанных_LBAs  0x0032   100   100   000    Старый_возраст   Всегда       -       87461071488
242 Всего_Прочитанных_LBAs 0x0032   100   100   000    Старый_возраст   Всегда       -       671368578512

Теперь мой вопрос: что мне делать в этой ситуации? Я знаю, что должен заменить этот диск как можно скорее, но как мне это сделать, не повредив ничего и не потеряв свои данные? Я видел некоторые учебники по RAID1, где говорилось, что нужно создать такие же разделы на новом диске, затем отметить неисправный диск как сбойный и удалить его из RAID, затем добавить новый диск и дождаться синхронизации RAID. Но применимо ли это к RAID10? Это тот способ, которым я должен это делать? У меня уже есть такой же диск для замены, данные отправляются через rsync на идентичный сервер в другом месте. Надеюсь, кто-то сможет мне помочь. Буду признателен за любые советы! Спасибо!

Добро пожаловать на AskUbuntu!

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

Для данного ответа я сделаю следующие предположения:

  1. Вышел из строя только один диск, /dev/sdd
  2. Массив RAID10 использует следующие устройства:
    • /dev/sdb
    • /dev/sdc
    • /dev/sdd
    • /dev/sde
  3. Массив RAID определен в том же порядке, что и устройства хранения:
    • 0sdb + sdc
    • 1sdd + sde
  4. Каждое устройство для хранения имеет один раздел данных

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

Сказав это, если /dev/sdd – это тот, который выходит из строя, у вас есть все необходимое на /dev/sdb. Однако, прежде чем мы продолжим …

Важно

Поскольку вы будете выполнять операции с высокой нагрузкой на ввод/вывод, в настоятельном порядке рекомендуется отключить все операции сервера на этой машине. Это включает в себя обмен файлами, операции с базами данных и все, что может потребовать чтения или записи в массив. Если сервер используется бизнесом в рабочее время, выделите время для обслуживания, когда все понимают, что сервер не будет доступен. Несоблюдение этого может привести к менее приятным последствиям.

После этого давайте начнем. Вот шаги, которые вам нужно будет выполнить:

  1. SSH на сервер или войдите на физическую машину.

  2. Отметьте неисправное устройство как сбойное и удалите его из массива:

    sudo mdadm --manage /dev/md2 --fail /dev/sdd1
    sudo mdadm --manage /dev/md2 --remove /dev/sdd1
    
  3. Удалите неисправное устройство хранения из ядра:

    echo 1 | sudo tee /sys/block/sdd/device/delete
    
  4. Удалите неисправное устройство хранения из сервера. Если устройство не в отсеке для горячей замены, это означает, что вы должны выключить сервер и заменить неисправное устройство на новое. Как только сервер будет готов продолжить, перейдите к шагу 5.

  5. Запишите таблицу разделов на новое устройство, используя sfdisk, копируя данные разделов с sdb на новый sdd:

    sudo sfdisk -d /dev/sdb | sudo sfdisk /dev/sdd
    

    Примечание: Не ошибитесь здесь. Это испортит ваш день. Убедитесь, что первая команда sfdisk считывает данные с исправного устройства, а вторая – с нового устройства. Когда вы используете sudo, Linux не спросит “Вы уверены?” перед выполнением инструкций.

  6. Убедитесь, что новое устройство хранения соответствует старому. Вывод разделов следующих команд должен совпадать:

    sudo fdisk -l /dev/sdb
    sudo fdisk -l /dev/sdd
    

    Что даст вам что-то вроде:

    Устройство         Начало         Конец    Секторы     Размер Тип
    /dev/sdb1       2048  2872214527 2872212480 18415.9G Файловая система Linux
    
    ...
    
    Устройство         Начало         Конец    Секторы     Размер Тип
    /dev/sdd1       2048  2872214527 2872212480 18415.9G Файловая система Linux
    
  7. Установите случайный GUID устройства, чтобы уменьшить конфликты с другими устройствами:

    sgdisk -G /dev/sdd
    
  8. Добавьте новое устройство в массив:

    sudo mdadm --manage /dev/md2 --add /dev/sdd1
    

    Примечание: Убедитесь, что вы изменяете /dev/md2, если ваш массив называется по-другому.

    На этом этапе сервер начнет процесс заполнения нового устройства хранения данными. В зависимости от того, сколько данных у вас есть, и ограничений оборудования, это может занять некоторое время. Вы всегда можете проверить статус синхронизации с помощью следующей команды:

    cat /proc/mdstat
    

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

Одно последнее замечание: если у вас установлены smartmontools, он продолжит жаловаться на /dev/sdd как на неисправный диск. Вам нужно будет перезапустить его с помощью следующей команды:

sudo service smartd restart

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

Ответ или решение

Замена неисправного диска с плохими секторами в RAID10 массиве на базе Ubuntu

Если вы столкнулись с увеличением числа ошибок на жестком диске в вашем RAID10 массиве на Ubuntu 22.04, это требует принятия оперативных мер для предотвращения потери данных. Рассмотрим порядок действий по замене неисправного диска, основываясь на предоставленной информации.

Предварительная подготовка

  1. Резервное копирование данных: Несмотря на то что RAID10 обеспечивает защиту данных, всегда рекомендуется сделать полное резервное копирование всего массива перед выполнением каких-либо критических операций. Используйте утилиты, такие как rsync, на идентичный сервер для резервной копии.

  2. Отключение доступа к данным: По возможности отключите все операции чтения/записи к серверу. Это необходимо для минимизации рисков повреждения данных в процессе замены диска.

Шаги по замене неисправного диска

Следуйте этим шагам для замены диска с плохими секторами (/dev/sdd):

  1. Проверка состояния диска: Убедитесь, что именно /dev/sdd является неисправным. Используйте команду smartctl для проверки всех значений SMART, чтобы подтвердить наличие проблем.

    sudo smartctl -a /dev/sdd
  2. Отметка диска как неисправного:
    Выполните команды для деактивации и удаления неисправного устройства из RAID массива.

    sudo mdadm --manage /dev/md0 --fail /dev/sdd1
    sudo mdadm --manage /dev/md0 --remove /dev/sdd1

    Примечание: Убедитесь, что md0 соответствует вашему RAID массиву.

  3. Удаление устройства из ядра:
    После удаления из массива необходимо убрать физический диск из системы.

    echo 1 | sudo tee /sys/block/sdd/device/delete
  4. Физическая замена диска:
    Выключите сервер (если диск не поддерживает горячую замену) и замените поврежденный диск на новый. Установите новый диск в тот же отсек.

  5. Копирование таблицы разделов:
    Со следующей командой вы скопируете таблицу разделов с рабочего диска на новый:

    sudo sfdisk -d /dev/sdb | sudo sfdisk /dev/sdd
  6. Проверка таблицы разделов:
    Убедитесь, что новая таблица разделов написана правильно:

    sudo fdisk -l /dev/sdb
    sudo fdisk -l /dev/sdd
  7. Изменение GUID на новом диске:
    Это необходимо для избежания конфликтов между дисками.

    sudo sgdisk -G /dev/sdd
  8. Добавление нового диска в RAID массив:
    Добавьте новый диск обратно в массив.

    sudo mdadm --manage /dev/md0 --add /dev/sdd1
  9. Мониторинг процесса синхронизации:
    Состояние синхронизации можно отслеживать с помощью:

    cat /proc/mdstat
  10. Перезапуск службы SMART:
    После завершения замены и синхронизации не забудьте сбросить состояние службы мониторинга SMART.

    sudo service smartd restart

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...