В настоящее время я использую программный массив RAID-1 в Linux, построенный поверх жесткого диска и SSD. У меня сильное чувство, что SSD выходит из строя.

Я хотел бы проверить, насколько плохо работает SSD. Я запустил проверку массива с echo check > /sys/block/md1/md/sync_action и, когда она была закончена, я посмотрел содержимое /sys/block/md1/md/mismatch_cnt . Я запускал его 3 раза подряд и получил 3 разных результата: 256, 128 и 384. Что меня удивляет, так это то, что второй заезд дал более низкий результат, чем первый. Было ли исправлено несоответствие?

Есть ли способ получить более подробную информацию о обнаруженных несоответствиях? Может быть интересно проверить, изменяются ли несовпадающие блоки или они всегда одинаковы. Я также хотел бы взглянуть на содержимое несоответствующих блоков, чтобы увидеть, могу ли я сказать, какой из них правильный. (Например, если SSD обнулел некоторые блоки, он не мог бы перечитать.)

Более того, я вижу, что есть возможность repair массив MD. Но я несколько подозрительно: как ядро может угадать, какой из блоков несоответствия является правильным?

1 ответ1

0

Хорошо ... Чтение исходного кода функции process_checks в файле drivers/md/raid1.c из linux 4.9.88, если я правильно его прочитал:

  1. Невозможно сделать подробные операции проверки или исправления о том, где обнаружены несоответствия.
  2. Если во время проверки или восстановления произошла ошибка чтения, сбойный блок будет перезаписан.
  3. Если во время операции восстановления обнаруживается несоответствие, оно будет исправлено путем копирования блока из «первичного» (первого неисправного) блока в другой блок (и).

Следовательно, нет никакого предположения, какой из блоков несоответствия является правильным; просто первый правильный. (Как я прочитал, даже если есть 3 компонента, а 2-й и 3-й имеют одинаковое содержание.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .