Корректность без зависимости от упорядоченности

Иллюстрации

Показать все

Изобретение относится к способу, системе и компьютерному носителю данных для поддержания корректности в системе хранения. Технический результат заключается в повышении надежности хранения данных. В способе осуществляют получение одной или более индикаций объектов, которые вовлечены в транзакцию, определение местоположения первого набора местоположений хранения хранилища для вовлеченных в транзакцию объектов, создание логических копий этих объектов, модифицированных в контексте транзакции, определение второго набора местоположений хранения хранилища для упомянутых логических копий, создание ассоциации, которая связывает логические копии объектов в элементарном блоке, и посылку одного или более запросов записать ассоциацию и логические копии в хранилище, в то же время поддерживая оригиналы этих объектов в хранилище, и выполнение, после отказа, операции восстановления, содержащей определение, находится ли копия всех упомянутых объектов как модифицированных в контексте транзакции в хранилище, и отклонение модификаций для упомянутой копии всех объектов в хранилище, которые модифицированы в контексте транзакции, когда определено, что копия объекта, соответствующая одному из объектов как модифицированного в контексте транзакции, не находится в хранилище. 3 н. и 11 з.п. ф-лы, 5 ил.

Реферат

УРОВЕНЬ ТЕХНИКИ

[0001] В усилиях улучшить производительность дисков изготовители дисков создали диски с кэшами (кэш-памятью). Хотя ранее эти кэши использовались при считывании данных с диска, они недавно также использовались при записи данных на диск. В частности, когда операционная система запрашивает, чтобы данные были записаны на диск, контроллер диска может сообщить, что данные были записаны прежде, чем данные фактически переданы от кэша диска к энергонезависимой дисковой памяти. Кроме того, порядок, в котором данные записаны в энергонезависимую дисковую память, может отличаться от порядка, в котором данные приняты контроллером диска. Эти поведения являются проблемами для систем, которые пытаются поддерживать корректность.

[0002] Заявленный предмет изобретения не ограничен вариантами осуществления, которые разрешают какие-либо неудобства, или которые работают только в средах, таких как описанные выше. Вместо этого данное описание уровня техники предоставлено, только чтобы иллюстрировать одну примерную область технологии, где некоторые варианты осуществления, описанные здесь, могут быть осуществлены.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

[0003] Вкратце, аспекты предмета изобретения, описанного здесь, касаются поддержания корректности в системе хранения. В аспектах один или более объектов могут быть обновлены в контексте транзакции. В соединении с обновлением объектов логические копии объектов могут быть получены и модифицированы. Запрос на запись обновленных логических копий посылают контроллеру запоминающего устройства. Логические копии не перезаписывают первоначальные копии. В соединении с посылкой запроса структура данных предоставляется для контроллера запоминающего устройства для сохранения на диске. Структура данных указывает один или более объектов, которые, как предполагалось, были записаны на диск, и может включать в себя данные верификации, чтобы указать содержимое, которое, как предполагалось, было записано на диск. Во время восстановления эта структура данных может использоваться, чтобы определить, были ли все из объекта(ов) правильно записаны на диск.

[0004] Эта сущность изобретения предоставлена, чтобы кратко идентифицировать некоторые аспекты изобретения, которые описаны ниже в подробном описании. Эта сущность изобретения не предназначена, чтобы идентифицировать ключевые или существенные признаки заявленного предмета, и при этом она не предназначена, чтобы использоваться для ограничения объема заявленного изобретения.

[0005] Фраза "предмет, описанный здесь", относится к предмету, описанному в подробном описании, если контекст ясно не указывает иначе. Термин "аспекты" должен быть прочитан как «по меньшей мере, один аспект». Идентификация аспектов предмета, описанного в подробном описании, не предназначена, чтобы идентифицировать ключевые или существенные признаки заявленного изобретения.

[0006] Аспекты, описанные выше и другие аспекты предмета, описанного здесь, иллюстрируются посредством примера и не ограничены на сопровождающих фигурах, в которых аналогичные ссылочные позиции указывают аналогичные элементы и на которых:

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0007] ФИГ. 1 является блок-схемой, представляющей примерную вычислительную среду общего назначения, в которую могут быть включены аспекты предмета, описанного в данном описании;

[0008] ФИГ. 2 является блок-схемой, представляющей примерную компоновку компонентов системы, в которой могут работать аспекты предмета, описанного в данном описании;

[0009] ФИГ. 3 является блок-схемой, которая иллюстрирует аспекты предмета, описанного в данном описании;

[0010] ФИГ. 4 является блок-схемой, которая в целом представляет примерные действия, которые могут произойти, когда единственный объект модифицирован в контексте транзакции в соответствии с аспектами предмета, описанного в данном описании; и

[0011] ФИГ. 5 является блок-схемой, которая в целом представляет примерные действия, которые могут произойти, когда множественные объекты модифицированы в контексте транзакции в соответствии с аспектами предмета, описанного в данном описании.

ПОДРОБНОЕ ОПИСАНИЕ

ОПРЕДЕЛЕНИЯ

[0012] Как используется здесь, термин "включает в себя" и его варианты должен быть прочитан как открытые термины, которые означают «включает в себя, но не ограничен». Термин "или" должен быть прочитан как "и/или", если только контекст ясно не диктует иначе. Термин "основанный на" должен быть прочитан как "основанный, по меньшей мере, частично на». Термины "один вариант осуществления" и "вариант осуществления" должны быть прочитаны как "по меньшей мере, один вариант осуществления”. Термин "другой вариант осуществления" должен быть прочитан как "по меньшей мере, один другой вариант осуществления». Другие определения, явные и неявные, могут быть включены ниже.

ПРИМЕРНАЯ ОПЕРАЦИОННАЯ СРЕДА

[0013] ФИГ. 1 иллюстрирует пример подходящей среды 100 вычислительной системы, на которой могут быть реализованы аспекты описанного предмета изобретения. Среда 100 вычислительной системы является только одним примером подходящей вычислительной среды и не предназначена, чтобы предложить какое-либо ограничение относительно области использования или функциональных возможностей аспектов предмета, описанного здесь. Вычислительная среда 100 не должна интерпретироваться как имеющая какую-либо зависимость или требования, касающиеся любого или комбинации компонентов, иллюстрированных в примерной операционной среде 100.

[0014] Аспекты предмета (изобретении), описанного здесь, являются функционирующими с многочисленными другими средами вычислительной системы или конфигурациями общего назначения или специализированными. Примеры известных вычислительных систем, сред или конфигураций, которые могут быть подходящими для использования с аспектами предмета, описанного здесь, содержат персональные компьютеры, серверные компьютеры, карманные или настольные устройства, мультипроцессорные системы, основанные на микроконтроллерах системы, телевизионные приставки, программируемую бытовую электронику, сети ПК, мини-компьютеры, универсальные компьютеры, персональные цифровые помощники (PDA), игровые устройства, принтеры, приборы, включающие в себя телеприставки, медиацентр, или другие приборы, встроенные в автомобиль или присоединенные вычислительные устройства, другие мобильные устройства, распределенные вычислительные среды, которые включают в себя любую из вышеупомянутых систем или устройств и т.п.

[0015] Аспекты предмета, описанного здесь, могут быть описаны в общем контексте выполнимых компьютером инструкций, таких как программные модули, выполняемые компьютером. Обычно программные модули включают в себя подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Аспекты предмета, описанного здесь, могут также быть осуществлены в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые связаны через систему коммуникаций. В распределенной вычислительной среде программные модули могут быть расположены и в локальных и в удаленных компьютерных носителях, данных, включая устройства хранения памяти.

[0016] Со ссылками на фиг. 1 примерная система для реализации аспектов предмета, описанного здесь, включает в себя вычислительное устройство общего назначения в форме компьютера 110. Компьютер может включать в себя любое электронное устройство, которое способно к выполнению инструкции. Компоненты компьютера 110 могут включать в себя блок 120 обработки, системную память 130 и системную шину 121, которая подсоединяет различные компоненты системы, включая системную память, к блоку 120 обработки. Системная шина 121 может быть любой из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину, и локальную шину, используя любое множество шинных архитектур. Посредством примера, а не ограничения, такая архитектура включает в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), шину расширенная ISA (EISA), локальную шину ассоциации стандартов видео электроники (VESA), шину соединения периферийных компонентов (PCI), также известную как шина Mezzanine, расширенную шину соединения периферийных компонентов (PCI-X), расширенный графический порт (AGP), и экспресс PCI (PCIe).

[0017] Компьютер 110 обычно включает в себя множество считываемых компьютером носителей. Считываемый компьютером носитель может быть любым доступным носителем, к которому может получить доступ компьютер 110, и включает в себя и энергозависимые и энергонезависимые носители, сменные и несменные носители. Посредством примера, а не ограничения, считываемый компьютером носители может содержать компьютерные носители данных и коммуникационные носители.

[0018] Компьютерные носители данных включают в себя как энергозависимые, так и энергонезависимые носители, как сменные, так и несменные носители, реализованные любым способом или технологией для хранения информации, такой как считываемые компьютером инструкции, структуры данных, программные модули или другие данные. Компьютерные носители данных включают в себя RAM, ROM, EEPROM, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или другое оптическое дисковое запоминающее устройство, магнитные кассеты, магнитную ленту, магнитное дисковое запоминающее устройство или другие магнитные устройства хранения, или любой другой носитель, который может использоваться, чтобы хранить желательную информацию и к которому может получить доступ компьютер 110.

[0019] Коммуникационный носитель типично воплощает считываемые компьютером инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущая, или другом транспортном механизме и включает в себя любые носители доставки информации. Термин "модулированный сигнал данных" означает сигнал, который имеет одну или более его характеристик установленную или измененную таким образом, чтобы закодировать информацию в сигнале. Посредством примера, а не ограничения, коммуникационный носитель включает в себя проводные носители, такие как проводная сеть или прямое проводное соединение, и беспроводные носители, такие как акустический, РЧ, инфракрасный и другой беспроводный носитель. Комбинации любого из вышеупомянутого должны также быть включены в понятие считываемого компьютером носителя.

[0020] Системная память 130 включает в себя компьютерные носители данных в форме энергозависимой и/или энергонезависимой памяти, такой как память только для считывания (ПЗУ, ROM) 131 и память произвольного доступа (ОЗУ, RAM) 132. Базовая система ввода/вывода 133 (BIOS), содержащая основные подпрограммы, которые помогают передавать информацию между элементами в пределах компьютера 110, например, во время запуска, обычно хранится в ROM 131. RAM 132 обычно содержит данные и/или программные модули, которые непосредственно доступны для и/или в настоящее время обрабатываются блоком 120 обработки. Посредством примера, а не ограничения, ФИГ. 1 иллюстрирует операционную систему 134, прикладные программы 135, другие программные модули 136 и программные данные 137.

[0021] Компьютер 110 может также включать в себя другие сменные/несменные, энергозависимые/энергонезависимые компьютерные носители данных. Посредством примера только, фиг. 1 иллюстрирует жесткий диск 141, который считывает с или записывает на несменный энергонезависимый магнитный носитель, дисковод 151 магнитных дисков, который считывает с или записывает на сменный энергонезависимый магнитный диск 152, и оптический дисковод 155, который считывает с или записывает на сменный энергонезависимый оптический диск 156, такой как CD-ROM или другой оптический носитель. Другие сменные/несменные, энергозависимые/энергонезависимые компьютерные носители данных, которые могут использоваться в примерной операционной среде, включают в себя кассеты магнитной ленты, карты флэш-памяти, цифровые универсальные диски, другие оптические диски, цифровую видеоленту, твердотельные дисководы, твердотельную RAM, твердотельную ROM, гибридные устройства, включающие в себя два или более носителей данных, наборы устройств хранения, которые логически рассматриваются как единое устройство, где каждое устройство может включать в себя подобные и/или различные характеристики, и т.п. Жесткий диск 141 обычно соединен с системной шиной 121 через интерфейс несменной памяти, такой как интерфейс 140, и магнитный дисковод 151 и оптический дисковод 155 обычно соединены с системной шиной 121 интерфейсом сменной памяти, таким как интерфейс 150.

[0022] В дополнение к интерфейсам, которые относятся к локальному запоминающему устройству, интерфейс 140 может включать в себя основанные на сети локальных хранилищ (SAN) интерфейсы, основанные на хранилищах с сетевой адресацией (NAS) интерфейсы, гибридные интерфейсы, включая SAN и NAS, и т.п. SAN и/или NAS может использовать волоконно-оптический канал, SCSI, iSCSI, PCI-X, Ethernet, USB, или некоторую другую технологию подключения к сети, чтобы обмениваться с устройствами хранения.

[0023] Дисководы и их ассоциированные компьютерные носители данных, описанные выше и проиллюстрированные на фиг. 1, обеспечивают хранение считываемых компьютером инструкций, структур данных, программных модулей и других данных для компьютера 110. На фиг. 1, например, жесткий диск 141 иллюстрирован как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и программные данные 147. Следует отметить, что эти компоненты могут или быть такими же или отличающимися от операционной системы 134, прикладных программ 135, других программных модулей 136 и программных данных 137. Операционной системе 144, прикладным программам 145, другим программным модулям 146 и программным данным 147 даны различные номера здесь, чтобы иллюстрировать, что как минимум они являются различными копиями.

[0024] Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода, такие как клавиатура 162 и указывающее устройство 161, обычно называемое как мышь, шаровой указатель, или площадка ввода касанием. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую клавиатуру, спутниковую антенну, сканер, чувствительный к касанию экран, планшет для записей или подобное. Эти и другие устройства ввода часто связываются с блоком 120 обработки через пользовательский интерфейс 160 устройств ввода, который соединен к системной шине, но может быть связан другими структурами интерфейса и шины, такими как параллельный порт, игровой порт или универсальная последовательная шина (USB).

[0025] Монитор 191 или другой тип устройства отображения также связан с системной шиной 121 через интерфейс, такой как видео интерфейс 190. В дополнение к монитору компьютеры могут также включать в себя другие периферийные устройства вывода, такие как громкоговорители 197 и принтер 196, который может быть связан через периферийный интерфейс 195 устройств вывода.

[0026] Компьютер 110 может работать в сетевой среде, используя логические соединения с одним или более удаленными компьютерами, такими как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым PC, одноранговым устройством или другим общим узлом сети, и обычно включает в себя многие или все элементы, описанные выше относительно компьютера 110, хотя только запоминающее устройство 181 было иллюстрировано на фиг. 1. Логические соединения, изображенные на фиг. 1, включают в себя локальную сеть (ЛВС) 171 и глобальную сеть (WAN) 173, но могут также включать в себя другие сети. Такие сетевые среды являются обычными в офисах, компьютерных сетях всего предприятия, интранете и Интернете.

[0027] Когда используется в сетевой среде ЛВС, компьютер 110 связан с ЛВС 171 через сетевой интерфейс или адаптер 170. Когда используется в сетевой среде WAN, компьютер 110 может включать в себя модем 172 или другое средство для установления связи по WAN 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, может быть связан с системной шиной 121 через пользовательский интерфейс 160 устройств ввода или другой соответствующий механизм. В сетевой среде программные модули, изображенные относительно компьютера 110 или его части, могут быть сохранены в удаленном устройстве хранения. Посредством примера, а не ограничения, ФИГ. 1 иллюстрирует удаленные прикладные программы 185 как постоянно находящийся на устройстве 181 памяти. Будет оценено, что показанные соединения сети являются примерным и могут использоваться другие средства установления линии связи между компьютерами.

КОРРЕКТНОСТЬ

[0028] Как упомянуто ранее, кэширование и запись не по порядку на диск являются проблемами для систем, которые пытаются поддерживать корректность. Иногда здесь используется термин «транзакция». Транзакция является группой операций, которые могут включать в себя различные свойства, включая, например, элементарный (атомарный), корректный, изолированный, и длительный. Как используется здесь, транзакция включает в себя, по меньшей мере, свойство элементарности (атомарности) и может включать в себя одно или более других свойств, упомянутых выше.

[0029] Свойство элементарности используется, чтобы ссылаться на группу операций, где любая каждая операция в группе достигает цели или ощутимые эффекты (например, изменения файла) операций в группе отменяются, отклоняются или не применяются. Для простоты термин «отклоняется» иногда используется здесь, чтобы ссылаться на выполнение каких-либо действий, подходящих, чтобы гарантировать, что любые изменения, сделанные в контексте транзакции, не отражаются в объектах, ассоциированных с этими изменениями. Отклонение может включать в себя отмену, отклонение, неприменение операции обновления и т.п.

[0030] Например, банковский перевод может быть реализован как элементарный набор двух операций: дебет с одного счета и кредит на другой счет. Если эти две операции обе не являются успешными, то передача является незаконной или в пользу банка или владельца банковского счета. Таким образом, или обе операции являются успешными в транзакции или ощутимые воздействия (например, данные, сохраненные на диске или в памяти) любой, которая действительно является успешной, отклоняются.

[0031] Когда "транзакция" используется здесь, это может, но не обязательно; подразумевать, что компонент, вовлеченный в транзакцию, понимает, что происходит транзакция. Например, компонент может быть явно информирован, что два или больше объектов вовлечены в транзакцию. Компонент может затем реализовать свойство элементарности в отношении операций к объектам, как описано выше. В качестве другого примера, компонент может быть не обязательно информирован, что транзакция происходит. Вместо этого компонент может определить или быть проинструктирован, что две или больше операции, которые были заданы, или должны быть завершены успешно или что от результатов этих операций нужно отказаться.

[0032] В первом примере выше, компоненту дали явную информацию, что объекты вовлечены в транзакцию. Во втором примере компонент мог быть не информирован, что транзакция затрагивает эти две или больше операций. Вместо этого компонент мог быть проинструктирован, что он должен реализовать свойство элементарности в отношении этих операций. Аспекты предмета, описанного здесь, применимы к обоим примерам выше.

[0033] Кроме того, когда один или более объектов модифицированы "в контексте транзакции", это означает, что есть предположение, что свойство элементарности будет реализовано относительно операций обновления, обеспеченных, чтобы модифицировать один или более объектов. Например, приложение, запрашивающее модификации в контексте транзакции, может безопасно предположить, что или все операции обновления, чтобы сделать эти модификации, являются успешными, или, что эти обновления, которые были или могли быть успешными, отклоняются.

[0034] ФИГ. 2 является блок-схемой, представляющей примерную компоновку компонентов системы, в которой здесь могут работать аспекты описанного предмета. Компоненты, иллюстрированные на фиг. 2, являются примерными и не предназначены, чтобы быть включающими все компоненты, которые могут быть необходимы или включены. В других вариантах осуществления компоненты и/или функции, описанные со ссылками на фиг. 2, могут быть включены в другие компоненты (показанные или не показанные) или помещены в субкомпоненты, не отступая от формы или объема аспектов предмета, описанного здесь. В некоторых вариантах осуществления компоненты и/или функции, описанные со ссылками на фиг. 2, могут быть распределены по множественным устройствам.

[0035] Со ссылками на фиг. 2, система 205 может включать в себя одно или более приложений 210, API 215, компоненты 220 корректности, хранилище 250, механизм 255 коммуникаций и другие компоненты (не показаны). Система 205 может содержать одно или более вычислительных устройств. Такие устройства могут включать в себя, например, персональные компьютеры, серверные компьютеры, карманные компьютеры или ноутбуки, мультипроцессорные системы, системы на основе микроконтроллеров, телевизионные приставки, программируемую бытовую электронику, сети ПК, миникомпьютеры, универсальные компьютеры, сотовые телефоны, персональные цифровые помощники (PDA), игровые устройства, принтеры, приборы, включающие в себя приставки, медиа центр или другие приборы, встроенные в автомобиль или присоединенные вычислительные устройства, другие мобильные устройства, распределенные вычислительные среды, которые включают в себя любое из вышеупомянутых систем или устройств и т.п.

[0036] Когда система 205 содержит единственное устройство, примерное устройство, которое может конфигурироваться, чтобы действовать в качестве системы 205, содержит компьютер 110 согласно фиг. 1. Когда система 205 содержит множественные устройства, каждое из множественных устройств может содержать аналогично или отличающимся образом конфигурируемый компьютер 110 согласно фиг. 1.

[0037] Компоненты 220 корректности могут включать в себя администратор 225 восстановления, администратор 230 контрольных точек, администратор 235 ввода / вывода и другие компоненты (не показаны). Как используется здесь, термин «компонент» должен читаться, чтобы включать в себя все или часть устройства, коллекцию одного или более программных модулей или его частей, некоторую комбинацию одного или более программных модулей или его частей и одно или более устройств или его частей, и т.п.

[0038] Механизм 255 коммуникаций позволяет системе 205 связываться с другими объектами. Например, механизм 255 коммуникаций может позволить системе 205 связываться с приложениями на удаленном хосте. Механизм 255 коммуникаций может быть сетевым интерфейсом или адаптером 170, модемом 172 или любым другим механизмом для установления связей, как описано со ссылками на фиг. 1.

[0039] Хранилище 250 является любыми носителями данных, способными к обеспечению доступа к данным. Хранилище может включать в себя энергозависимую память (например, кэш) и энергонезависимую память (например, постоянное запоминающее устройство). Термин «данные» должен быть прочитан широко, чтобы включать в себя что-то, что может быть представлено одним или более компьютерными элементами хранения. Логически данные могут быть представлены как ряд 1 и 0 в энергозависимой или энергонезависимой памяти. В компьютерах, которые имеют не двоичное запоминающее устройство, данные могут быть представлены согласно возможностям носителя данных. Данные могут быть организованы в различные типы структур данных, включая простые типы данных, такие как цифры, буквы и т.п., иерархические, связанные или другие соответствующие типы данных, структуры данных, которые включают в себя множественные другие структуры данных или простые типы данных, и т.п. Некоторые примеры данных включают в себя информацию, программный код, состояние программы, программные данные, другие данные и т.п.

[0040] Хранилище 250 может содержать запоминающее устройство на жестком диске, другое энергонезависимое запоминающее устройство, энергозависимое запоминающее устройство, такое как RAM, другое запоминающее устройство, некоторую комбинацию вышеупомянутого и т.п. и может быть распределено по множественным устройствам. Хранилище 250 может быть внешним, внутренним, или включать в себя компоненты, которые являются и внутренними и внешними к системе 205.

[0041] К хранилищу 250 можно получить доступ через контроллер 240 запоминающего устройства. Доступ, как используется здесь, может включать в себя считывание данных, запись данных, удаление данных, обновление данных, комбинацию, включающую в себя два или более из вышеупомянутых, и т.п. Контроллер 240 запоминающего устройства может принимать запросы, чтобы получить доступ к хранилищу 250 и может выполнять такие запросы соответствующим образом. Контроллер 240 запоминающего устройства может быть скомпонован таким образом, что он не гарантирует, что данные будут записаны в хранилище 250 в порядке, в котором они были приняты. Кроме того, контроллер 240 запоминающего устройства может указать, что он записал запрошенные данные прежде, чем контроллер 240 запоминающего устройства фактически записал данные в энергонезависимую память хранилища 250.

[0042] Одно или более приложений 210 включают в себя любые процессы, которые могут быть вовлечены в транзакции, чтобы создать, удалить или обновить ресурсы. Такие процессы могут выполняться в пользовательском режиме или режиме ядра. Термин "процесс" и его варианты, как используется здесь, может включать в себя один или более традиционных процессов, потоков, компонентов, библиотек, объектов, которые выполняют задачи и т.п. Процесс может быть реализован в аппаратном обеспечении, программном обеспечении, или комбинации аппаратного обеспечения и программного обеспечения. В варианте осуществления процессом является любой механизм, однако вызываемый, способный к или используемый при выполнении действия. Процесс может быть распределен по множественным устройствам или единственному устройству. Одно или более приложений 210 могут делать запросы к файловой системе (например, через запросы функции/метода) через API 215 к администратору 235 ввода/вывода.

[0043] Администратор 235 ввода/вывода может определять, какой запрос или запросы ввода/вывода выдать контроллеру 240 запоминающего устройства (или некоторому другому промежуточному компоненту). Администратор 235 ввода/вывода может также возвратить данные одному или более приложениям 210, когда операции, ассоциированные с запросами файловой системы, происходят, завершаются или дают сбой. Когда запрос файловой системы вовлекает транзакцию, администратор 235 ввода/вывода может информировать администратор транзакции (не показан) так, чтобы администратор транзакции мог должным образом управлять транзакцией. В некоторых вариантах осуществления функции администратора транзакции могут быть включены в администратор 235 ввода/вывода.

[0044] Ниже представлен примерный алгоритм для того, чтобы записать данные в хранилище 250 способом, который облегчает корректность и восстановление после отказа. Как представлено в этом алгоритме, каждый объект обозначен Dn, где n идентифицирует объект для системы. Объекты, как предполагается, являются преобразованными в последовательную форму (то есть способными быть представленными как данные в хранилище 250). Таблица объектов ассоциирует каждый идентификатор объекта с его местоположением в хранилище 250.

[0045] В первый раз Dn обновляется в модифицирующей транзакции, Dn определяется посредством просмотра его местоположения в таблице объектов, используя n. Для использования в этом примере местоположение хранения Dn в хранилище 250 названо L1.

[0046] Содержимое L1 затем считывают из хранилища 250, объект может быть преобразован из последовательной формы (например, преобразован из формата последовательной формы в структуру объекта), и части объекта, которые должны быть модифицированы, копируют в главную системную память. Обновления выполняют в отношении частей (или их копий) в памяти. В соединении с частями, модифицируемыми в памяти, одно или более новых местоположений (названо это L2) в хранилище 25 обозначается для модифицированных частей.

[0047] Эти копии в главной системной памяти иногда называют здесь "логическими копиями" объектов. Логическая копия объекта включает в себя одну или более структур данных, которые могут использоваться, чтобы представить объект. Логически, логическая копия является дубликатом объекта. Физически, логически копия может включать в себя данные (включая указатели на другие данные), которые могут использоваться, чтобы создать дубликат объекта. Например, в одной реализации, логическая копия может быть фактической копией (например, побитовой копией) объекта или структуры данных, которая включает в себя данные, которые могут использоваться, чтобы создать объект. В другой реализации немодифицированная логическая копия может включать в себя один или более указателей, которые указывают на первоначальный объект. Когда логическая копия модифицирована, указатели в логической копии могут ссылаться на новые местоположения в памяти (например, для измененной части логической копии), в то время как другие указатели могут ссылаться на части первоначального объекта (например, для немодифицированной части логической копии). Используя указатели, модифицированная копия может быть построена, используя модифицированные данные вместе с немодифицированными данными первоначального объекта. Создание логической копии может быть выполнено, чтобы уменьшить запоминающее устройство, необходимое для создания дубликата объекта.

[0048] Кроме того, хотя преобразование в последовательную форму и преобразование из последовательной формы иногда упоминается здесь, нет никакого намерения, ограничить аспекты предмета, описанного здесь, тем, о чем обычно думают как преобразование в последовательную форму и преобразование из последовательной формы. В одном варианте осуществления преобразованная в последовательную форму версия может быть бит-за-битом идентичной преобразованной из последовательной формы версии. В другом варианте осуществления биты преобразованной в последовательную форму версии могут быть упакованы в отличающемся формате и порядке, чем токовые в преобразованной из последовательной формы версии. Действительно, в одном варианте осуществления преобразование в последовательную форму и преобразование из последовательной формы, должно пониматься как означающее любой механизм для хранения и восстановления данных, которые представляют объекты из хранилища. Другие механизмы, например, могут включать в себя свойства записи объектов в текстовом формате в хранилище, кодирование свойств объектов на языке разметки в хранилище, другие способы сохранения свойств и другие признаки объектов в хранилище, и т.п.

[0049] По усмотрению системы (например, после того, как транзакция совершена или некоторое другое время), система может преобразовать в последовательную форму, модифицированную логическую копию обратно в постоянный носитель, но делает это в местоположении L2. Намерение записать модифицированную логическую копию в новое местоположение называют планом записи. План записи может включать в себя произвольное количество обновлений к одному или более объектам. План записи может ссылаться на изменения, которые происходят в более чем одной транзакции. Множественные планы записи могут быть объединены в один план записи.

[0050] Когда модификация происходит только после контрольных точек, блок, названный блоком восстановления (который может быть дублирован во множественных местоположениях), модифицируется, чтобы указать на начало модифицированной логической копии (то есть, L2). Поле в объекте в L2 указывает на местоположение, которое будет записано следующим. Это поле представляет ссылку на цепочку планов записи.

[0051] В соединении с посылкой запроса записать логическую копию, модификация может быть сделана в таблице объектов. В частности, значение местоположения, индексированное идентификатором объекта, может быть установлено в значение местоположения, в котором модифицированная логическая копия должна быть сохранена (то есть L2). Это сделано так, чтобы последующий поиск местоположения объекта Dn ссылался на местоположение L2, новую версию объекта.

[0052] Если транзакция модифицирует более чем один объект, например Di и Dj, эти объекты рассматриваются как "атомарно связанные" друг с другом, и записываются в один план записи. План записи может задать эти отношения (например, в ссылках на вовлеченные объекты).

[0053] Произвольное количество объектов может быть сохранено в этом способе. Периодически таблица объектов может также быть записана в хранилище 250 таким же образом, как любой другой объект.

[0054] В соединении с посылкой запроса записать таблицу объектов в хранилище 250, команду групповой записи можно также послать контроллеру 240 запоминающего устройства. Команда групповой записи инструктирует контроллер 240 запоминающего устройства записать все данные из его энергозависимой памяти, которые не были уже записаны, в энергонезависимую память хранилища 250.

[0055] Периодически может иметь место контрольная точка. Контрольная точка может быть указана записью контрольных точек, сохраненной хранилищем 250. Контрольная точка может быть записана в любое время и может стать устойчивой/длительной после групповой записи. «Устойчивый/длительный» относится к контрольной точке, сохраненной в энергонезависимой памяти в хранилище.

[0056] После того как контрольная точка является устойчивой/длительной, пространство, используемое для любых старых и неиспользованных копий объектов (или их части) может быть снова использовано. После того, как групповая запись закончена, блок восстановления затем указывает на начало цепочки следующих планов записи. В одном варианте осуществления блок восстановления может указывать начало цепочки планов записи для нового местоположения таблицы объектов.

[0057] Более конкретный пример описан со ссылками на фиг. 3, которая является блок-схемой, которая иллюстрирует аспекты предмета, описанного здесь. Как иллюстрировано, фиг. 3 показывает главную память 305 и хранилище 250. Линия 307 представляет разделение между главной памятью 305 и хранилищем 250. Объекты выше линии 310 находятся в главной памяти, в то время как объекты ниже линии 310 находятся в энергозависимой или энергонезависимой памяти в хранилище 250.

[0058] Объекты 314-316 показаны в главной памяти 305. В реализации объекты 314-316 могут быть преобразованными из последовательной формы логическими копиями объектов 319-321, соответственно. Объект 319 расположен в местоположении 1550 в хранилище 250, объект 320 расположен в местоположении 200 в хранилище 250, и объект 321 расположен в местоположении 800 в хранилище 250.

[0059] Таблица 310 объектов включает в себя пары ключевых значений, которые указывают местоположения объектов 314-316 в хранилище 250. Пары ключевых значений являются индексированными, используя идентификаторы (n) объектов 314-316.

[0060] Когда транзакция модифицирует объект 316 (например, меняя его имя на foo.txt), компоненты корректности (например, компоненты 220 корректности согласно фиг. 2) могут определить новое местоположение хранения для обновленного объекта (например, местоположение 801). Если объектом является файл, обновление его имени в контексте транзакции может также вызвать то, что каталог, который включает в себя файл, также будет вовлечен в транзакцию. Например, когда имя файла изменено, как объект, который представляет файл, так и объект, который представляет каталог, который включает в себя этот файл, возможно, должны быть вовлечены в транзакцию. В этом случае каталог, который включает в себя объект, представлен как объект 314, и логическая копия обновленного каталога (например, объект 318) представлена как объект 323 в хранилище 250. Кроме того, таблица 310 была логически обновлена до таблицы 311, чтобы указать новые местоп