КОНТРОЛЬНЫЕ ТОЧКИ ДЛЯ ФАЙЛОВОЙ СИСТЕМЫ
REFERENCE POINTS FOR FILE SYSTEM

Предпосылки изобретения
[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] Контрольную точку можно записывать для указания согласованного состояния файловой системы. Контрольная точка может включать в себя один или более кодов подтверждения (например, одну или более контрольных сумм, хэши или другие данные), которые можно использовать для определения, правильно ли контрольная точка и/или данные, связанные с контрольной точкой, записаны на диск. После восстановления можно определять местоположение последней записанной контрольной точки. Затем код(ы) подтверждения контрольной точки можно использовать для определения, правильно ли контрольная точка и/или данные, связанные с контрольной точкой, записаны на диск. Если нет, можно определять местоположение предыдущей контрольной точки и проверять на пригодность, пока не будет найдена пригодная контрольная точка. Когда найдена самая недавняя пригодная контрольная точка, становится известно последнее согласованное состояние файловой системы. Операции файловой системы, имевшие место после этой точки, можно отбрасывать или, при желании, можно осуществлять дополнительные действия по восстановлению.
n
[0044] В одном варианте осуществления, объект в файловой системе может обозначаться как D, где n идентифицирует объект системе. Объекты в файловой системе являются сериализуемыми (т.е. их можно представлять как данные в хранилище 250) и десериализуемыми. Таблица объектов связывает идентификатор каждого объекта с его местоположением в хранилище 250.
n
n
n
1
[0045] При первом обновлении D в модифицирующей транзакции, местоположение D определяется путем поиска его местоположения в таблице объектов с использованием n. Для использования в примере, местоположение в хранилище для D в хранилище 250 обозначается L.
1
2
[0046] Затем содержимое L считывается из хранилища 250, объект может быть десериализован (например, преобразован из сериализованного формата в структуру объекта), и части объекта, подлежащие модификации, копируются в основную системную память. Обновления осуществляются на частях (или их копиях) в памяти. Совместно с модифицируемыми частями в памяти, одно или более новых местоположений (обозначенных L) в хранилище 25 назначаются для модифицированных частей.
[0047] Эти копии в основной системной памяти иногда называются здесь "логическими копиями" объектов. Логическая копия объекта включает в себя одну или более структур данных, которые можно использовать для представления объекта. С логической точки зрения, логическая копия является дубликатом объекта. С физической точки зрения, логически копия может включать в себя данные (включающие в себя указатели на другие данные), которые можно использовать для создания дубликата объекта. Например, в одной реализации, логическая копия может быть фактической копией (например, побитовой копией) объекта или структуры данных, которая включает в себя данные, которые можно использовать для создания объекта.
[0048] В другой реализации, немодифицированная логическая копия может включать в себя один или более указателей, которые указывают на исходный объект. При внесении изменений в логическую копию, указатели в логической копии могут указывать на новые местоположения в памяти (например, для измененной части логической копии) тогда как другие указатели могут указывать на части исходного объекта (например, для неизмененной части логической копии). Используя указатели, можно построить модифицированную копию с использованием модифицированных данных совместно с немодифицированными данными исходного объекта. Создание логической копии можно осуществлять, например, для сокращения объема хранилища, необходимого для создания дубликата объекта.
[0049] Кроме того, хотя здесь иногда упоминаются сериализация и десериализация, нет никакого намерения ограничивать аспекты описанного здесь изобретения тем, что обычно понимают под сериализацией и десериализацией. В одном варианте осуществления, сериализованная версия может быть побитово идентична десериализованной версии. В другом варианте осуществления, биты сериализованной версии могут упаковываться в другом формате и порядке, чем в десериализованной версии. На самом деле, в одном варианте осуществления, под сериализацией и десериализацией подразумевается любой механизм для сохранения и извлечения данных, представляющих объекты, из хранилища. Другие механизмы могут, например, включать в себя запись свойств объектов в хранилище в текстовом формате, кодирование свойства объектов на языке разметки в хранилище, другие способы сохранения свойств и других признаков объектов в хранилище и пр.
2
[0050] При разделении системы (например, после совершения транзакции или в какое-то другое время), система может сериализовать модифицированную логическую копию обратно в стабильный носитель, но делает это в местоположении L. Намерение записать модифицированную логическую копию обратно в новое местоположение называется планом записи. План записи может идентифицировать произвольное количество обновлений одного или более объектов. План записи может указывать изменения, происходящие в более чем одной транзакции. Множественные планы записи можно объединять в единый план записи.
[0051] Диспетчер 237 планов записи может участвовать в создании планов записи для различных обновлений. Когда план записи предусматривает множественные объекты файловой системы (например, в контексте транзакции), диспетчер 237 планов записи можно использовать для генерации плана записи, который указывает местоположения в хранилище всех объектов файловой системы, участвующих в транзакции, для поддержания согласованного состояния файловой системы.
2
2
[0052] Когда модификация происходит сразу после контрольной точки, блок, именуемый блоком восстановления (который может дублироваться во множественных местоположениях) можно модифицировать для указания начала модифицированной логической копии (т.е. L). Поле в объекте в L указывает местоположение следующей записи. Это поле представляет связь в цепи планов записи, которые происходят между контрольными точками.
2
n
2
[0053] Совместно с отправкой запроса на запись логической копии, в таблицу объектов может быть внесено изменение. В частности, значение местоположения, индексированное идентификатором объекта, может быть задано равным значению местоположения, в котором нужно сохранить модифицированную логическую копию (т.е. L). Это делается так, чтобы последующий поиск местоположения объекта D давал местоположение L, новую версию объекта.
i
j
[0054] Если транзакция модифицирует более одного объекта, например D и D, объекты считаются “атомарно связанными” друг с другом и записываются в одном плане записи. План записи может указывать это соотношение (например, в ссылках на привлеченные объекты).
[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 не найдены изменения для всех объектов, измененных в контексте транзакции, все найденные изменения отвергаются. Другими словами, если изменения для одного из объектов найдены, но изменения для других объектов не найдены, изменения для одного из объектов отвергаются.
[0065] Для атомарного связывания двух или более объектов, в одном варианте осуществления, указатель может храниться или иначе быть связан с каждым объектом в хранилище 250. Указатель может указывать местоположение в хранилище другого объекта (или его части), участвующего в транзакции. В отсутствие дополнительных объектов, участвующих в транзакции, указатель может указывать на "мертвый блок" или указывать местоположение в хранилище "головного" объекта другого плана записи. Этот головной объект может содержать план записи, модифицированный объект (или его часть) плана записи и т.п.
[0066] Помимо указателей следующих местоположения в хранилище, в хранилище 250 также могут храниться данные для указания верного содержимого "указуемого" объекта. Например, может храниться хэш, который указывает верное содержимое указуемого объекта.
[0067] В примере, представленном на фиг.3, указатель связанный с объектом 322, может указывать местоположение в хранилище, связанное с объектом 323. Указатель связывает друг с другом два объекта. Если в ходе восстановления, какой-либо из объектов не удается найти, или он не имеет верного содержимого, изменения, представленные найденными объектами, можно отбрасывать.
[0068] Вследствие характера хранилища 250, может не гарантироваться, какой объект будет записан первым в энергонезависимую память хранилища 250. Если объект 322 записан первым, и объект 323 не записан, указатель от объекта 322 будет указывать местоположение в хранилище, где могут находиться ложные данные. Однако, вычисляя хэш данных в местоположение в хранилище и сравнивая этот хэш с хэшем, хранящимся с объектом 322, можно определить, что данные в местоположении 1000 являются неверными данными. В этом случае, в ходе восстановления, диспетчер восстановления (например, диспетчер 225 восстановления, показанный на фиг.2) может отвергать изменения, представленные объектами 322 и 323.
[0069] Блок 330 восстановления указывает первое местоположение в хранилище (в данном случае, местоположение 801), где данные, предположительно, сохраняются после контрольной точки. Блок 330 восстановления также может включать в себя или быть связан с хэшем, который вычисляется с использованием верного содержимого объекта, хранящегося в первом местоположении в хранилище.
[0070] На фиг.4 показана схема, обобщенно представляющая обновления, имеющие место в файловой системе, в соответствии с аспектами описанного здесь изобретения. Глобальные таблицы 405 включают в себя таблицу объектов, которая идентифицирует местоположения объектов в хранилище и данные выделения, касающиеся места в хранилище 250, которое было выделено. Также проиллюстрированы совершающиеся обновления 410. Когда обновление касается оси 415 времени, обновление завершается и больше не нуждается в модификации каких-либо глобальных таблиц 405. Каждая из линий обновления для обновлений 410 может представлять множественные обновления. Когда необходимо провести одновременно множественные обновления для поддержания согласованности, обновления можно проводить в контексте транзакций.
[0071] Чтобы контрольная точка была эффективной, контрольную точку нужно записывать в согласованном состоянии. При наличии файловой системы с функцией копирования при записи, при обновлении объекта, модифицированная логическая копия объекта сохраняется в новом местоположении файловой системы. Это новое местоположение отражается в таблице объектов посредством обновления таблицы объектов. Для согласованности, было бы неправильно, если бы таблица объектов отражала обновление, которое еще не было записано на диск, поскольку обновление может не полностью записаться на диск до отказа системы. Аналогично, было бы неправильно, если бы обновление завершалось и записывалось на диск, а также завершались другие обновления, связанные с транзакцией, но таблица объектов не показывала бы обновление.
[0072] Чтобы гарантировать согласованность, контрольную точку необходимо выбирать в тот момент, когда метаданные для обновления отражаются в глобальной таблице. Если каждая из линий, представляющих обновления 410, указывает период, когда глобальные таблицы 405 можно обновлять для обновления, осуществление создания контрольной точки в момент времени 520 может давать несогласованное состояние, тогда как осуществление создания контрольной точки в момент времени 525 будет давать согласованное состояние.
[0073] На фиг.5 показана блок-схема, иллюстрирующая иллюстративные контейнеры контрольных точек в соответствии с аспектами описанного здесь изобретения. Для решения вопросов, упомянутых выше, и других вопросов, каждое обновление может быть связано с контейнером контрольных точек (например, одним из контейнеров 515). Контейнер контрольных точек это логическое понятие, которое указывает, что глобальные таблицы необходимо обновить для учета, по меньшей мере, планов записи обновлений, связанных с контейнером контрольных точек, до того как данные контрольной точки будут записаны на диск. Другими словами, глобальные таблицы необходимо обновить для учета местоположения и информации выделения обновлений контейнера, несмотря на то, что обновления в данный момент могут быть записаны или не записаны в эти местоположения.
[0074] Периодически (например, по истечении таймера контрольной точки на основании окна восстановления, после проведения определенного количества операций записи, в случае превышения какого-либо другого порога и т.п.), можно производить определение для генерации контрольной точки. Когда это происходит, диспетчер контрольных точек может обновлять данные (например, структуру 510 данных), которые указывают контейнер контрольных точек для связывания с последующими обновлениями. Например, диспетчер контрольных точек может получать эксклюзивную привязку (например, привязку 505) на данных (например, структуре 510 данных), которые указывают текущий контейнер контрольных точек. После того как диспетчер контрольных точек получает эксклюзивную привязку на данных, диспетчер контрольных точек может обновлять данные для указания нового контейнера контрольных точек для последующих обновлений. Все последующие обновления связываются с новым контейнером контрольных точек, пока данные не изменятся для указания другого контейнера контрольных точек для последующих обновлений.
[0075] Контейнер контрольных точек можно рассматривать как логическое понятие и можно реализовать различными способами. Например, в одной реализации, контейнер контрольных точек можно реализовать как структуру данных, например список, который имеет указатели на каждое из обновлений, связанных с контейнером контрольных точек. В порядке другого примера, контейнер контрольных точек можно реализовать как данные, поддерживаемые для каждого обновления, где данные указывают контрольную точку, связанную с обновлением. В порядке другого примера, контейнер контрольных точек можно реализовать как подсчитывающий семафор. В этом примере, может быть не известно, какие обновления все еще нужно записывать на диск, но количество обновлений, которые все еще нужно записывать на диск, известно. В этом примере можно использовать привязку чтения/записи.
[0076] Вышеприведенные примеры не призваны охватывать всевозможные способы реализации контейнера контрольных точек. На самом деле, на основании изложенных здесь принципов, специалисты в данной области техники могут предложить многие другие механизмы для реализации контейнеров контрольных точек.
[0077] После указания контейнера контрольных точек для последующих обновлений (например, путем изменения структуры 510 данных), диспетчер контрольных точек может ожидать генерации планов записи для всех обновлений в текущем контейнере контрольных точек. После генерации планов записи для всех обновлений в текущем контейнере контрольных точек (но, возможно, не записанных в хранилище), диспетчер контрольных точек может брать снимок глобальных таблиц 405, показанных на фиг.4, и создавать план записи для записи мгновенного снимка глобальных таблиц 405 в хранилище. Мгновенный снимок можно создавать как логическую копию глобальных таблиц 405 посредством копирования при записи или других механизмов.
[0078] Возвращаясь к фиг.4, планы записи для обновлений, следующих после контрольной точки, могут генерироваться и записываться на диск, пока диспетчер контрольных точек ожидает генерации всех обновлений в текущем контейнере контрольных точек, и также пока диспетчер контрольных точек генерирует план записи для записи контрольной точки. Однако, когда диспетчеру контрольных точек нужно получить снимок глобальных таблиц, диспетчер контрольных точек может получить эксклюзивную привязку на глобальных таблицах 405 до создания снимка. Пока диспетчер контрольных точек имеет эксклюзивную привязку, планы записи все еще могут генерироваться для других обновлений, и эти планы записи могут даже сохраняться в хранилище, но глобальные таблицы (например, таблица объектов) не могут обновляться для указания этих планов записи, пока диспетчер контрольных точек не освободит свою эксклюзивную привязку. Совместно с освобождением привязки, диспетчер контрольных точек может отправлять сигнал (например, о наступлении события), который указывает, что разрешено создание следующей контрольной точки, и что последующие обновления могут обновлять глобальные таблицы.
[0079] Чтобы способствовать восстановлению, контрольную точку можно записывать на диск с кодом подтверждения для удостоверения контрольной точки согласно следующим правилам.
[0080] 1. Ожидать данных, указанных планами записи для записи на диск (например, ожидать все обновления, связанные с контрольная точка для записи на диск).
[0081] 2. Запросить запись на диск всех данных, связанных с контрольной точкой (например, запросить запись на диск логической копии метаданных).
[0082] 3. Выдать команду очистки или ожидать ее и ожидать подтверждения успешного завершения очистки.
[0083] 4. Сгенерировать код подтверждения для данных контрольной точки, которая была записана на диск. В одном варианте осуществления, код подтверждения может относиться к поднабору данных, записанному на диск. Например, если данные файла сохраняются в дереве, где каждый узел дерева включает в себя код подтверждения для его дочерних узлов, то код подтверждения может относиться к корневому узлу дерева. В этом варианте осуществления, код подтверждения можно записывать с корневым узлом и также можно использовать для удостоверения правильности кода подтверждения.
[0084] 5. Запросить запись на диск кода подтверждения (и любых связанных с ним данных, например, корневого узла). Заметим, что код подтверждения фактически может не поступать на диск до отказа системы. Если нет, контрольная точка не является пригодной контрольной точкой.
[0085] Согласно этим правилам, в ходе восстановления, если контрольная точка найдена в хранилище, и внутренний код подтверждения контрольной точки действителен, также предполагается, что другие данные, связанные с контрольной точкой, хранятся в хранилище и являются действительными. Если код подтверждения включен в корневой узел, другие данные в корневом узле (например, указатели на другие узлы в дереве) можно использовать для нахождения остальных данных, соответствующих контрольной точке.
[0086] В порядке альтернативы, код подтверждения для каждого обновления, связанный с контрольной точкой, можно записывать в хранилище. Например, контрольная точка может указывать блоки всех обновлений, которые, предположительно, имели место до контрольной точки и после предыдущей контрольной точки. Для каждого указанного блока, контрольная точка может сохранять код подтверждения, который указывает верное содержимое блока. В ходе восстановления согласно этой альтернативе, для удостоверения контрольной точки, каждый блок можно удостоверять по связанному с ним коду подтверждения контрольной точки.
[0087] Возвращаясь к фиг.2, в одном варианте осуществления, диспетчер 230 контрольных точек можно использовать для осуществления действий, включающих в себя.
[0088] 1. Определение первой контрольной точки для связывания с запросами на обновление объектов файловой системы. Как упомянуто ранее, диспетчер 230 контрольных точек может делать это путем обновления структуры данных (например, структуры 510 данных, показанных на фиг.5) для указания нового контейнера контрольных точек. Затем, при приеме каждого следующего запроса на обновление, запрос может назначаться новому контейнеру контрольных точек.
[0089] Заметим, что используемый здесь термин "первый" не означает именно первую контрольную точку; напротив, он используется для отличения от "второй" контрольной точки. Другими словами, при наличии N контрольных точек, первой контрольной точкой может быть любое X, где 1 <= X <= N, и второй контрольной точкой может быть любое Y, где 1 <= Y <= N и X <> Y.
[0090] 2. Определение, когда записывать данные контрольной точки, связанные с контрольной точкой, в хранилище файловой системы. Например, для определения, что пришло время записать данные контрольной точки, можно использовать критерий истечения таймера контрольной точки, превышения количества обновлений или какой-либо другой порог.
[0091] 3. Определение второй контрольной точки для последующих запросов на обновление объектов файловой системы. Как упомянуто ранее, диспетчер 230 контрольных точек может делать это путем обновления структуры данных (например, структуры 510 данных, показанной на фиг.5) после получения эксклюзивной привязки (например, привязки 505) на структуре данных.
[0092] 4. Ожидание согласованного состояния файловой системы с разрешением подготовки к записи данных для последующих запросов. Согласованное состояние имеет место, когда все обновления, связанные с текущим контейнером контрольных точек, представлены (например, были успешно записаны) в хранилище. Разрешение подготовки к записи данных для последующих запросов включает в себя разрешение генерации планов записи и их записи в хранилище для последующих запросов, но не разрешение обновления метаданных (например, глобальных таблиц) до тех пор, пока не будет создана логическая копия метаданных.
[0093] 5. Создание логической копии метаданных файловой системы. Это можно делать, беря снимок глобальных таблиц, как упомянуто ранее.
[0094] 6. Запись логической копии метаданных в хранилище. В одном варианте осуществления, это может включать в себя запрашивание записи логической копии в хранилище и ожидание подтверждения, что логическая копия записана в хранилище. В другом варианте осуществления, это может включать в себя маркировку копии в хранилище как чистой, чтобы последующие обновления метаданных приводили к копированию при записи до разрешения обновлений.
[0095] 7. Запись, по меньшей мере, одного кода подтверждения в хранилище. Как упомянуто ранее, код подтверждения можно использовать для определения, были ли обновления до контрольной точки записаны в хранилище, а также действительна ли сама запись контрольной точки.
1
2
[0096] API 215 может принимать запрос на модификацию объекта, участвующего в транзакции. В ответ, диспетчер 235 ввода/вывода может определять местоположение объекта в местоположении в хранилище (например, L) хранилища, создавать логическую копию объекта, вносить изменения в объект в контексте транзакции, определять второе местоположение в хранилище (например, L) для сохранения логической копии в случае изменения, посылать запрос на запись логической копии в случае изменения на контроллер 240 хранилища и обновлять энергозависимую структуру данных (например, таблицу 310 объектов) для указания, что логическая копия хранится во втором местоположении в хранилище.
[0097] Если API 215 принимает запрос на модификацию другого объекта, участвующего в транзакции, диспетчер 235 ввода/вывода может осуществлять дополнительные действия, включающие в себя создание ассоциации (например, плана записи), которая связывает другой объект с первым объектом. Затем, совместно с отправкой запроса на запись модификаций объектов в хранилище, диспетчер 235 ввода/вывода также может отправлять запрос на запись ассоциации на контроллер 240 хранилища.
[0098] На фиг.6-8 показаны логические блок-схемы операций, обобщенно представляющие иллюстративные действия, которые могут происходить в соответствии с аспектами описанного здесь предмета изобретения. Для простоты объяснения, методология, описанная со ссылкой на фиг.6-8, изображена и описана как последовательность действий. Очевидно, что аспекты описанного здесь предмета изобретения не ограничиваются проиллюстрированными действиями и/или другими действиями. В одном варианте осуществления, действия происходят в описанном ниже порядке. Однако в других вариантах осуществления действия могут происходить параллельно, в другом порядке и/или совместно с другими действиями, не представленными или не описанными в данном описании изобретения. Кроме того, не все проиллюстрированные действия могут потребоваться для реализации методологии в соответствии с аспектами описанного здесь изобретения. Кроме того, специалистам в данной области техники очевидно, что методологию альтернативно можно представить как последовательность взаимосвязанных состояний посредством диаграммы состояний или в виде событий.
[0099] Согласно фиг.6, на этапе 605 действия начинаются. На этапе 610 делается указание, что первый набор обновлений подлежит связыванию с первой контрольной точкой. Это можно делать, модифицируя структуру данных для указания того, что последующие обновления подлежат связыванию с первой контрольной точкой. Это может предусматривать, например, получение и освобождение привязки и обновление указателя или другой структуры данных для указания на контейнер контрольных точек, как упомянуто ранее. Заметим, что слово "первый", опять же, может означать любую контрольную точку файловой системы и используется для отличения этой контрольной точки от следующей контрольной точки. Например, согласно фиг.2 и 5, диспетчер 230 контрольных точек может получать привязку 505 на структуре 510 данных и обновлять указатель для указания одного из контейнеров 515 контрольных точек.
[00100] На этапе 615 обновления принимаются и связываются с первой контрольной точкой. Например, согласно фиг.2, диспетчер 235 ввода/вывода может принимать запросы обновления от приложения(й) 210 через API 215. По мере приема обновлений, они могут связываться с контрольной точкой.
[00101] На этапе 620 производится определение в отношении записи данных контрольной точки для первой контрольной точки в хранилище файловой системы. Например, согласно фиг.2, диспетчер 230 контрольных точек может определить, что таймер контрольной точки истек, и на этом основании может определить, что контрольную точку нужно записать в хранилище 250.
[00102] На этапе 625 получается привязка на структуре данных для указания контрольных точек для последующих обновлений. Например, согласно фиг.2 и 5, диспетчер 230 контрольных точек может получать привязку 505 на структуре 510 данных.
[00103] На этапе 630 структура данных обновляется для указания на другую контрольную точку. Модификация этой структуры данных указывает, что любые обновления, которые происходят после первого набора обновлений, подлежат связыванию со следующей контрольной точкой. Например, согласно фиг.2 и 5, диспетчер 230 контрольных точек может обновлять структуру 510 данных для указания на другой из контейнеров 515 контрольных точек.
[00104] На этапе 635 привязка освобождается. Например, согласно фиг.2 и 5, диспетчер 230 контрольных точек может освобождать привязку 505.
[00105] На этапе 640 генерируются планы записи для обновлений. Каждый план записи указывает по меньшей мере, запланированное местоположение в хранилище для данных, представляющих, по меньшей мере, одно из первого набора обновлений. Например, согласно фиг.2, диспетчер 237 планов записи может участвовать в создании планов записи для обновлений, связанных с контрольной точкой.
[00106] На этапе 645 метаданные обновляется для планов записи. Эти метаданные указывают местоположения в хранилище для планов записи (хотя планы записи могут уже быть записаны или еще не быть записаны в хранилище). Например, согласно фиг.2, диспетчер 237 планов записи может обновлять глобальные таблицы для указания местоположений в хранилище для объектов, модифицированных согласно планам записи.
[00107] После этапа 645 действия продолжаются на этапе 705, показанном на фиг.7. Согласно фиг.7, на этапе 705, получается привязка для метаданных. Например, согласно фиг.2 и 4, диспетчер 230 контрольных точек может получать привязку на глобальных таблицах 405. Диспетчер 230 контрольных точек может ожидать, пока метаданные не отразят местоположения в хранилище для всех обновлений в первом наборе обновлений (несмотря на то что все эти обновления могут быть записаны или не записаны в эти местоположения в хранилище).
[00108] На этапе 710 создается логическая копия метаданных. Как упомянуто ранее, это может предусматривать создание новой копии метаданных, маркировку метаданных как чистых, чтобы последующие обновления метаданных приводили к копированию при записи, или какой-либо другой механизм логического копирования. Например, согласно фиг.2 и 4, диспетчер 230 контрольных точек может создавать логическую копию глобальных таблиц 405.
[00109] На этапе 715 привязка освобождается. Например, согласно фиг.2 и 4, диспетчер 230 контрольных точек может освобождать привязку на глобальных таблицах 405.
[00110] На этапе 720 создается план записи для записи первых данных контрольной точки. Создание этого плана записи может происходить параллельно с генерацией (и записью на диск) планов записи для обновлений, следующих после контрольной точки, а также данные соответствующих текущим планам записи, записываемым на диск. Например, согласно фиг.2, диспетчер 230 контрольных точек может использовать диспетчер 237 планов записи для создания плана записи для данных контрольной точки для первой контрольной точки. Эти данные могут включать в себя вышеупомянутую логическую копию глобальных таблиц.
[00111] На этапе 725 в одном варианте осуществления, диспетчер контрольных точек может ожидать успешной записи всех обновлений первого набора обновлений в хранилище. После успешной записи всех обновлений в хранилище, диспетчер обновлений может записывать окончательную запись контрольной точки, которая включает в себя код подтверждения. Как упомянуто ранее, это позволяет, при восстановлении, просто проверять код подтверждения для определения, предполагается ли, что все обновления, соответствующие контрольной точке, записаны в хранилище.
[00112] В другом варианте осуществления, диспетчер контрольных точек может записывать несколько кодов подтверждения в записи контрольной точки. Эти коды подтверждения могут быть связаны с местоположениями в хранилище для обновлений первого набора обновлений. В этом варианте осуществления, диспетчер контрольных точек может ожидать записи эти обновлений в хранилище, или может записывать запись контрольной точки без ожидания. При выборе последнего варианта, нахождение подходящей контрольной точки в ходе восстановления может использоваться в большей степени, чем проверка присутствия пригодной записи контрольной точки на диске.
[00113] На этапе 730 данные контрольной точки могут записываться в хранилище. Это может предусматривать, например, запись плана записи, связанного с данными контрольной точки в хранилище. В порядке другого примера, это может предусматривать запись в хранилище записи контрольной точки, которая ссылается на логическую копию глобальных таблиц. Например, согласно фиг.2, диспетчер 230 контрольных точек может запрашивать запись в хранилище плана записи, соответствующего данным контрольной точки.
[00114] На этапе 735 по меньшей мере один код подтверждения записывается в хранилище. Запись, по меньшей мере, одного кода подтверждения в хранилище может комбинироваться с записью в хранилище записи контрольной точки, которая ссылается на логические копии глобальных таблиц. Например, согласно фиг.2, диспетчер 230 контрольных точек может записывать в хранилище запись контрольной точки, которая ссылается на логические копии глобальных таблиц и которая включает в себя код подтверждения для проверки содержимого записи контрольной точки.
[00115] На этапе 740 могут осуществляться другие действия, если таковые предусмотрены.
[00116] Согласно фиг.8, на этапе 805, действия начинаются. На этапе 810 принимается запрос на восстановление. Например, согласно фиг.2, диспетчер 225 восстановления может принимать запрос на восстановление для осуществления восстановления для данных, хранящихся в хранилище 250.
[00117] На этапе 815 производится определение местоположения данных контрольной точки. Например, согласно фиг.2, диспетчер 225 восстановления может определять местоположение самых поздних данных контрольной точки, хранящихся в хранилище 250 (или каком-либо другом хранилище).
[00118] На этапе 820 данные контрольной точки удостоверяются с использованием кода подтверждения. Например, согласно фиг.2, диспетчер 225 восстановления может вычислять контрольную сумму данных контрольной точки и сравнивать эту контрольную сумму с контрольной суммой, хранящейся с данными контрольной точки. Если контрольные суммы совпадают, контрольную точку можно считать пригодной. Если требуется дополнительное подтверждение, диспетчер восстановления может пытаться удостоверять один или более объектов, указанных в глобальных таблицах, на которые ссылаются данные контрольной точки.
[00119] На этапе 825 могут осуществляться другие действия, если таковые предусмотрены.
[00120] Как следует из вышеизложенного подробного описания, были описаны аспекты, относящиеся к контрольным точкам для файловой системы. Хотя аспекты описанного здесь изобретения допускают различные модификации и альтернативные конструкции, определенные проиллюстрированные варианты их осуществления показаны на чертежах и подробно описаны выше. Однако следует понимать, что нет никакого намерения ограничивать аспекты заявленного изобретения конкретными раскрытыми формами, но напротив, есть намерение охватить все модификации, альтернативные конструкции и эквиваленты в рамках сущности и объема различных аспектов описанного здесь изобретения.