СПОСОБ КОНТРОЛЯ КОРРЕКТНОСТИ ЗАПИСИ ДАННЫХ В ДВУХКОНТРОЛЛЕРНОЙ СИСТЕМЕ ХРАНЕНИЯ ДАННЫХ НА МАССИВЕ ЭНЕРГОНЕЗАВИСИМЫХ НОСИТЕЛЕЙ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ
METHOD OF CHECKING CORRECTNESS OF DATA ENTRY IN DUAL-CONTROLLER DATA STORAGE SYSTEM BASED ON ARRAY OF NONVOLATILE MEDIA AND APPARATUS THEREFOR

Настоящее изобретение относится к способам ввода цифровых данных в энергонезависимую память, точнее к способам контроля корректности записи данных в двухконтроллерной системе хранения данных на основе массива энергонезависимых носителей путем синхронизации работы двух контроллеров, содержащих кэш.
RAID-массивы энергонезависимых носителей информации, например дисков (RAID расшифровывается как Redundant Array of Independent Disks, т.е. Избыточный массив независимых дисков), стали преобладающим видом хранилища для больших объемов данных. RAID-массив - это такой массив энергонезависимых носителей (дисков), в котором количество один или несколько дисков используются для хранения избыточной информации - копии данных или контрольной суммы данных, позволяющей восстановить данные при выходе из строя одного или большего количества дисков.
Типичная система хранения данных на основе RAID-массива содержит один или два контроллера, предоставляющих консистентный, когерентный образ данных, размещенных в хранилище, всем процессорам, подключенным через интерфейсы подключения.
Двухконтроллерная система хранения данных (Фиг.1) представляет собой два идентичных устройства, называемых контроллерами массива дисков, каждый из которых подключен к общему массиву дисков. Контроллеры соединены между собой интерфейсом горячего подключения и подключены к внешним процессорам также через интерфейсы горячего подключения.
Интерфейс горячего подключения - это разновидность интерфейса подключения, связь через который может быть установлена в любой момент во время работы соединяемых им компонентов.
Внешний процессор - это компьютер, использующий систему хранения данных для хранения данных и инициирующий операции чтения и записи данных. При использовании двухконтроллерной системы хранения данных внешний процессор должен быть подключен к каждому контроллеру хотя бы по одному интерфейсу горячего подключения.
Контроллер может содержать кэш-временный буфер для данных в быстродействующей энергозависимой или энергонезависимой памяти, используемый для ускорения операций записи и чтения данных.
Часто для ускорения записи данных используется способ отложенной записи, когда сначала данные принимают от внешних процессоров в кэш контроллера, а позже в асинхронном процессе записывают их на массив энергонезависимых носителей. При этом возникает необходимость в механизме синхронизации данных между кэшами контроллеров, таком, чтобы данные, которые уже попали в кэш одного из контроллеров, также попали и в кэш другого контроллера, поскольку при отсутствии такого механизма отказ одного из контроллеров повлек бы потерю данных, уже записанных в кэш, но еще не попавших на энергонезависимые носители. В данном процессе синхронизации необходимо иметь возможность обнаруживать сбои, в том числе касающиеся корректности синхронизируемых данных.
Известны несколько способов контроля корректности записи данных, используемых в системе хранения данных на основе массивов энергонезависимых носителей.
В частности, известен способ контроля корректности записи данных, реализованный в устройстве по патенту US 5911779, публикация 15.06.1999, МПК G06F 11/10. В данном устройстве корректность записи данных обеспечивается расчетом контрольных сумм при записи в энергонезависимую память - диски RAID-массива. Однако главной целью этого изобретения является экономия времени при расчете контрольной суммы при записи в RAID5. Так, контроллер записывает данные, полученные от пользователя, в кэш и после этого отправляет подтверждение того, что данные записаны. Далее, если пользователю нужны эти данные, то он получает их из кэша, то есть гораздо быстрее, чем считывая с дисков. Контрольная сумма рассчитывается или пересчитывается при непосредственной записи из кэша на диски. В качестве примера реализации данного устройства приводится и схема устройства с несколькими контроллерами. Контроллеры работают с непересекающимися областями адресов энергонезависимой памяти и синхронизацию кэшей они не производят. Поэтому при отказе одного из контроллеров другой контроллер не может обеспечить работу с данными, записанными в область памяти, обслуживаемой отказавшим контроллером, и есть вероятность потери этих данных.
Известна европейская заявка EP 0632379, публикация 04.01.1994, МПК G06F 11/10, в которой описывается устройство отказоустойчивой системы контроллеров.
В заявке описывается система, в которой реализуется способ работы двух контроллеров, обеспечивающих работу двух массивов жестких дисков. Причем каждый контроллер обеспечивает работу именно своего массива дисков, поэтому синхронизация кэшей между ними не производится, так как они не используют разделяемые ресурсы. В случае отказа одного из контроллеров, оставшийся будет обеспечивать работу обоих дисковых массивов, так как имеется система связей между ними. Однако каждый контроллер работает без проверки правильности хранения данных в самом контроллере, что может привести к ошибкам в передаче данных на энергонезависимую память.
Наиболее близким аналогом является решение по заявке EP 0967552, публикация 29.12.1999, МПК G06F 11/20. В заявке описано устройство, содержащее два активных контроллера, каждый из которых соединен с энергонезависимыми носителями, причем каждый из контроллеров содержит кэш в оперативной памяти, состоящий из сегментов, а контроллеры выполнены с возможностью обмена данными между собой. В заявке описан способ контроля корректности в двухконтроллерной системе записи данных в RAID массивах. Способ содержит операции синхронизации данных в кэшах контроллеров как при записи данных в кэш, так и при чтении данных при передаче в энергозависимую память - RAID-массив. Однако проверка данных в кэшах производится только в отношении текущих данных, поэтому система заметит сбой только в этих текущих данных, касающихся одной операции чтения или записи данных при передаче в RAID-массив.
При использовании способа отложенной записи данные, принятые от внешних процессоров в кэш контроллера, но еще не записанные на массив энергонезависимых носителей, называют «грязными». Технической задачей, решаемой в заявляемом изобретении, является снижение вероятности потери «грязных» данных при отказе одного из контроллеров за счет того, что проверяются не только «грязные» данные, синхронизируемые между кэшами двух контроллеров в процессе текущей операции записи, но также и «грязные» данные, накопленные в кэшах на момент выполнения операции.
Способ контроля корректности записи данных работает в системе хранения данных на основе массива энергонезависимых носителей, которая включает первый и второй контроллеры, каждый из которых соединен с энергонезависимыми носителями, причем каждый из контроллеров содержит кэш в оперативной памяти, состоящий из сегментов, а контроллеры выполнены с возможностью обмена данными между собой. При этом способ включает следующие операции:
- записывают данные, полученные от инициатора, например внешнего процессора, в кэш первого контроллера, при этом записанные в кэш данные помечаются как «грязные»;
- рассчитывают в кэше первого контроллера контрольную сумму полученных данных и хранящихся в кэше других «грязных» данных;
- передают полученные от инициатора данные из первого контроллера в кэш второго контроллера, при этом записанные в кэш данные помечаются как «грязные»;
- рассчитывают в кэше второго контроллера контрольную сумму полученных данных и хранящихся в кэше других «грязных» данных;
- передают контрольную сумму, рассчитанную в первом контроллере, во второй контроллер;
- сравнивают во втором контроллере контрольные суммы первого и второго контроллеров;
- передают из второго контроллера в первый контроллер результат сравнения контрольных сумм;
- при совпадении контрольных сумм принимают решение о корректности завершения операции синхронизации данных.
Гарантируя идентичность всех, а не только относящихся к одной операции записи, хранящихся в кэшах обоих контроллеров «грязных» данных, в случае отказа одного из контроллеров способ обеспечивает корректность данных как при записи «грязных» данных из кэша контроллера в энергонезависимую память, так и при чтении «грязных» данных из кэша контроллера внешними процессорами.
Новым в данном способе, по отношению к ближайшему аналогу, является отсутствие аппаратного устройства управления транзакциями памяти (Memory Transaction Manager). Управление синхронизацией кэшей выполняется контроллерами программным способом, что исключает потребность в заказном оборудовании и удешевляет решение.
Существенным отличием данного способа, обеспечивающим заявленный технический результат, является то, что при реализации данного способа не происходит накопления ошибок данных, хранящихся в контроллерах. В ближайшем аналоге к заявляемому изобретению проверяются только текущие данные, относящиеся к отдельному циклу записи в энергонезависимую память, поэтому система заметит сбой только в этих данных. Заявленная система позволяет также выявить искажения во всех «грязных» данных кэша контроллера, например сбой в микросхеме памяти. Поэтому обеспечивается корректность хранения всех «грязных» данных, хранящихся в кэшах обоих контроллеров, что обеспечивает большую вероятность обнаружения ошибок в данных.
Таким образом, заявляемый способ позволяет существенно снизить вероятность потери данных, хранящихся в кэшах контроллеров.
В частном случае выполнения данного способа периодически «очищают» грязные данные, хранящиеся в сегментах кэша первого контроллера, и «грязные» данные, хранящиеся в соответствующих им сегментах кэша второго контроллера, при этом:
- записывают «грязные» данные из нескольких сегментов кэша первого контроллера на массив энергонезависимых носителей;
- снимают «грязную» пометку с данных, записанных из кэша первого контроллера на массив энергонезависимых носителей;
- рассчитывают контрольную сумму всех «грязных» данных в кэше первого контроллера;
- передают из первого контроллера во второй контроллер команду «очистки» сегментов кэша второго контроллера, соответствующих тем сегментам кэша первого контроллера, на которых снята «грязная» отметка с данных;
- снимают «грязную» пометку с данных, содержащихся в «очищенных» сегментах кэша второго контроллера;
- рассчитывают контрольную сумму всех (оставшихся) «грязных» данных в кэше второго контроллера;
- передают контрольную сумму всех «грязных» данных кэша первого контроллера во второй контроллер;
- сравнивают во втором контроллере рассчитанную контрольную сумму с суммой, полученной от первого контроллера;
- передают из второго контроллера в первый контроллер результат сравнения контрольных сумм;
- при совпадении контрольных сумм принимают решение о соответствии «грязных» данных в первом и втором контроллерах.
В частности, если второй контроллер сообщает первому контроллеру о несовпадении контрольных сумм, перезагружают второй контроллер.
В качестве массива энергонезависимых носителей может быть использован RAID-массив дисков.
В частности, принимают данные, по меньшей мере, от двух внешних процессоров, при этом запись полученных данных производят последовательно.
Контрольная сумма данных в первом и втором контроллерах может рассчитываться как хэш-функция упомянутых данных.
Кроме того, при отказе первого контроллера переключают второй контроллер в режим первого контроллера
В частности, каждый из контроллеров выполняет роль первого или второго контроллера в рамках каждой отдельной операции записи со стороны внешнего процессора, так, если внешний процессор записывает данные на один из контроллеров, тот исполняет роль первого контроллера в данной операции, в то время как другой контроллер исполняет роль второго контроллера.
Другим объектом изобретения является устройство записи в систему хранения данных, включающее энергонезависимые носители, первый и второй контроллеры, каждый из которых соединен с энергонезависимыми носителями, причем каждый из контроллеров содержит кэш в оперативной памяти, разделенный на сегменты. Контроллеры выполнены с возможностью обмена данными между собой. При этом первый контроллер выполнен с возможностью записи принимаемых данных, полученных от, по меньшей мере, одного внешнего инициатора, например процессора, в кэш, расчета контрольной суммы полученных данных и хранящихся в кэше других «грязных» данных и направления принятых данных и контрольной суммы во второй контроллер. Второй контроллер выполнен с возможностью расчета контрольной суммы «грязных» данных, полученных от первого контроллера, и сравнения рассчитанной контрольной суммы с суммой, полученной от первого контроллера.
Устройство записи в систему хранения данных, так же как и способ, обеспечивает снижение вероятности потери данных за счет того, что проверяются не только «грязные» данные, хранящиеся в кэшах первого и второго контроллеров и относящиеся к данной операции записи, но также и «грязные» данные, накопленные в кэше каждого из контроллеров на момент выполнения операции.
В частном случае выполнения устройства контроллеры выполнены с возможностью:
- расчета контрольной суммы «грязных» данных во всем кэше первого контроллера;
- выполнения во втором контроллере команд «очистки» сегментов кэша, принимаемых от первого контроллера;
- снятия «грязной» пометки с данных, хранящихся в «очищенных» сегментах во всем кэше второго контроллера;
- расчета контрольной суммы «грязных» данных во всем кэше второго контроллера;
- сравнения во втором контроллере рассчитанной контрольной суммы с суммой, полученной от первого контроллера.
В частности, первый и второй контроллеры выполнены с возможностью управления RAID-массивом дисков.
При возможном отказе первого контроллера первый контроллер выполнен с возможностью функционирования в режиме второго контроллера.
В частном случае, оба контроллера выполнены с возможностью выполнять роль первого и второго контроллера в рамках каждой отдельной операции записи данных стороны внешнего процессора, например, если внешний процессор записывает данные на один из контроллеров, тот исполняет роль первого контроллера в данной операции, в то время как другой контроллер исполняет роль второго контроллера; при следующей операции контроллеры могут поменяться ролями.
В частности, первый и второй контроллеры обмениваются данными по протоколу SCSI.
Способ и устройство поясняются схемой и диаграммами.
На Фиг.1 приведена блок-схема устройства системы хранения данных.
На Фиг.2 показана диаграмма последовательности действий записи данных в систему хранения данных.
На Фиг.3 показана диаграмма последовательности действий при «очистке сегментов кэша.
Двухконтроллерная система хранения данных (СХД) 2 предоставляет внешнему процессору 1 или другому инициатору доступ к данным по каналам передачи данных 10 и 11. Система хранения данных содержит два контроллера массивов дисков (энергонезависимых носителей) 3, 4, каждый из которых включает оперативную память, хранящую кэши данных 5, 6. Кэши состоят из отдельно адресуемых сегментов равного размера 7, 8. Контроллеры сисиемы хранения данных 3, 4 подключены к устройствам энергонезависимой памяти - дискам 9 по каналам передачи данных 13, 14 таким образом, что каждый контроллер имеет связь с каждым диском.
Контроллеры 3, 4 связаны между собой каналом передачи данных 12, используемым для синхронизации данных между контроллерами 3, 4. Каналы передачи данных 10, 11 и 12 являются интерфейсами горячего подключения.
При записи данные, получаемые контроллером 3 от внешнего процессора 1, попадают в кэш 5 по каналу 10, далее передаются в кэш 6 контроллера 4 по каналу 12 и затем записываются на диски 9 по каналу 13.
При чтении данные попадают с дисков 9 по каналу 13 в кэш 5 контроллера 3, откуда они передаются по каналу 10 на внешний процессор 1.
Следует отметить симметричность системы хранения данных 2, позволяющую контроллерам 3, 4 поменяться при необходимости ролями.
Заявляемый способ реализуется следующим образом.
Заявляемый способ реализует запись данных от внешнего процессора в кэши контроллеров двухконтроллерной системы хранения данных и «очистки» кэшей от «грязных» данных при сохранении их на энергонезависимых носителях-дисках.
Запись данных от внешнего процессора
При реализации записи на систему хранения данных 2 от внешнего процессора 1 в кэши 5, 6 контроллеров 3,4. Особенность реализации - однонаправленность передачи данных и контрольных сумм: первый контроллер передает на второй контроллер данные и контрольную сумму, второй сообщает первому факт приема данных и результат сравнения контрольных сумм. Блок-схема алгоритма показана на Фиг.2, далее процесс подробно описан по блокам.
В блоке 2-2. Внешний процессор 1 передает, а первый контроллер 3 принимает записываемые данные;
В блоке 2-3. Первый контроллер 3 помещает принятые данные в один или несколько последовательных сегментов 7 кэша 5, при этом помечая эти данные как «грязные». Сегменты называются последовательными, если они отображены на последовательные адреса данных на дисках 9. Пометка данных может быть реализована разными способами, например использованием битовой карты или хранением списка диапазонов адресов.
В блоке 2-4. Первый контроллер 3 вычисляет Σ1 - контрольную сумму всех «грязных» данных в кэше 5, включая данные, принятые в блоке 2. Эта сумма может вычисляться разными способами, например полным пересуммированием всех «грязных» данных, или инкрементально с использованием ранее вычисленной суммы.
В блоке 2-5. Первый контроллер 3 передает данные, принятые в блоке 2, на второй контроллер 4 по каналу передачи данных 12.
В блоке 2-6. Второй контроллер 4 помещает принятые данные в один или несколько последовательных сегментов 8 кэша 6, при этом помечая эти данные как «грязные».
В блоке 2-7. Второй контроллер 4 вычисляет Σ2 - контрольную сумму всех «грязных» данных в кэше 6, включая данные, принятые в блоке 5.
В блоке 2-8. Второй контроллер 4 сообщает Первому контроллеру 3 о завершении операции приема данных, переданных в блоке 5.
В блоке 2-9. Первый контроллер 3 передает на второй контроллер 4 контрольную сумму Σ1.
В блоке 2-10. Второй контроллер 4 сравнивает контрольные суммы Σ1 и Σ2 и запоминает результат сравнения.
В блоке 2-11. Второй контроллер 4 сообщает первому контроллеру 3 результат сравнения контрольных сумм: равенство или неравенство.
В блоке 2-12. Первый контроллер 3 в случае равенства контрольных сумм передает управление блоку 15.
В блоке 2-13. Первый контроллер 3 останавливает синхронизацию «грязных» данных между кэшами 5, 6 контроллеров 3, 4 в связи с ошибкой.
В блоке 2-14. Первый контроллер 3 переводит второй контроллер в состояние ошибки, из которого он может быть возвращен в строй, например, перезагрузкой;
В блоке 2-15. Первый контроллер сообщает внешнему процессору о завершении операции приема данных, переданных в блоке 2.
«Очистка» кэша при сохранении данных на дисках
Часть способа - это реализация «очистки» «грязных» данных в сегментах 7, 8 кэшей 5, 6 контроллеров 3, 4 при сохранении их на диски 9. Необходимость этой процедуры объясняется тем, что пока данные помечены как «грязные», содержащие их сегменты невозможно использовать для приема новых данных, таким образом, если их не «очищать», со временем кэш может переполниться и система хранения данных перестанет работать.
Блок-схема алгоритма показана на Фиг.3, далее процесс подробно описан по блокам.
В блоке 3-2. Первый контроллер 3 сохраняет «грязные» данные из группы последовательных сегментов 7 кэша 5 на дисках 9.
В блоке 3-3. Первый контроллер 3 снимает «грязную» пометку с данных из группы сегментов 7, данные которых были записаны на диски в блоке 2.
В блоке 3-4. Первый контроллер 3 вычисляет Σ1 - контрольную сумму всех «грязных» данных в кэше 5 после снятия «грязной» пометки с части данных в блоке 3.
В блоке 3-5. Первый контроллер 3 передает команду «очистки» группы сегментов 8 кэша 6, соответствующих «очищенной» группе сегментов 7 кэша 5, на второй контроллер 4 по каналу передачи данных 12.
В блоке 3-6. Второй контроллер 4 снимает «грязную» пометку с данных из группы сегментов 8 кэша 6.
В блоке 3-7. Второй контроллер 4 вычисляет Σ2 - контрольную сумму всех «грязных» данных в кэше 6 после снятия «грязной» пометки с части данных в блоке 6.
<mrow />
В блоке 3-8. Второй контроллер 4 сообщает первому контроллеру 3 о завершении
операции «очистки» группы сегментов, инициированной в блоке 5.
В блоке 3-9. Первый контроллер 3 передает на второй контроллер 4 контрольную сумму Σ1.
В блоке 3-10. Второй контроллер 4 сравнивает контрольные суммы Σ1 и Σ2 и запоминает результат сравнения.
В блоке 3-11. Второй контроллер 4 сообщает первому контроллеру 3 результат сравнения контрольных сумм: равенство или неравенство.
В блоке 12. Первый контроллер 3 в случае равенства контрольных сумм завершает работу алгоритма.
В блоке 3-13. Первый контроллер 3 останавливает синхронизацию «грязных» данных между кэшами 5,6 контроллеров 3, 4 в связи с ошибкой.
В блоке 3-14. Первый контроллер 3 переводит второй контроллер в состояние ошибки, из которого он может быть возвращен в строй, например, перезагрузкой.
Заявляемые способ и устройство позволяют существенно снизить вероятность потери данных, хранящихся в кэшах контроллеров, тем самым обеспечивая высокую надежность двухконтроллерной системе хранения данных на основе массива энергонезависимых носителей.