13

Защищает ли Raid 1 от повреждения данных? Например, предположим, что я храню все свои важные файлы на NAS, который использует 2 диска в RAID 1. Если у одного жесткого диска есть какая-то внутренняя проблема, и данные становятся поврежденными, распознает ли RAID это автоматически и исправляет ли он, используя данные с другого хорошего диска?

Может ли он даже знать, какая копия является хорошей?

Защищает ли RAID 5 от повреждения?

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

4 ответа4

12

RAID-1 защищает от полного отказа одного из двух дисков. Если накопитель не помечен как неисправный, его содержимое считается точным. Но если по какой-либо причине один из двух дисков возвращал несогласованные данные, тогда эта ошибка не будет обнаружена системой RAID, и приложение получит неверные данные.

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

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

5

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

Теперь давайте посмотрим, что происходит, если повреждение вызвано вирусом или ошибкой в программе. В RAID 1 и RAID 5 ни один из дисков не будет выведен из строя, поскольку диски записывают правильно. Ничего не подвело. Однако файлы будут уничтожены, потому что вирус или ошибка записывает мусор, и он будет записывать его как на ваши диски в зеркале RAID 1, так и на все 3 ваших диска в системе RAID 5.

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

5

Как отмечали другие, система raid1 не может определить, какой из двух секторов плох.

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

В системах Unix под mdadm проверка очистки может быть инициирована с помощью "sync_action":

Массивы md можно очистить, записав либо проверку, либо восстановление в файл md/sync_action в каталоге sysfs для устройства.

Запрос на очистку приведет к тому, что md прочитает каждый блок на каждом устройстве в массиве и проверит соответствие данных. Для RAID1 и RAID10 это означает, что копии идентичны. Для RAID4, RAID5, RAID6 это означает проверку правильности блока четности (или блоков).

raid1 - это защита от внезапного полного отказа диска. Ищите в другом месте защиту от коррупции. Кроме того, Raid1 не предлагает никакой "истории", поэтому не может восстановиться после человеческой или программной ошибки. Для защиты от повреждения обращайтесь к файловым системам, таким как ZFS, или файловой системе, сохраняющей историю, например, Hammer.

3

На практике да. Подавляющее большинство сбоев жесткого диска происходит все или ничего. Либо (а) кабель отключен, либо микроконтроллер накопителя вышел из строя, поэтому контроллер RAID вообще не получает ответа - очевидно, неисправен накопитель. Или (b) Микроконтроллер кабеля и накопителя исправен, но когда он пытается прочитать сектор, микроконтроллер внутреннего накопителя обнаруживает повреждение данных из-за сбоя внутренней контрольной суммы ECC и повторяет попытки чтения этого сектора (в случае, если это временный сбой чтения ) время ожидания истекает, поэтому контроллер RAID получает вежливый "извините" ответ - явный сбой диска. В любом случае, для контроллера RAID-1 или RAID-5 очевидно, что диск вышел из строя.

В принципе нет. Если что-то пошло не так, как надо, что жесткий диск пишет чепуху, и все же как-то работает достаточно хорошо, чтобы написать правильный внутренний код ECC для этой чепухи, тогда RAID-1 не может определить, какой диск правильный. Система RAID-1, вероятно, перезапишет хорошие данные поврежденными данными при повторной синхронизации. RAID-5 не лучше. Сбой электропитания «дыра записи RAID-5» во время активной записи является одним из редких, но не невозможных случаев.

Насколько я знаю, единственный способ избежать такого повреждения - использовать сквозные контрольные суммы в дополнение к зеркалированию файлов, либо автоматически как часть файловой системы (ZFS или Btrfs), либо периодически или вручную (пересчитывая контрольные суммы rsync, простая проверка файлов, наборы файлов Parchive и т. д.); в идеале с криптографическим хешем, таким как SHA-256.

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