internet-logo41

Что такое Check Consistency

Суть в том, что ЛЮБОЙ массив не абсолютно надежен (даже если все исправно).

Например проблемы кабельной системы могу привести к некорректной записи данных на блины (хотя как правило они конечно компенсируются в процессе передачи).

Гораздо хуже обстоит дело со сбоями питания. Вырубание электрики или отказ БП (а зачастую и ребут) во время интенсивной записи могут привести к несоответствию блоков данных и парити.

Для этого на правильных контроллерах ставится батарейка на кэш (BBU). Она держит не только собственно сам кэш (спасает от ошибок файловой системы). Если она есть, контроллер будет помнить еще и то, какие блоки он успел записать, а какие нет (или записал не до конца) - т.е. содержимое временных регистров. С ней вероятность инконсистентности гораздо ниже, но не отсутствует.
Дело в том, что сами винты имеют кэш. На сказевых или сас дисках кэш как правило выключен (на скорость это влияет очень мало). На саташниках же скорость при выключении дискового кэша обычно падает гораздо сильнее и его так оставляют включенным. И если пропали данные в дисковом кэше, контроллер просто об этом не знает, со всеми вытекающими.

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

Чем это грозит. А все очень просто. Если вдруг откажет диск, то при наличии неконсистентных данных, в процессе ребилда на новый диск информация будет записана с ошибками, и никто не будет об этом знать! Если же есть реальные, а не логические сбои (бэд блоки), ребилд просто не пройдет (эта ситуация повторялась уже столько раз, что у меня мата не хватает). Т.е. винт поменяли, а массив как был полудохлым, так и есть. И это еще хорошо, если ребилд не пойдет - хуже, если пройдет, но со скрытыми ошибками (Вы будете пребывать в ложной уверенности - пока петух не клюнет).
Самое главное - НИКТО НЕ СМОЖЕТ такой массив восстановить!!! Только бэкап-рестор того, что еще можно прочитать.

Поэтому периодическая проверка ЛЮБОГО массива уровней 1, 5, 6, 10, 50 - вещь просто ОБЯЗАТЕЛЬНАЯ. Если конечно Вас интересует результат (С).

Что делает консистенси чек. Он - а) читает поверхность дисков, входящих в массив, б) СВЕРЯЕТ блоки парити и блоки данных (или просто блоки данных в случае рэйд1 и 10).

Если все блоки читаются, но имеется несоответствие, он перезаписывает парити на рэйд5, 6. Как он сделает на рэйд1 или 10 - честно говоря не знаю, наверно волевым решением примет один из блоков "правильным" (некая надежда на аллаха имеет место быть).
Если есть бэд блоки, он вычислит содержавшуюся в нем информацию на основании парити и запишет его заново (диск при этом отремапится).

Вот собственно. Это вовсе не страшилка, а весьма злобная правда жизни.

PS. Да, еще. Консистенси чек обязательно надо делать ПЕРЕД операциями рестрайпинга (изменения уровня массива) и экспанда (добавления дисков в массив).

Ссылка на оригинал: http://forum.ixbt.com/topic.cgi?id=11:31765:1964#1964