Лучший способ заменить вышедший из строя жесткий диск

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

У меня есть четыре диска в массиве RAID 5. Один из дисков (sdb) показывает много ошибок, и массив имеет высокую задержку при доступе.

У меня в настоящее время есть один новый диск, а другой уже заказан.

В рамках замены я также хочу увеличить уровень RAID с RAID 5 до RAID 6. Я считаю, что можно достичь этого следующим образом:

Сначала увеличив до RAID 6:

mdadm --manage /dev/md0 --add /dev/sdf1 
mdadm --grow /dev/md0 --raid-devices 5 --level 6 --backup-file /<path>/mdadm-backup
mdadm --manage /dev/md0 --replace /dev/sdb1 # Установите неисправный, но оставьте его для замены, пока запасной диск не будет доступен
# После того, как второй диск прибудет
mdadm --manage /dev/md0 --add /dev/sdg1

Сначала заменив неисправный диск, а затем увеличив до RAID 6:

mdadm --manage /dev/md0 --add /dev/sdf1 
mdadm --manage /dev/md0 --replace /dev/sdb1 --with /dev/sdf1
# после прибытия второго диска
mdadm --manage /dev/md0 --add /dev/sdg1
mdadm --grow /dev/md0 --raid-devices 5 --level 6 --backup-file /path/mdadm-backup

Есть ли разница между двумя решениями? Одно безопаснее другого, накладывая меньшую нагрузку на диски в массиве?

[Редактировать] добавление результатов SMART:

Sdb (почти неисправный)

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   082   072   006    Pre-fail  Always       -       22562487
  3 Spin_Up_Time            0x0003   093   093   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       124
  5 Reallocated_Sector_Ct   0x0033   077   077   010    Pre-fail  Always       -       29352
  7 Seek_Error_Rate         0x000f   087   060   030    Pre-fail  Always       -       4963671931
  9 Power_On_Hours          0x0032   026   026   000    Old_age   Always       -       65627
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       124
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   001   001   000    Old_age   Always       -       4793
188 Command_Timeout         0x0032   100   072   000    Old_age   Always       -       137445703785
189 High_Fly_Writes         0x003a   001   001   000    Old_age   Always       -       107
190 Airflow_Temperature_Cel 0x0022   073   056   045    Old_age   Always       -       27 (Min/Max 25/28)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       82
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       296
194 Temperature_Celsius     0x0022   027   044   000    Old_age   Always       -       27 (0 14 0 0 0)
197 Current_Pending_Sector  0x0012   001   001   000    Old_age   Always       -       35384
198 Offline_Uncorrectable   0x0010   001   001   000    Old_age   Offline      -       35384
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0

sbc

  1 Raw_Read_Error_Rate     0x000f   118   099   006    Pre-fail  Always       -       194860592
  3 Spin_Up_Time            0x0003   093   093   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       124
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       24
  7 Seek_Error_Rate         0x000f   087   060   030    Pre-fail  Always       -       654004767
  9 Power_On_Hours          0x0032   026   026   000    Old_age   Always       -       65631
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       124
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   094   094   000    Old_age   Always       -       6
188 Command_Timeout         0x0032   100   099   000    Old_age   Always       -       2
189 High_Fly_Writes         0x003a   062   062   000    Old_age   Always       -       38
190 Airflow_Temperature_Cel 0x0022   073   059   045    Old_age   Always       -       27 (Min/Max 24/27)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       82
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       295
194 Temperature_Celsius     0x0022   027   041   000    Old_age   Always       -       27 (0 14 0 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0

sdd

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   113   094   006    Pre-fail  Always       -       51447952
  3 Spin_Up_Time            0x0003   093   093   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       124
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   087   060   030    Pre-fail  Always       -       665278320
  9 Power_On_Hours          0x0032   026   026   000    Old_age   Always       -       65630
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       124
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   001   001   000    Old_age   Always       -       173
188 Command_Timeout         0x0032   100   099   000    Old_age   Always       -       1
189 High_Fly_Writes         0x003a   001   001   000    Old_age   Always       -       188
190 Airflow_Temperature_Cel 0x0022   073   055   045    Old_age   Always       -       27 (Min/Max 25/27)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       82
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       296
194 Temperature_Celsius     0x0022   027   045   000    Old_age   Always       -       27 (0 14 0 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       16
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       16
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0

Да, есть разница, но я не уверен, что лучше.

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

При миграции на RAID6 у вас также возникнет нагрузка на запись на старых дисках. Это может быть даже выгодно: у диска могут быть «ожидающие сектора» (см. SMART). Это означает сектора, которые он считает поврежденными. Он переназначит их, как только они получат новую запись. Если сектор все еще недостаточно хорош, чтобы получить запись, счетчик «переназначенных секторов» возрастет. Таким образом, сектор будет прозрачным образом находиться где-то еще на диске.

Мой первый шаг был бы смотреть на статус SMART ваших дисков и смотреть на указанные два параметра.

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

И имейте/создайте резервные копии…

Я вернулся с хорошими новостями. Это было решение, которое я использовал.

mdadm --manage /dev/md0 --replace /dev/sdb1 --with /dev/sdf1

На это потребовалось 28 долгих дней, чтобы завершить, потому что неисправный диск не мог считывать быстрее 1,5 МБ/с, но в конце концов мой массив вернулся в хорошее состояние. Теперь я собираюсь увеличить его до RAID 6. Спасибо @Halfgaar за вашу поддержку.

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

Заменить выходящий из строя жесткий диск в RAID 5 можно разными способами, однако правильный подход зависит от конкретных условий, в которых находится ваш массив. В данном случае подробное рассмотрение двух предложенных методов и выводы относительно их безопасности и эффективности могут существенно помочь вам в принятии решения.

Стратегии замены жесткого диска и увеличение RAID

1. Замена диска с последующим увеличением уровня RAID до RAID 6:

mdadm --manage /dev/md0 --add /dev/sdf1 
mdadm --manage /dev/md0 --replace /dev/sdb1 
# после поступления второго диска
mdadm --manage /dev/md0 --add /dev/sdg1
mdadm --grow /dev/md0 --raid-devices 5 --level 6 --backup-file /path/mdadm-backup

2. Сначала увеличение уровня RAID до RAID 6, затем замена диска:

mdadm --manage /dev/md0 --add /dev/sdf1 
mdadm --grow /dev/md0 --raid-devices 5 --level 6 --backup-file /path/mdadm-backup
mdadm --manage /dev/md0 --replace /dev/sdb1 
# после поступления второго диска
mdadm --manage /dev/md0 --add /dev/sdg1

Сравнительный анализ методов

  1. Риск чтения и записи:
    При первом подходе, когда диск заменяется до увеличения уровня, вероятность столкновения с ошибками чтения на остальных дисках ниже. Это связано с тем, что текущая конфигурация массива (RAID 5) подразумевает необходимость прочитать данные с других дисков для восстановления информации на новом диске. Если один из оставшихся дисков имеет нездоровые сектора (как показывают результаты SMART), это увеличивает риск потери данных.

  2. Использование платформы RAID 6:
    Второй подход предусматривает увеличение массива до RAID 6 до замены диска. Это увеличивает уровень защиты, поскольку RAID 6 допускает одновременный выход из строя двух дисков. Однако в процессе роста массива данные на старых дисках будут перезаписываться, что чревато риском переработки сектора, который может быть уже поврежден и не может быть правильно перезаписан.

  3. Оптимальное использование времени:
    По методике, предполагающей сразу замену диска в RAID 5 с последующим повышением до RAID 6, удастся быстрее вернуться к стабильному состоянию массива. При этом, если замена выполнена успешно, вы не подвергнете массив дополнительной нагрузке на этапе роста.

SMART-данные и их значение

Результаты SMART указывают на значительное количество «потенциально поврежденных» секторов на диске sdb, что делает небезопасной попытку выполнить операцию чтения в условиях RAID 5. Это подчеркивает важность анализа состояния дисков перед принятием решения о замене. В данной ситуации хорошей идеей будет сначала заменить проблемный диск, после чего начать увеличивать RAID до RAID 6.

Рекомендации

  1. Резервное копирование:
    Убедитесь, что у вас есть актуальные резервные копии всех важных данных перед выполнением каких-либо манипуляций с RAID массивом.

  2. Мониторинг состояния дисков:
    Постоянно следите за SMART-данными всех дисков, чтобы избежать неожиданного выхода из строя.

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

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

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

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