Способ и система для поддержания согласованности пространства имен с файловой системой

Иллюстрации

Показать все

Изобретение относится к вычислительной технике, в частности к способу выполнения фильтром отслеживания запросов ввода/вывода. Техническим результатом является увеличение быстродействия компьютерной системы. Способ включает: создание экземпляра фильтра файловой системы, ассоциированного с файловой системой, регистрируют фильтр с помощью механизма регистрации, реализуемого в средстве управления фильтрами; уведомляют посредством фильтра средство управления фильтрами о по меньшей мере одном типе запроса ввода/вывода, в котором он заинтересован; задают посредством фильтра, должен ли фильтр быть уведомлен о предварительных обратных вызовах для упомянутого по меньшей мере одного типа запроса ввода/вывода; задают посредством фильтра, должен ли фильтр быть уведомлен о последующих обратных вызовах; поддерживают пространство имен, ассоциированное с фильтром, отличное от пространства имен файловой системы; принимают запрос ввода/вывода; определяют, что объект является объектом, представляющим интерес для фильтра; определяют действие фильтра, ассоциированное с принятым запросом ввода/вывода, выполняют это действие; и обновляют пространство имен, ассоциированное с фильтром, на основе принятого запроса ввода/вывода. 2 н. и 20 з.п. ф-лы, 15 ил.

Реферат

Область техники, к которой относится изобретение

Это изобретение относится в общем к компьютерам и более конкретно к файловым системам.

Предшествующий уровень техники

В современных операционных системах, таких как операционная система Windows XP корпорации Microsoft Corporation, с лежащей в основе файловой системой, такой как Windows NTFS (файловая система Windows NT), FAT, CDFS, редиректорная файловая система SMB или файловые системы WebDav, один или более драйверов фильтров файловой системы могут вставляться между средством управления вводом/выводом (I/O менеджером), которое принимает пользовательские I/O запросы, и драйвером файловой системы. В общем, драйверы фильтров (иногда называемые здесь просто как фильтры) - это процессы, которые усиливают лежащую в основе файловую систему посредством выполнения различных относящихся к файлам вычислительных задач, которые нужны пользователям, включая задачи, такие как передача I/O запросов и данных файловой системы через антивирусное программное обеспечение, средства обеспечения квот файловой системы, репликаторы файлов и продукты шифрования/сжатия.

Например, антивирусные продукты предоставляют фильтр, который наблюдает за I/O в отношении определенных типов файлов (.exe, .doc и подобных), осуществляя поиск сигнатур вирусов, в то время как продукты репликации файлов выполняют зеркальное отражение на уровне файловой системы. Другие типы драйверов фильтров файловой системы нацелены на восстановление системы (которое сохраняет системные файлы, когда вот-вот должны делаться изменения, так что пользователь может возвратиться в исходное состояние), навязывание дисковых квот, резервное копирование открытых файлов, отмену удаления удаленных файлов, шифрование файлов и так далее. Таким образом, посредством установки драйверов фильтров файловой системы пользователи компьютера могут выбирать признаки файловой системы, которые они хотят и которые им нужны, способом, который делает возможным обновления, замену, вставку и удаление компонентов без изменения реально существующей операционной системы или кода драйвера файловой системы.

Фильтр файловой системы может поддерживать внутренние метаданные для файлов и директорий в томе. Изменения в отношении тома, с которым ассоциирован некоторый фильтр, могут стать причиной того, что внутренние метаданные фильтра станут несинхронизированными с состоянием этого тома. Это может служить причиной того, что фильтр будет вести себя некорректно или указывать, что он неспособен выполнять свою требуемую функцию.

То, что необходимо - это способ и система для поддержания согласованности пространства имен между выбранными объектами, поддерживаемыми файловой системой, и фильтром, ассоциированным с ними.

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

Кратко, настоящее изобретение предоставляет способ и систему для поддержания согласованности пространства имен между выбранными объектами, поддерживаемыми файловой системой, и фильтром, ассоциированным с ней. Процесс запрашивает доступ к некоторому объекту файловой системы. Фильтр отслеживает выбранные типы запросов (или операций, ассоциированных с ними) и определяет, находится ли этот объект внутри пространства имен, ассоциированного с этим фильтром. Пространство имен, ассоциированное с фильтром, обновляется, базируясь на изменении в отношении объекта.

В одном аспекте этого изобретения запрос содержит операцию переименования или удаления. Объект находится внутри пространства имен, ассоциированного с фильтром, если этот объект имеет ассоциированную с ним политику или если этот объект является предком такого объекта.

В другом аспекте этого изобретения операция переименования может служить причиной того, что объект перемещается и/или переименовывается.

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

В одном аспекте этого изобретения поддержание согласованности пространства имен позволяет фильтрам применять политики к объектам, когда объекты переименовываются, и останавливать применение политик к объектам, которые удалены.

Другие аспекты станут видны из последующего подробного описания, взятого в связи с чертежами.

Перечень чертежей

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

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

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

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

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

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

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

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

фиг.9 - диаграмма последовательности операций, в общем представляющая действия, которые соответствуют этапу 815 по фиг.8, которые могут происходить при добавлении узлов, когда объект перемещается, в соответствии с различными аспектами этого изобретения;

фиг.10 - диаграмма последовательности операций, которая в общем представляет действия, которые соответствуют этапу 825 по фиг.8, которые могут происходить при обновлении структуры данных для удаления префиксных узлов, ассоциированных со старым именем объекта, в соответствии с различными аспектами этого изобретения;

фиг.11 - диаграмма последовательности операций, которая в общем представляет действия, которые соответствуют этапу 640 по фиг.6, которые могут происходить для поддержания согласованности между пространством имен фильтра и пространством имен файловой системы в течение относящихся к удалению операций, в соответствии с различными аспектами этого изобретения;

фиг.12 - диаграмма последовательности операций, которая в общем представляет действия, которые соответствуют этапу 1115 по фиг.11, которые могут происходить, когда принимается операция создания для удаления при закрытии, в соответствии с различными аспектами этого изобретения;

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

фиг.14 - диаграмма последовательности операций, которая в общем представляет действия, которые соответствуют этапу 1135 по фиг.11, которые могут происходить, когда принимается операция задания состояния, в соответствии с различными аспектами этого изобретения; и

фиг.15 - диаграмма последовательности операций, которая в общем представляет действия, которые соответствуют этапу 1145 по фиг.11, которые могут происходить, когда принимается операция очистки, в соответствии с различными аспектами этого изобретения.

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

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

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

Это изобретение является работоспособным с многочисленными другими средами или конфигурациями вычислительных систем общего назначения или специального назначения. Примеры широко известных вычислительных систем, сред и/или конфигураций, которые могут быть подходящими для использования с этим изобретением, включают в себя, но не ограничены этим, персональные компьютеры, серверные компьютеры, ручные или портативные устройства, многопроцессорные системы, базирующиеся на микроконтроллерах системы, приставки к телевизору, программируемую бытовую электронику, сетевые PC, миникомпьютеры, компьютеры-мэйнфреймы, распределенные вычислительные среды, которые включают в себя любые из вышеперечисленных систем или устройств, и подобное.

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

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

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

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

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

Дисководы и накопители и их ассоциированные компьютерные носители данных, обсуждавшиеся выше и показанные на фиг.1, предоставляют хранилище машиночитаемых инструкций, структур данных, программных модулей и других данных для компьютера 110. На фиг.1, например, накопитель 141 на жестких дисках показан как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и данные 147 программ. Заметим, что эти компоненты могут быть либо такими же как, либо отличающимися от операционной системы 134, прикладных программ 135, других программных модулей 136 и данных 137 программ. Операционной системе 144, прикладным программам 145, другим программным модулям 146 и данным 147 программ здесь даны другие ссылочные позиции, чтобы показать, что, по меньшей мере, они являются другими копиями. Пользователь может вводить команды и информацию в компьютер 20 через устройства ввода, такие как клавиатура 162 и координатно-указательное устройство 161, обычно упоминаемое как мышь, шаровой манипулятор или сенсорная панель. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую приставку, спутниковую параболическую антенну, сканер, чувствительный к прикосновениям экран ручного PC или другого записывающего планшета или подобное. Эти и другие устройства ввода часто подсоединяются к устройству 120 обработки данных через интерфейс 160 пользовательского ввода, который соединен с системной шиной, но могут подсоединяться посредством других структур интерфейсов и шин, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 191 или другой тип устройства отображения также подсоединяется к системной шине 121 через некоторый интерфейс, такой как видеоинтерфейс 190. В дополнение к монитору компьютеры могут также включать в себя другие периферийные устройства вывода, такие как громкоговорители 197 и принтер 196, который может подсоединяться через периферийный интерфейс 190 вывода.

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

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

Поддержание согласованности пространства имен

Фиг.2 - это блок-схема, представляющая иллюстративную компоновку компонентов системы, в которой может работать настоящее изобретение, в соответствии с различными аспектами этого изобретения. Эти компоненты включают в себя одно или более приложений 205, интерфейс 210 прикладного программирования (API), менеджер 215 ввода/вывода (I/O менеджер), менеджер 220 фильтров, файловую систему 225 и один или более фильтров 230-232.

Приложения 205 могут делать запросы файловой системы (например, через вызовы функции/метода) через API 210 к I/O менеджеру 215. I/O менеджер 215 может определять, какой I/O запрос или запросы должны выдаваться, чтобы исполнить каждый запрос и отправлять каждый I/O запрос менеджеру 220 фильтров. I/O менеджер 215 также может возвращать данные приложениям 205 по мере того, как операции, ассоциированные с запросами файловой системы, продолжаются, завершаются или преждевременно прекращаются.

В одном варианте осуществления фильтры содержат объекты или подобное, которые при создании их экземпляров регистрируются (например, в течение процедуры их инициализации) с помощью механизма регистрации в менеджере 220 фильтров. Для эффективности каждый фильтр обычно регистрируется только для запросов файловой системы, в которых он может быть заинтересован при обработке. С этой целью, в качестве части регистрации, каждый фильтр уведомляет менеджер 220 фильтров о типах I/O запросов, в которых он заинтересован (например, создания, чтения, записи, закрытия, переименования и так далее). Например, фильтр шифрования может регистрироваться для чтения и записи вводов/выводов, но не для других, причем данные не должны шифроваться или дешифроваться. Аналогично, фильтр квот может интересоваться только созданием объектов и записью объектов.

В дополнение к определению типов I/O запросов, в которых он заинтересован, фильтр может дополнительно определять, должен ли этот фильтр уведомляться в отношении предварительных обратных вызовов и последующих обратных вызовов для каждого из типов I/O. Предварительный обратный вызов вызывается, когда данные, ассоциированные с I/O запросом, проходят от I/O менеджера 215 к файловой системе 225, в то время как последующий обратный вызов вызывается в течение завершения I/O запроса, когда данные, ассоциированные с этим I/O запросом, проходят из файловой системы 225 к I/O менеджеру 215.

Из каждого I/O запроса менеджер 220 фильтров может создавать структуру данных в едином формате, подходящем для использования фильтрами 230-232. Ниже эта структура данных иногда указывается как данные обратного вызова. Затем менеджер 220 фильтров может вызывать и передавать данные обратного вызова каждому фильтру, который зарегистрировался, чтобы принимать обратные вызовы для типа I/O, принятого менеджером 220 фильтров. Любые фильтры, зарегистрированные, чтобы принимать обратные вызовы для типа вводов/выводов, принятых менеджером фильтров, иногда указываются как зарегистрированные фильтры.

Обычно менеджер 220 фильтров передает данные обратного вызова, ассоциированные с конкретным типом I/O запроса, каждому зарегистрированному фильтру последовательно в порядке, в котором зарегистрированные фильтры упорядочены. Например, если фильтры 230 и 232 зарегистрированы, чтобы принимать обратные вызовы для всех I/O запросов чтения, и упорядочены так, что фильтр 230 находится перед фильтром 232 при обработке таких запросов, то после приема прочитанного I/O менеджер 220 фильтров может сначала вызвать и передать данные обратного вызова фильтру 230, и после того, как фильтр 230 обработает эти данные обратного вызова, менеджер 220 фильтров затем может вызвать и передать эти данные обратного вызова (как модифицированные, если вообще передает) фильтру 232.

Фильтр может быть прикреплен к одному или более томам. То есть фильтр может быть зарегистрирован, чтобы вызываться и принимать данные обратного вызова для вводов/выводов, относящихся только к одному или более чем одному тому.

Фильтр может сгенерировать свой собственный I/O запрос, который затем может передаваться другим фильтрам. Например, антивирусный фильтр может желать прочитать файл до его открытия. Фильтр может остановить I/O запрос от дальнейшего прохождения и может инструктировать менеджер фильтров докладывать код состояния (например, успех или неудачу) для этого I/O запроса. Фильтр может хранить данные в памяти и сохранять эти данные на диск. В общем, фильтр может создаваться, чтобы выполнять любое множество действий, которые могут выполняться процессом режима ядра или пользовательского режима, и может являться реагирующим (например, ждать, когда он примет I/O запросы до осуществления действий) и/или упреждающим (например, инициировать свои собственные I/O запросы или выполнять другие действия асинхронно с I/O запросами, обрабатываемыми I/O менеджером 215).

В одном варианте осуществления фильтры могут быть организованы стековым способом, как показано на фиг.3, которая является блок-схемой, представляющей другую иллюстративную компоновку компонентов системы, в которой настоящее изобретение может работать, в соответствии с различными аспектами этого изобретения. В этом варианте осуществления каждый из фильтров 305-307 может обрабатывать I/O запросы и передавать эти запросы (модифицированные или немодифицированные) другому фильтру или другому компоненту в стеке. Например, в ответ на запрос чтения, принятый от одного из приложений 205, I/O менеджер 215 может выдать I/O запрос и отправить этот запрос фильтру 305. Фильтр 305 может проанализировать этот I/O запрос и определить, что фильтр 305 не интересуется этим I/O запросом, и затем передать этот I/O запрос неизмененным фильтру 306. Фильтр 306 может определить, что фильтр 306 выполнит некоторое действие, базируясь на этом I/O запросе, и затем может передать этот I/O запрос (измененный или неизмененный) фильтру 307. Фильтр 307 может определить, что фильтр 307 не интересуется этим I/O запросом, и передать этот I/O запрос файловой системе 235.

После того как файловая система 235 обслужит I/O запрос, она передает результаты фильтру 307. Обычно результаты передаются в порядке, обратном тому, в котором I/O запрос проходил (например, сначала к фильтру 307, затем к фильтру 306 и затем к фильтру 305). Каждый из фильтров 305-307 может анализировать результаты, определить, заинтересован ли фильтр в этих результатах, и может выполнять действия, базируясь на этом, до передачи результатов (измененных или неизмененных) далее другому фильтру или компоненту.

В другом варианте осуществления этого изобретения фильтры могут быть организованы стековым/управляемым способом, как показано на фиг.4, которая является блок-схемой, представляющей другую иллюстративную компоновку компонентов системы, в которой настоящее изобретение может работать, в соответствии с различными аспектами этого изобретения. В этой конфигурации некоторые фильтры ассоциированы с менеджером фильтров, в то время как другие фильтры нет. Менеджер 220 фильтров помещается в стек с другими фильтрами (например, фильтрами 305 и 307).

Должно быть понятно, что фильтры могут быть реализованы во многих других конфигурациях без отхода от сущности или объема этого изобретения. В некоторых вариантах осуществления фильтр содержит любой объект, который анализирует I/O между приложением и файловой системой и который способен изменять, совершать или преждевременно прекращать I/O или выполнять другие действия, базирующиеся на этом анализе.

Возвращаясь к фиг.2, файловая система 235 может включать в себя один или более томов, которые могут располагаться локально или удаленно для машины или машин, на которых исполняются приложения 205.

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

Определенные запросы файловой системы (например, переименования и удаления) могут изменять пространство имен файловой системы для объектов, отслеживаемых фильтром. Например, фильтр квот может быть сконфигурирован так, чтобы навязывать квоту, равную одному гигабайту для объекта, называемого C:\DIR\QUOTA.

Имя объекта и квота, применяемая к этому объекту, могут храниться в файле метаданных, который сохраняется в энергонезависимом хранилище. Приложение может переименовать объект C:\DIR в C:\DIR2 или может переместить C:\DIR\QUOTA в C:\QUOTA. Чтобы продолжать навязывать квоту для объекта QUOTA, фильтр квот отслеживает переименования и обновляет свой файл метаданных каждый раз, когда переименование затрагивает какой-либо объект, для которого этот фильтр квот навязывает какую-либо квоту.

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

В дополнение, приложение может удалить объект, например, C:\DIR или C:\DIR\QUOTA. Чтобы избежать отслеживания объектов, которые были удалены, не следует навязывать политики, когда существующий объект удаляется, и на его месте создается новый объект с тем же именем, и чтобы уменьшить размер метаданных, используемых в отслеживании таких объектов, фильтр может отслеживать удаления и обновлять свои метаданные соответственно.

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

Структура данных включает в себя узел для каждого интересующего объекта и иногда указывается как префиксное дерево. Представленные иллюстративные объекты включают в себя корневую директорию \, \DIR1, \DIR1\QUOTA1, \DIR1\QUOTA1\QUOTA2, \DIR2, \DIR2\DIR3 и \DIR2\DIR3\QUOTA3. Объекты \DIR1\QUOTA1, \DIR1\QUOTA1\QUOTA2 и \DIR2\DIR3\QUOTA3 имеют применяемые к ним политики P1, P2 и P3 соответственно. Политика может содержать квоту на дисковое пространство, используемое каким-либо объектом и его потомками (например, поддиректориями), файлами, разрешенными в объекте и его потомках, что позволяется и/или не позволяется по отношению к объекту и его потомкам и подобное. Когда в файловой системе интересующий объект переименовывается или удаляется, может требоваться обновить структуру данных, показанную на фиг.5. Такие обновления могут включать в себя удаление узлов, добавление дополнительных узлов и изменение содержимого узлов, как описывается более детально ниже.

В общем, объект представляет интерес, если переименование или удаление этого объекта повлияет на обнаружение этого объекта в структуре данных или применение некоторой политики. Например, если \DIR2 и ее поддиректории были удалены, политика P3 больше не должна применяться к \DIR2\DIR3\QUOTA3. Более того, узлы DIR2, DIR3 и QUOTA3 больше не должны применять политику P3 и могут быть удалены, чтобы сохранить пространство и уменьшить время поиска для любых оставшихся политик.

В качестве другого примера, если в файловой системе \DIR1\QUOTA1\QUOTA2 переименовывается в \QUOTA5, это может повлиять на поиск нового объекта в структуре данных. Это важно, так как перед тем, как фильтр применит некоторую политику к конкретной операции, этот фильтр должен знать, может ли операция затронуть какие-либо объекты, для которых были установлены политики. Чтобы найти новый объект в структуре данных (например, чтобы фильтр мог определить, должен ли он навязывать какую-либо политику для некоторой конкретной операции), может создаваться и ассоциироваться с этим новым объектом новый узел, затем политики, ассоциированные со старым узлом QUOTA2 (например, P2), могут копироваться в этот новый узел, и затем старый узел QUOTA2 может быть удален. Затем для этого нового объекта могут навязываться политики P2. Добавление и удаление узлов в ответ на изменения в отношении объектов описываются более детально в связи с фиг.8-10.

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

Структура данных может реконструироваться во время начальной загрузки или запуска экземпляра фильтра, который использует эту структуру данных. Это может делаться при использовании метафайла, описанного выше, который хранится в энергонезависимом хранилище (например, диске).

Структура данных может совместно использоваться между более чем одним фильтром. Например, два или более фильтра могут навязывать политики объектам, которые могут переименовываться или удаляться. Вместо поддержания отдельной копии структуры данных для каждого фильтра, эти два или более фильтров могут совместно использовать структуру данных. Один или более из этих фильтров могут назначаться для содержания структуры данных в синхронизме с файловой системой.

Более того, даже хотя фильтры могут совместно использовать структуру данных, они могут не желать отслеживать все одни и те же объекты. С этой целью могут поддерживаться дополнительные данные, которые показывают, в каких узлах каждый фильтр заинтересован.

Фиг.6 - это диаграмма последовательности операций, которая в общем представляет действия, которые могут происходить, чтобы поддерживать согласованность между пространством имен фильтра и пространством имен файловой системы для интересующих объектов, в соответствии с различными аспектами этого изобретения. На этапе 605 процесс начинается. На этапе 610 фильтр принимает интересующую I/O операцию. В случае управляемых фильтров, фильтр может предварительно зарегистрироваться, чтобы принимать I/O операции принятого типа. В случае стековых фильтров фильтр может определять, что I/O является тем, который может затрагивать пространство имен файловой системы. В одном варианте осуществления некоторые I/O операции, которые могут затрагивать пространство имен файловой системы, включают в себя переименование и удаление.

На этапе 615 делается определение в отношении того, относится ли эта I/O операция к интересующему объекту. Если это так, процесс ответвляется на этап 625; иначе, процесс ответвляется на этап 620, где процесс завершается. Ссылаясь на фиг.5, интересующий объект - это объект, представленный любым узлом структуры данных. После приема данных, ассоциированных с интересующей I/O операцией, фильтр затем может выполнить поиск по структуре данных, чтобы определить, затрагивает ли эта I/O операция какие-либо узлы. Если нет (например, поиск терпит неудачу), фильтр может выдать результат.

На этапе 625 делается определение в отношении того, является ли I/O операция операцией переименования. Если это так, процесс ответвляется на этап 630; иначе, процесс ответвляется на этап 635. В другом варианте осуществления действия, ассоциированные с этапами 615 и 610, меняют направление на обратное. То есть сначала делается определение в отношении того, что I/O операция включает в себя интересующий объект, и затем делается определение в отношении того, является ли эта I/O операция интересующей. В этом варианте осуществления, если I/O не затрагивает интересующий объект или если этот I/O не является интересующим I/O, процесс завершается.

На этапе 630 пространство имен фильтра обновляется по обстоятельствам, как описывается более детально в связи с фиг.7-10. На этапе 632 контекст потока, ассоциированный с объектом, обновляется, если контекст потока существует, как описано более детально в связи с фиг.13. Контекст потока содержит данные, в которых может храниться и извлекаться информация об объекте. Контекст потока может создаваться для объекта, например, когда объект был отмечен для удаления. Даже хотя объект может быть отмечен для удаления, он может переименовываться до его удаления. Чтобы отследить имя объекта сквозь переименования, новое имя объекта сохраняется в контексте потока. Каждый раз как объект переименовывается, контекст потока обновляется, чтобы включать в се