СПОСОБ КОНТРОЛЯ КОРРЕКТНОСТИ ЗАПИСИ ДАННЫХ В ДВУХКОНТРОЛЛЕРНОЙ СИСТЕМЕ ХРАНЕНИЯ ДАННЫХ НА МАССИВЕ ЭНЕРГОНЕЗАВИСИМЫХ НОСИТЕЛЕЙ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ

1. Способ контроля корректности записи данных в двухконтроллерной системе хранения данных на массиве энергонезависимых носителей, включающей первый и второй контроллеры, каждый из которых соединен с энергонезависимыми носителями, причем каждый из контроллеров содержит кэш в оперативной памяти, разделенный на сегменты, а контроллеры выполнены с возможностью обмена данными между собой, при этом способ включает следующие операции:
- записывают данные, полученные от инициатора, например, внешнего процессора, в кэш первого контроллера, при этом записанные в кэш данные помечаются как «грязные»;
- рассчитывают в кэше первого контроллера контрольную сумму полученных данных и хранящихся в кэше других «грязных» данных;
- передают полученные от инициатора данные из первого контроллера в кэш второго контроллера, при этом, записанные в кэш данные помечаются как «грязные»;
- рассчитывают в кэше второго контроллера контрольную сумму полученных «грязных» данных и хранящихся в кэше других «грязных» данных;
- передают контрольную сумму, рассчитанную в первом контроллере, во второй контроллер;
- сравнивают во втором контроллере контрольные суммы первого и второго контроллеров;
- передают из второго контроллера в первый контроллер результат сравнения контрольных сумм;
- при совпадении контрольных сумм принимают решение о корректности завершения операции синхронизации данных.
2. Способ по п.1, в котором периодически «очищают» «грязные» данные, хранящиеся в сегментах кэша первого контроллера и «грязные» данные, хранящиеся в соответствующих им сегментах кэша второго контроллера, при этом:
- записывают «грязные» данные из нескольких сегментов кэша первого контроллера на массив энергонезависимых носителей;
- снимают «грязную» пометку с данных, записанных из кэша первого контроллера на массив энергонезависимых носителей;
- рассчитывают контрольную сумму всех «грязных» данных в кэше первого контроллера;
- передают из первого контроллера во второй контроллер команду «очистки» сегментов кэша второго контроллера, соответствующих тем сегментам кэша первого контроллера, на которых была снята «грязная» пометка с данных;
- снимают «грязную» пометку с данных, содержащихся в «очищенных» сегментах кэша второго контроллера;
- рассчитывают контрольную сумму всех «грязных» данных в кэше второго контроллера;
- передают контрольную сумму всех «грязных» данных кэша первого контроллера во второй контроллер;
- сравнивают во втором контроллере рассчитанную контрольную сумму с суммой, полученной от первого контроллера;
- передают из второго контроллера в первый контроллер результат сравнения контрольных сумм;
- при совпадении контрольных сумм принимают решение о соответствии «грязных» данных в первом и втором контроллерах.
3. Способ по пп.1 и 2, в котором перезагружают второй контроллер, если второй контроллер сообщает первому контроллеру о несовпадении контрольных сумм.
4. Способ по п.1, в котором в качестве массива энергонезависимых носителей используют RAID-массив дисков.
5. Способ по п.1, в котором принимают данные, по меньшей мере, от двух внешних процессоров, при этом запись полученных данных производят последовательно.
6. Способ по п.1, в котором контрольная сумма данных в первом и втором контроллерах рассчитывается как хэш-функция упомянутых данных.
7. Способ по п.1, в котором при отказе первого контроллера, переключают второй контроллер в режим первого контроллера.
8. Способ по п.1, в котором каждый из контроллеров выполняет роль первого или второго контроллера в рамках каждой отдельной операции записи со стороны внешнего процессора, так, если внешний процессор записывает данные на один из контроллеров, тот исполняет роль первого контроллера в данной операции, в то время как другой контроллер исполняет роль второго контроллера.
9. Устройство записи в систему хранения данных, включающее энергонезависимые носители, первый и второй контроллеры, каждый из которых соединен с энергонезависимыми носителями, причем каждый из контроллеров содержит кэш в оперативной памяти, разделенный на сегменты, а контроллеры выполнены с возможностью обмена данными между собой, при этом первый контроллер выполнен с возможностью записи принимаемых данных, полученных от, по меньшей мере, одного внешнего инициатора, например, процессора, в кэш, расчета контрольной суммы полученных данных и хранящихся в кэше других «грязных» данных, и направления принятых данных и контрольной суммы во второй контроллер; второй контроллер выполнен с возможностью расчета контрольной суммы «грязных» данных, полученных из первого контроллера, сравнения рассчитанной контрольной суммы с суммой, полученной от первого контроллера.
10. Устройство по п.9, в котором контроллеры выполнены с возможностью: расчета контрольной суммы «грязных» данных во всем кэше первого контроллера;
выполнения во втором контроллере команд «очистки» сегментов кэша, принимаемых от первого контроллера;
снятия «грязной» пометки с данных, хранящихся в «очищенных» сегментах кэша второго контроллера; расчета контрольной суммы «грязных» данных во всем кэше второго контроллера; сравнения во втором контроллере рассчитанной контрольной суммы с суммой, полученной от первого контроллера.
11. Устройство по п.9, в котором первый и второй контроллеры выполнены с возможностью управления RAID-массивом дисков.
12. Устройство по п.9, в котором первый контроллер выполнен с возможностью функционирования в режиме второго контроллера.
13. Устройство по п.9, в котором оба контроллера выполнены с возможностью. выполнять роль первого и второго контроллеров для каждой отдельной операции записи данных со стороны внешнего процессора.
14. Устройство по п.9, в котором первый и второй контроллеры обмениваются данными по протоколу SCSI.