Контрольные точки для файловой системы

Иллюстрации

Показать все

Изобретение относится к средствам обеспечения контрольных точек. Технический результат заключается в уменьшении времени восстановления. Указывают, что первый набор обновлений подлежит связыванию с первой контрольной точкой. Определяют необходимость записи данных контрольной точки, относящихся к первой контрольной точке, в хранилище файловой системы, которая использует копирование при записи для обновления данных файловой системы. Указывают, что любые обновления, которые происходят после первого набора обновлений, подлежат связыванию со следующей контрольной точкой. Генерируют планы записи для первого набора обновлений, причем каждый план записи указывает, по меньшей мере, запланированное местоположение в хранилище для данных, представляющих по меньшей мере одно из первого набора обновлений. Обновляют метаданные для указания данных выделения файловой системы, а также местоположений в хранилище для объектов файловой системы, модифицированных согласно упомянутым планам записи. Создают логическую копию метаданных. 3 н. и 12 з.п. ф-лы, 8 ил.

Реферат

Предпосылки изобретения

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

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

Сущность изобретения

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

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

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

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

Краткое описание чертежей

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

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

[0009] фиг.3 - блок-схема, иллюстрирующая аспекты описанного здесь изобретения;

[0010] фиг.4 - схема, обобщенно представляющая обновления файловой системы в соответствии с аспектами описанного здесь изобретения;

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

[0012] фиг.6-8 - логические блок-схемы операций, обобщенно представляющие иллюстративные действия, которые могут происходить в соответствии с аспектами описанного здесь изобретения.

Подробное описание

Определения

[0013] Используемый здесь термин “включает в себя” и его варианты следует понимать как неограничительные термины, в смысле “включает в себя, но без ограничения”. Термин “или” следует понимать как “и/или”, если из контекста непосредственно не следует обратное. Термин “на основании” следует понимать как “на основании, по меньшей мере, частично”. Термины “один вариант осуществления” и “вариант осуществления” следует понимать как “по меньшей мере, один вариант осуществления”. Термин “другой вариант осуществления” следует понимать как “по меньшей мере, еще один вариант осуществления”. Далее могут следовать другие определения, прямые и косвенные.

Иллюстративная операционная среда

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

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

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

[0017] Согласно фиг.1, иллюстративная система для реализации аспектов описанного здесь изобретения включает в себя вычислительное устройство общего назначения в форме компьютера 110. Компьютер может включать в себя любое электронное устройство, способное выполнять инструкцию. Компоненты компьютера 110 могут включать в себя блок 120 обработки, системную память 130 и системную шину 121, которая подключает различные компоненты системы, включающие в себя системную память, к блоку 120 обработки. Системная шина 121 может относиться к любому из нескольких типов шинных структур, включающих в себя шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из разнообразных шинных архитектур. В порядке примера, но не ограничения, такие архитектуры включают в себя шину Industry Standard Architecture (ISA), шину Micro Channel Architecture (MCA), Enhanced ISA (EISA) шину, локальную шину Video Electronics Standards Association (VESA), шину Peripheral Component Interconnect (PCI), также известную под названием шины расширения, шину Peripheral Component Interconnect Extended (PCI-X), Advanced Graphics Port (AGP), и PCI express (PCIe).

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

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

[0020] Среды связи обычно воплощают машиночитаемые инструкции, структуры данных, программные модули, или другие данные в модулированном сигнале данных, например несущей волне или другом транспортном механизме, и включают в себя любые среды доставки информации. Термин “модулированный сигнал данных” означает сигнал, одна или более характеристик которого устанавливается или изменяется таким образом, чтобы кодировать информацию в сигнале. В порядке примера, но не ограничения, среды связи включают в себя проводные среды, например проводную сеть или непосредственное проводное соединение, и беспроводные среды, например, акустические, РЧ, инфракрасные и другие беспроводные среды. Связь посредством любой из вышеперечисленных сред также подлежит включению в объем машиночитаемых носителей.

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

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

[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 может представлять собой персональный компьютер, сервер, маршрутизатор, сетевой ПК, равноправное устройство или другой общий узел сети, и обычно включает в себя многие или все элементы, описанные выше в отношении компьютера 110, хотя на фиг.1 представлено только запоминающее устройство 181. Логические соединения, изображенные на фиг.1, включают в себя локальную сеть (LAN) 171 и глобальную сеть (WAN) 173, но также могут включать в себя другие сети. Такие сетевые окружения часто имеют место в офисных сетях, компьютерных сетях в масштабе предприятия, интрасетях и интернете.

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

Создание контрольных точек

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0042] Свойство согласованности относится к разрешенному состоянию данных в отношении одного или более файлов. До начала транзакции и после завершения транзакции, файлы файловой системы должны находиться в разрешенном состоянии (хотя они могут проходить через неразрешенные состояния в ходе транзакции). Например, банковский перевод можно реализовать в виде набора из двух операций: списания средств с одного счета и зачисления средств на другой счет. Согласованность в этом примере может задаваться в виде условия, что комбинированный остаток на счете банка и владельца счета должен быть постоянным (например, T=A+B, где T - постоянная величина, A = остаток банка, B = остаток владельца счета). Для реализации согласованности в этом примере, операции дебетования и кредитования просто должны осуществляться для одного и того же объема денежных средств и должны быть либо завершены, либо не завершены на каждом счете.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[0063] То, что модификация объекта в контексте транзакции также влияет на другой объект, может быть явно указано или определено, например, диспетчером 235 ввода/вывода или каким-либо другим компонентом, показанным на фиг.2.

[0064] Когда два или более объекта участвуют в обновлении транзакции, объекты считаются "атомарно связанными", как упомянуто ранее. В операции восстановления, пока в хранилище 250 не найдены изменения для всех объектов, измененных в контексте транзакции, все найденные изменения отвергаются. Другими словами, если изменения для одного из объе