Вопрос или проблема
Первый пост здесь, и я хочу сказать привет. Надеюсь, это правильное место для вопроса.
У меня есть сервер на 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 большая часть стресса от замены вышедшего из строя диска исчезает, так как у вас уже есть точная копия всего, что нужно для восстановления массива.
Для данного ответа я сделаю следующие предположения:
- Вышел из строя только один диск,
/dev/sdd
- Массив RAID10 использует следующие устройства:
/dev/sdb
/dev/sdc
/dev/sdd
/dev/sde
- Массив RAID определен в том же порядке, что и устройства хранения:
0
⇢sdb
+sdc
1
⇢sdd
+sde
- Каждое устройство для хранения имеет один раздел данных
Обязательно скорректируйте это в соответствии с вашей фактической конфигурацией системы, если это необходимо.
Сказав это, если /dev/sdd
– это тот, который выходит из строя, у вас есть все необходимое на /dev/sdb
. Однако, прежде чем мы продолжим …
Важно
Поскольку вы будете выполнять операции с высокой нагрузкой на ввод/вывод, в настоятельном порядке рекомендуется отключить все операции сервера на этой машине. Это включает в себя обмен файлами, операции с базами данных и все, что может потребовать чтения или записи в массив. Если сервер используется бизнесом в рабочее время, выделите время для обслуживания, когда все понимают, что сервер не будет доступен. Несоблюдение этого может привести к менее приятным последствиям.
После этого давайте начнем. Вот шаги, которые вам нужно будет выполнить:
-
SSH на сервер или войдите на физическую машину.
-
Отметьте неисправное устройство как сбойное и удалите его из массива:
sudo mdadm --manage /dev/md2 --fail /dev/sdd1 sudo mdadm --manage /dev/md2 --remove /dev/sdd1
-
Удалите неисправное устройство хранения из ядра:
echo 1 | sudo tee /sys/block/sdd/device/delete
-
Удалите неисправное устройство хранения из сервера. Если устройство не в отсеке для горячей замены, это означает, что вы должны выключить сервер и заменить неисправное устройство на новое. Как только сервер будет готов продолжить, перейдите к шагу 5.
-
Запишите таблицу разделов на новое устройство, используя
sfdisk
, копируя данные разделов сsdb
на новыйsdd
:sudo sfdisk -d /dev/sdb | sudo sfdisk /dev/sdd
Примечание: Не ошибитесь здесь. Это испортит ваш день. Убедитесь, что первая команда
sfdisk
считывает данные с исправного устройства, а вторая – с нового устройства. Когда вы используетеsudo
, Linux не спросит “Вы уверены?” перед выполнением инструкций. -
Убедитесь, что новое устройство хранения соответствует старому. Вывод разделов следующих команд должен совпадать:
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
-
Установите случайный GUID устройства, чтобы уменьшить конфликты с другими устройствами:
sgdisk -G /dev/sdd
-
Добавьте новое устройство в массив:
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, это требует принятия оперативных мер для предотвращения потери данных. Рассмотрим порядок действий по замене неисправного диска, основываясь на предоставленной информации.
Предварительная подготовка
-
Резервное копирование данных: Несмотря на то что RAID10 обеспечивает защиту данных, всегда рекомендуется сделать полное резервное копирование всего массива перед выполнением каких-либо критических операций. Используйте утилиты, такие как
rsync
, на идентичный сервер для резервной копии. -
Отключение доступа к данным: По возможности отключите все операции чтения/записи к серверу. Это необходимо для минимизации рисков повреждения данных в процессе замены диска.
Шаги по замене неисправного диска
Следуйте этим шагам для замены диска с плохими секторами (/dev/sdd
):
-
Проверка состояния диска: Убедитесь, что именно
/dev/sdd
является неисправным. Используйте командуsmartctl
для проверки всех значений SMART, чтобы подтвердить наличие проблем.sudo smartctl -a /dev/sdd
-
Отметка диска как неисправного:
Выполните команды для деактивации и удаления неисправного устройства из RAID массива.sudo mdadm --manage /dev/md0 --fail /dev/sdd1 sudo mdadm --manage /dev/md0 --remove /dev/sdd1
Примечание: Убедитесь, что
md0
соответствует вашему RAID массиву. -
Удаление устройства из ядра:
После удаления из массива необходимо убрать физический диск из системы.echo 1 | sudo tee /sys/block/sdd/device/delete
-
Физическая замена диска:
Выключите сервер (если диск не поддерживает горячую замену) и замените поврежденный диск на новый. Установите новый диск в тот же отсек. -
Копирование таблицы разделов:
Со следующей командой вы скопируете таблицу разделов с рабочего диска на новый:sudo sfdisk -d /dev/sdb | sudo sfdisk /dev/sdd
-
Проверка таблицы разделов:
Убедитесь, что новая таблица разделов написана правильно:sudo fdisk -l /dev/sdb sudo fdisk -l /dev/sdd
-
Изменение GUID на новом диске:
Это необходимо для избежания конфликтов между дисками.sudo sgdisk -G /dev/sdd
-
Добавление нового диска в RAID массив:
Добавьте новый диск обратно в массив.sudo mdadm --manage /dev/md0 --add /dev/sdd1
-
Мониторинг процесса синхронизации:
Состояние синхронизации можно отслеживать с помощью:cat /proc/mdstat
-
Перезапуск службы SMART:
После завершения замены и синхронизации не забудьте сбросить состояние службы мониторинга SMART.sudo service smartd restart
Заключение
Следуя этому руководству, можно безопасно и эффективно заменить неисправный диск в RAID10 массиве. Убедитесь, что все шаги выполнены внимательно, чтобы избежать повреждений данных. Как всегда, регулярное резервное копирование и мониторинг состояния дисков с использованием smartmontools
могут помочь предостеречь от подобной ситуации в будущем.