EA 013001B1 20100226 Номер и дата охранного документа EA200900001 20090111 Регистрационный номер и дата заявки US11/972,556 20080110 Регистрационные номера и даты приоритетных заявок EAB1 Код вида документа EAb21001 Номер бюллетеня [JPG] EAB1\00000013\001BS000#(83:77) Основной чертеж [RU] СПОСОБ И УСТРОЙСТВО ДЛЯ УПРАВЛЕНИЯ КОМПЬЮТЕРНОЙ ФАЙЛОВОЙ СИСТЕМОЙ С ИСПОЛЬЗОВАНИЕМ ДЕРЕВЬЕВ ФАЙЛОВОЙ СИСТЕМЫ Название документа [8] G06F 12/02 Индексы МПК [RU] Тормасов Александр Геннадьевич Сведения об авторах [US] ПАРАЛЛЕЛЗ ХОЛДИНГЗ, ЛТД. (US) Сведения о патентообладателях [US] ПАРАЛЛЕЛЗ ХОЛДИНГЗ, ЛТД. (US) Сведения о заявителях US 7293033 B1 WO 2003088002 A2 WO 2007117363 A1 WO 2007130209 A1 Цитируемые документы
 

Патентная документация ЕАПВ

 
Запрос:  ea000013001b*\id

больше ...

Термины запроса в документе

Реферат

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


Формула

[0001] Способ для управления компьютерной файловой системой, заключающийся в том, что

[0002] Способ управления компьютерной файловой системой по п.1, в котором сетевая вычислительная система расположена на локальной вычислительной системе.

[0003] Способ для управления компьютерной файловой системой, заключающийся в том, что

[0004] Способ для управления компьютерной файловой системой по п.3, в котором сетевое хранилище данных расположено на локальной вычислительной системе.

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

[0006] Способ по п.3, в котором запрошенный файл хранится на сетевом хранилище данных, а дополнительно распознают часть файла, запрошенную ВСИПО, копируют указанную часть в локальное хранилище данных и обеспечивают доступ к указанной части, с созданием видимости наличия всего запрошенного файла на локальном хранилище данных.

[0007] Способ по п.3, в котором общее дерево файловой системы с шаблонными файлами содержит фиктивные файлы, которые обеспечивают возможность обращения к файлам на сетевом хранилище данных.

[0008] Способ по п.7, в котором фиктивные файлы содержат метаданные.

[0009] Способ по п.3, в котором файловые системы ВСИПО хранят на локальном хранилище данных.

[0010] Способ по п.3, в котором общее дерево файловой системы с шаблонными файлами ассоциировано с процедурой загрузки, причем активируют процедуру загрузки по запросу файла и загружают запрошенные файлы и/или шаблоны на локальную машину.

[0011] Способ для управления компьютерной файловой системой, заключающийся в том, что

[0012] Способ по п.11, в котором файловая система ВСИПО содержит фиктивные файлы, ссылающиеся на файлы в общем дереве файловой системы с шаблонными файлами.

[0013] Способ по п.11, в котором общее дерево файловой системы с шаблонными файлами содержит фиктивные файлы, ссылающиеся на файлы на сетевом хранилище данных.

[0014] Способ по п.11, в котором копирование файлов в общее дерево файловой системы с шаблонными файлами из сетевого хранилища данных осуществляют с использованием процедуры загрузки.

[0015] Способ по п.14, в котором процедура загрузки загружает и кэширует файлы в соответствии с предварительно заданными правилами.

[0016] Способ по п.15, в котором общее дерево файловой системы с шаблонными файлами сообщается с процедурой загрузки с использованием переадресаций ввода/вывода.

[0017] Способ по п.11, в котором файл передают к ВСИПО с использованием обработки ввода/вывода.

[0018] Способ по п.11, в котором вычислительная система выполнена в виде сетевой вычислительной системы и содержит ВСИПО, которая использует по крайней мере один шаблон файла ВСИПО.

[0019] Способ по п.18, в котором передают шаблон файла ВСИПО с сетевой вычислительной системы в общее дерево файловой системы путем предоставления прямого доступа к хранилищу данных сетевой вычислительной системы.

[0020] Способ по п.19, в котором сетевая вычислительная система расположена на локальной вычислительной системе.

[0021] Способ для управления компьютерной файловой системой, заключающийся в том, что

[0022] Способ по п.21, в котором предоставляют запрошенный файл из общего дерева файловой системы с шаблонными файлами в файловую систему ВСИПО путем копирования файла в файловую систему ВСИПО или путем создания файла, переадресующего запрос к общему дереву файловой системы с шаблонными файлами.

[0023] Способ по п.22, в котором файл, переадресующий запрос к общему дереву файловой системы, выполнен в виде фиктивного файла или ссылочного файла.


Полный текст патента

Область изобретения

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

Описание уровня техники

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

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

Операционные системы, такие как UNIX, Linux и Microsoft Windows, обрабатывают компьютерные файловые системы путем задания иерархической структуры файловых объектов. Иерархическая структура файловых объектов начинается с корневой директории (папки) и проходит по дереву файлов. В этом случае адрес файла задается как путь доступа, т.е. как последовательность директорий и поддиректорий (субдиректорий), ведущих к файлу. Процесс присвоения адреса файлу называется «анализ пути к файлу » или «трассировка ». В частности, путь "I/r/a/b/file" содержит корневую директорию (I), субдиректории "r", "а" и "b", а затем и файл "file".

Обычно процессы внутри операционной системы взаимодействуют с файловой системой, с использованием стандартного набора функций. Например, эти функции обычно используют открытие, закрытие, запись и другие системные вызовы или сходные процедуры. Например, файл может быть открыт функцией открыть (open) и указанная функция использует имя файла, как целевой аргумент.

Файловая система также может содержать промежуточные структуры данных, содержащих сведения и данные, связанные с файловой системой, для обеспечения доступа к файлам. Указанные данные называются метаданными и могут включать в себя, например, данные, относящиеся к расположению файлов в памяти компьютера, например месту хранения файла на жестком диске или другом устройстве хранения данных. Например, в среде исполнения операционной системы UNIX указанные промежуточные структуры данных называются инодами (айнодами или индексными дескрипторами или узлами). Инода является структурой данных, которая содержит информацию о файлах в файловых системах UNIX.

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

Обычно компьютерные файловые системы хранят указанные промежуточные данные, относящиеся к расположению сохраняемых файлов, как отдельные структуры, находящиеся на том же носителе данных, что и содержимое файла. Функции, отвечающие за поиск файлов, реализованные, например, в ядре операционной системы, сначала находят промежуточные данные, а находят данные, хранящиеся в виде файла, который является объектом поиска. Директории (папки) также могут иметь промежуточные структуры данных, содержащие метаданные. Также файловые системы могут формировать промежуточные данные файлов в режиме «на лету », например, в момент, когда система запрашивает файл. В частности, сетевая файловая система NFS (Network File System), используемая в продукции компании Sun Microsystems, выполнена с возможностью формирования данных «на лету ».

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

Существует несколько типов ссылок или указателей. Например, ссылки, которые содержат символьное имя другого файла, называются «символьными ссылками ». Указатели, которые обращаются к промежуточной структуре другого файла, называются «жесткими ссылками ». Тип указателя или ссылки обычно определяется режимами работы, поддерживаемыми операционной системой. Файловые системы могут осуществлять несколько функций. Как показано выше, наиболее общей задачей файловой системы является обеспечение возможности доступа к файлам. Файловые системы могут также улучшать производительность системы с использованием дополнительных функций, таких, например, как кэширование, простановка указателей или флагов доступа, а также обеспечение устойчивости к сбоям в работе системы.

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

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

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

В процессе анализа пути доступа к выбранному файлу данных операционная система определяет момент, когда путь «проходит » через указанную точку монтирования и «ниже » указанной точки, выполняется анализ, специфичный для заданной файловой системы. Набор указанных операций определяется в соответствии с параметрами, установленными в процессе монтирования файла.

Файловая система UnionFS, разработанная для операционной системы FreeBSD UNIX, использует схожую технологию. Одна из особенностей UnionFS заключается в том, что разные пользователи могут иметь различные представления деревьев одного и того же файла. Для поддержки указанной особенности строятся два дерева файловой системы при монтировании UnionFS. Первым деревом является дерево, предназначенное только для чтения. Второе дерево создается в процессе сеанса работы пользователя и используется для внешних целей. Указанное второе при монтировании определяется как дополнительный параметр.

При вызове файловой системы внутри дерева с общим доступом поиск осуществляется двумя путями. В первом случае поиск может быть основан на имени пути, причем указанное имя может быть вычислено на основании места нахождения файла. Например, точка монтирования UnionFS может бять расположена в "a/b/u,", a файл, к которому осуществляется адресация, может быть расположен в "/a/b/u/c/d/e". Второе дерево, смонтированное в той же точке, расположено, начиная с адресов "/х/у/." Таким образом, дополнительный адрес будет вычислен как "/a/b/u/c/d/e" минус "/a/b/u" плюс "/х/у/". В результате, дополнительный адрес вычислен как "/x/y/c/d/e".

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

Одним из путей изменения поискового адреса файлового объекта и, соответственно, положения корневой файловой системы для группы процессов является использование примитивов, аналогичных примитиву "chroot" ядра операционной системы UNIX. Операция на указанном примитиве основывается на принципе, заключающемся в сдвиге реального корня файловой системы или «корневой » директории (каталога) в некоторое положение, характерное для выбранной группы процессов, в частности для всех процессов одного пользователя. Затем все операции внутри ядра указанных процессов выполняются только внутри поддерева выбранной файловой системы.

Другой пример системы указанного типа основан на «слепке » (снимке моментального состояния) файловой системы или моментальной копии (снапшоте) дерева, в которой изменения всей файловой системы расположены в хронологическом порядке. Все изменения, произведенные в файловой системе или любой её части за период времени, сохраняются в отдельном дереве файловой системы. Такие раздельные и упорядоченные во времени деревья представляют полную историю изменений файловой системы за дискретный период времени. Таким образом, для определения состояния файла в фиксированный момент времени оператор ищет файл в самом последнем, с точки зрения времени доступа, файловом дереве. Если файл не найден в указанном дереве, поиск осуществляется в дереве, расположенным во времени перед деревом, указанным ранее.

Аналогичным образом файловая система Мираж (MFS) компании IBM описывает систему, состоящую из набора деревьев, и определенный механизм поиска, который зависит от типа файла, расширения файла и последовательности запросов, среди других параметров. Одним из принципов указанной компьютерной файловой системы является замена пути поиска файла, где путь поиска расширяется на места нахождения других файловых систем, связанных с объектом, в отношении которого осуществляется поиск. Например, указанная система позволяет использовать систему моментальных копий (снимков).

Патент США № 6289356 также описывает пример выполнения специальных промежуточных структур данных, в которых файловая система организована с жестко управляемым режимом измененных записей. Раскрытая система осуществляет передачу состояний файловой системы так, что в любой момент времени система находится в исправном состоянии, т.е. не имеет ошибок. Дополнительно система создает моментальные снимки файловой системы путем дублирования промежуточной структуры данных (например, инода) без дублирования самих файлов. Система также помечает файлы, выбранные для хранения блоков файлов данных, как принадлежащие к определенному моментальному снимку файловой системы. Такое выполнение файловой системы обеспечивает взаимное влияние при функционировании файловой системы на уровне способа распределения данных.

Промышленная тенденция виртуализации и изоляции ресурсов компьютерных систем делает задачу обеспечения совместного доступа к файлам более комплексной. Виртуальная среда исполнения программного обеспечения (ВСИПО), такая, например, как Virtual Machine (VM) или Virtual Environment (VE) (например, Virtual Private Server (VPS)), является типом изолированного ВСИПО, которое запускается на физической машине одновременно. Каждая из форм ВСИПО имеет доступ к своим собственным файлам, а также (в некоторых случаях) к файлам, используемым другими ВСИПО.

Виртуализация позволяет осуществить исполнение нескольких ВСИПО (таких как VMs или VE/VPS) на одной физической вычислительной машине или процессоре. Таким образом, обеспечение совместного доступа к файлам данных для нескольких ВСИПО, исполняемых на одной вычислительной машине, становится одной из наиболее критических задач. Обеспечение устойчивого совместного доступа к файлам является особенно важным в многопользовательских системах, таких, например, как системы виртуальных серверов или VE. VE является сервером, например сетевым сервером, который имеет вычислительные ресурсы в совместном доступе с другими виртуальными серверами.

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

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

Краткое изложение сущности изобретения

Настоящее изобретение относится к системам, способам и вычислительным программным продуктам для управления компьютерной файловой системой и обеспечения совместного доступа к файлам для нескольких виртуальных сред исполнения программного обеспечения (ВСИПО) с использованием систем файловых деревьев. Изобретение существенным образом преодолевает один и более недостатков уровня техники, имеющего отношение к изобретению.

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

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

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

Краткое описание графических материалов

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

Фиг. 1 иллюстрирует видимость файлов для различных пользователей в примерном варианте выполнения вычислительной системы;

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

фиг. 3 - начальное состояние пользовательской файловой области в соответствии с примерным вариантом выполнения;

фиг. 4 - примерный вариант выполнения файловой области пользователя;

фиг. 5 - примерный вариант выполнения предложенного способа;

фиг. 6 - примерный вариант выполнения обеспечения совместного доступа пользователей нескольких виртуальных сред исполнения (ВСИ) к файлам;

фиг. 7 - примерный вариант выполнения управления файлами в вычислительной системе;

фиг. 8 - способ для управления файлами в соответствии с примерным вариантом выполнения;

фиг. 9А-9С - выполнение деревьев файловой системы в соответствии с примерным вариантом выполнения;

фиг. 10 - примерный вариант выполнения вычислительной системы, на которой может быть реализовано настоящее изобретение.

Детальное описание предпочтительных вариантов реализации изобретения

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

В приведенном ниже обсуждении использованы следующие определения.

Виртуальная среда исполнения программного обеспечения (ВСИПО) - тип среды исполнения программного обеспечения, которая поддерживает исполнение программного кода, где по крайней мере часть аппаратных средств и программных средств, требуемых для исполнения программного обеспечения, представлена в виде виртуальных аналогов. С точки зрения пользователя, чей код исполняется в ВСИПО, указанный код исполняется, как если бы он исполнялся на реальной вычислительной системе.

Виртуальная среда или Virtual Environment (VE) - является одним из типов виртуальной среды исполнения программного обеспечения, исполняющейся на одной с другими виртуальными средами компьютерной системе, с совместным использованием ядра операционной системы и большинства системных ресурсов, причем изоляция виртуальной среды осуществляется на уровне пространства имен. Программные средства, необходимые для обеспечения процесса исполнения программ, виртуализуются и предоставляются исполняемому процессу. ВСИПО, такое, например, как VE в виде виртуального частного сервера (Virtual Private Server (VPS)), может быть реализована, например, с использованием платформы Virtuozzo ™ компании SWsoft, Inc. виртуализации операционной системы (ОС), как закрытый набор или совокупность процессов, системных ресурсов, пользователей, групп пользователей, объектов и структур данных. Каждый VPS имеет собственный идентификатор, который отличает его от других VPS.

VPS предлагает пользователю сервис, который по большей части функционально эквивалентен отдельно выполненному серверу с удаленным доступом. С точки зрения администратора VPS, VPS должен, прежде всего, функционировать как выделенный компьютер в центре данных. Например, для администратора желательно, чтобы VPS имел тот же удаленный доступ к серверу через сеть Интернет, а также те же возможности для перезагрузки сервера, загрузки системных и прикладных программных ресурсов (например, исполняемого кода и сопутствующих данных, например настроек), авторизации пользователей VPS, установления квот дискового пространства для пользователей и групп пользователей, поддержки сетей дисковых областей (storage area network (SAN)), установки и конфигурирования сетевых соединений и сетевых серверов и т.д. Другими словами, желательно иметь полный диапазон функций системного администрирования, как если бы VPS был выделенным удаленным сервером, а существование VPS не было очевидным как для пользователя VPS, так и для администратора VPS.

Виртуальная машина (Virtual Machine (VM)) - тип изолированной ВСИПО, исполняемой на одной физической машине одновременно с другими виртуальными машинами. Каждый экземпляр виртуальной машины исполняет свое собственное ядро операционной системы. Поддержка виртуальной машины осуществляется с использованием Монитора виртуальной машины и/или гипервизора. Примерами виртуальной машины являются виртуальная машина от компании VMware или виртуальная машина от компании Parallels Software International.

Гипервизор - управляющее программное средство, имеющее максимальный уровень привилегий для администрирования аппаратных ресурсов и виртуальных машин. Один из вариантов реализации гипервизора используется в проекте с открытым исходным кодом Xen и в средствах виртуализации программного обеспечения для сервера Windows Server "Longhorn" (Veridian).

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

Как раскрыто в настоящем описании, Virtual Environments (VE) могут быть выполнены в виде виртуального частного сервера, виртуальной машины, виртуальной машины, поддерживаемой гипервизором, виртуальной машиной, поддерживаемой упрощенным гипервизором, сеансом терминального сервера Windows 2003 (или более поздних версий) и сессией сервера Citrix Presentation Server и виртуальной машиной, поддерживаемой монитором виртуальных машин. Каждая виртуальная среда поставляет набор сервисов локальным и удаленным пользователям. Виртуальная среда исполнения, такая как виртуальная машина (ВМ), виртуальный частный сервер (ВЧС), является видом изолированной виртуальной среды исполнения, которая исполняется одновременно с другими на одной физической машине. Каждый экземпляр ВМ/ВЧП имеет доступ к своим собственным файлам, а также к файлам, которые используются другими ВМ, ВЧП.

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

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

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

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

В одном из вариантов реализации выполняется несколько ВСИПО, исполняемых на вычислительной системе. Вычислительная система имеет общее дерево файловой системы, которое может быть одновременно доступно для виртуальных сред исполнения программного обеспечения. Файлы с общим доступом хранятся в общем дереве файловой системы, расположенном на локальном хранилище данных вычислительной системы. Общее дерево файловой системы содержит первый набор файлов, которые могут быть непосредственно доступны для виртуальных сред исполнения программного обеспечения, с использованием первой переадресации. Общее дерево файловой системы также содержит второй набор файлов, которые могут быть выполнены с возможностью доступа виртуальными средами исполнения программного обеспечения с использованием первой и второй переадресаций. Файловая система обращается к файлам из локального хранилища данных с использованием первой переадресации и из сетевого хранилища данных, с использованием второй переадресации. Локальное хранилище данных может также получать файлы из сетевого хранилища данных и сохранять их в общем дереве файловой системы. Такой подход дает возможность реализовать файловую систему, которая основана не на одном локальном хранилище данных. Сохранение существенных эталонных файлов на сетевом хранилище данных дает возможность более эффективной миграции виртуальных сред исполнения программного обеспечения.

Система управления в соответствии с предпочтительным вариантом выполнения функционирует, как показано ниже. Каждая ВСИПО, активированная в вычислительной системе имеет свою собственную, выделенную ей виртуальную память. Локальное хранилище данных имеет файловую систему (для каждой ВСИПО), которая содержит фиктивные файлы, содержащие ссылки на общее дерево файловой системы с шаблонными файлами. Общее дерево файловой системы с шаблонными файлами, в свою очередь, содержит фиктивные файлы, содержащие ссылки на файлы в шаблонах на удаленном сетевом диске. В общую файловую систему загружаются файлы из шаблонов на сетевом диске, на которые также имеются ссылки в фиктивных файлах. Затем файлы из общей файловой системы, на которые ссылаются фиктивные файлы из файловой системы ВСИПО, загружаются в файловую систему ВСИПО, после чего они поступают к соответствующей ВСИПО через соответствующие средства ввода-вывода. Кроме того, файлы загружаются и кэшируются в соответствии с предварительно установленными правилами.

Способ управления файлами в соответствии с предпочтительным вариантом выполнения содержит активацию множества виртуальных сред исполнения программного обеспечения на вычислительной системе и создание дерева файловой системы, содержащего описания всех файлов, требуемых для всех виртуальных сред исполнения программного обеспечения, исполняемых на вычислительной системе. Также создается общее дерево файловой системы с шаблонными файлами, к которому могут одновременно обращаться виртуальные среды исполнения программного обеспечения. Дерево файловой системы и общее дерево файловой системы с шаблонными файлами хранятся на локальном хранилище данных вычислительной системы. Файлы (т.е. файлы, содержащие метаданные со ссылками на другие файлы) копируются из общего дерева файловой системы с шаблонными файлами дерева локальной файловой системы. Создаются фиктивные файлы, указывающие на общее дерево файловой системы с шаблонными файлами из дерева локальной файловой системы. Затем создаются фиктивные файлы, указывающие на общее дерево файловой системы с шаблонными файлами из дерева файловой системы ВСИПО и фиктивные файлы, указывающие на сетевое хранилище данных из общего дерева файловой системы с шаблонными файлами. Когда одна из виртуальных сред исполнения программного обеспечения пытается получить доступ к файлу из сетевого хранилища данных через файловую систему ВСИПО с использованием второго перенаправления, упомянутый файл загружается из сетевого хранилища данных в локальное хранилище данных и далее доступ к указанному файлу осуществляется с использованием первого перенаправления.

Как показано выше, один из вариантов реализации настоящего изобретения относится к системе и способу для доступа к общей файловой системе, взаимодействующей с вычислительной системой для обеспечения многопользовательского режима доступа. Фиг. 1 иллюстрирует примерный вариант выполнения вычислительной системы согласно настоящему изобретению, показанной, в общем случае, как 100, а также пользовательский доступ к вычислительной системе. Компьютерная система 100 содержит файловое дерево 125 с совместным доступом, связанное с файлами, которые могут быть доступны или быть в совместном доступе пользователей компьютерной системы 100. Компьютерная система 100 выполнена с возможностью работы в ней нескольким пользователям 115а-с, обозначенных как Users 1, 2 и 3 соответственно.

Несмотря на то, что на фиг. 1 изображены три пользователя, должно быть очевидно, что компьютерная система 100 может быть выполнена с возможностью подключения большего количества пользователей. Каждый из пользователей 115 имеет доступ к файловому дереву 125 с общим доступом. Соответственно, каждый из пользователей может иметь в совместном доступе файловое дерево 125 для обеспечения многопользовательского доступа к файловой системе компьютерной системы 100.

Кроме того, каждый пользователь 115 ассоциирован с файловым деревом 120 пользователя. Каждый пользователь 115 может получить доступ к файловому дереву 135 с общим доступом через использование своей собственной копии файлового дерева 120 пользователя. С точки зрения пользователя, файловое дерево 120 пользователя выполнено прозрачным для пользователя образом и представляет пути структур файлового дерева 125 с общим доступом, как показано выше. В результате, файловое дерево 120 пользователя дает возможность каждому пользователю 115 получить доступ к файлам, расположенным в файловом дереве 125 с общим доступом, в том числе к файлам, относящимся к конфигурации операционной системы и сервисам пользователей. Каждое из файловых деревьев 120 пользователя является приватным, т.е. недоступным для других пользователей, и в предпочтительном варианте выполнения не может быть доступным для других пользователей без административных привилегий.

Соответственно, как показано выше, каждый пользователь 115 имеет возможность изменять свои файлы вне зависимости от других пользователей. В результате, каждый пользователь 115 имеет возможность доступа к файлам и изменения файлов, вне зависимости от того, присутствуют ли в системе другие пользователи и имеют ли они доступ к файлам, такие изменения в файлах видны только пользователям, которые имеют полномочия производить изменения. Например, как показано на фиг. 1, файл, названый "myfile", показан на позиции 130, как имеющий путь "/usr/bin/myfile" в файловом дереве 125, с общим доступом. Если User 1, показанный как 115а, получает доступ к myfile 130 через путь /usr/bin/myfile и модифицирует указанный файл 130, другие пользователи, например пользователи 115b и 115с, которые также получают доступ к файлу myfile 130 через тот же самый путь, например /usr/bin/myfile, видят только оригинальный, неизмененный файл 130.

Измененный файл, показанный позицией 135, виден только пользователю, который имеет полномочия изменять файл, например пользователю User 1, и доступ к указанному файлу может быть получен только с использованием файлового дерева 120 пользователя User 1. Сходным образом, другие файлы, которые не были изменены, будут видны всем пользователям в своем оригинальном виде. Например, файл "anotherfile", показанный позицией, не был изменен пользователем User 1. Соответственно, все пользователи 115, которые получают доступ к файлу через путь к файлу lusr/bin/anotherfile, будут получать файл из файлового дерева 125, с общим доступом и видеть одинаковый, неизмененный файл. В результате, несколько пользователей могут иметь доступ и изменять файлы с общим доступом без риска повредить оригинальные файлы.

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

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

Например, согласно фиг. 2, файл "myfile" 210, расположенный по адресу /usr/bin/myfile в файловом дереве 200, является ссылочным файлом, который указывает на файл "anotherfile" 215. Соответственно, если процесс 220 пользователя пытается открыть файл myfile 210, указанный процесс вместо этого откроет файл anotherfile 215. Указанный ссылочный файл в общем случае прозрачен (невидим) для пользователя. Таким образом, пользователь не имеет возможности определить, что файл на самом деле является ссылочным файлом, а не настоящим файлом, который пользователь пытается открыть, за исключением случаев формирования запросов специального типа.

Фиг. 3 показывает использованный в настоящем изобретении примерный вариант выполнения вычислительной системы, показанной в общем случае как 100. Как показано выше, компьютерная система 100 содержит файловое дерево 310 с общим доступом. Кроме того, компьютерная система 100 позволяет нескольким пользователям, показанным как 320, иметь доступ к файловому дереву 310 с общим доступом. Многопользовательский режим работы компьютерной системы 100 может в общем случае давать возможность одновременной работы процессам операционной системы, относящимся к различным пользователям. Каждый процесс в операционной системе обычно связан с информацией, которая идентифицирует пользователя, т.е. идентификатором пользователя. При доступе к файлу операционная система определяет пользователя, запросившего операцию с файлом, и определяет, разрешена ли указанная операция указанному пользователю.

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

Каждый пользователь 320, который имеет доступ к файловому дереву 310 с общим доступом компьютерной системы, также имеет свое собственное файловое дерево 330, которое содержит структуру директорий или папок, аналогичную файловому дереву 310 с общим доступом. Но вместо содержания копий настоящих файлов, расположенных в файловом дереве 310 с общим доступом, файловое дерево 330 пользователя содержит ссылку на соответствующий реальный файл в файловом дереве 310 с общим доступом. Например, изначально файлы 335а и 340b не скопированы в аналогичные файлы в файловом дереве 310 с общим доступом, соответственно, файлы 345 и 350. Вместо этого файлы 335 и 340 являются ссылочными файлами к реальным файлам 345 и 350.

Соответственно, каждый пользователь 320 получает доступ к реальным файлам через свое файловое дерево 330 пользователя, которое, в свою очередь, переадресует к реальному файлу в области с общим доступом. С точки зрения пользователя, указанная операция выполняется прозрачным для пользователя образом, т.е. пользователь 320 не может видеть локацию, куда ссылается ссылка или указатель, когда пользователь адресуется к файлу. В альтернативном иллюстративном примере выполнения пользователь может обнаружить реальный адрес реального файла или ссылки, если указанный сервис предоставляется операционной системой.

Фиг. 4 показывает ещё один иллюстративный вариант выполнения настоящего изобретения. Компьютерная система 100 содержит файловое дерево 310 с общим доступом. Файловое дерево 310 с общим доступом содержит несколько файлов с общим доступом, в число которых входят файлы "anotherfile" 345 и "myfile" 350. Система 100 также содержит пользовательскую область 410 файлов. Каждый пользователь 320 имеет доступ к своему собственному файловому дереву 330 пользователя, которое может быть расположено в файловой области 410 пользователя. Как было раскрыто выше, файловое дерево 330 пользователя содержит файлы, которые соответствуют файлам в файловом дереве 310 с общим доступом. Соответственно, файловое дерево 330 пользователя содержит файлы "anotherfile" 335 и "myfile" 340, которые соответствуют файлам 345 и 350 в файловом дереве 310 с общим доступом соответственно. Однако файловое дерево 330 пользователя не содержит копии соответствующих файлов, находящихся в файловом дереве 310 с общим доступом, оно содержит только ссылки. Соответственно, до тех пор, пока пользователь не попытается изменить указанные файлы, как будет показано ниже, файлы 335 и 340 являются изначальными ссылками на реальные файлы 345 и 350.

В общем случае, все операции над файлами могут быть разделены на две категории: (1) операции, которые изменяют содержимое файла или связанные с файлом данные; и (2) все другие операции, например операции, которые обеспечивают только доступ к файлу. Если процесс 320 пользователя не запрашивает исполнение операции, которая изменяет содержимое файла, расположенного в файловом дереве 310 с общим доступом, система 300 безусловно открывает файл, на который указывает ссылка. Например, как показано на фиг. 4, пользователь 310 может запросить доступ без изменения к файлу anotherfile 345. Как показано, в виде пути Path 2, обозначенного позицией 375, пользователь 310 откроет файл anotherfile 335, а также ссылку на реальный файл anotherfile 345, и пользователю будет предоставлен доступ к реальному файлу 345. Дальнейшие операции с файлом anotherfile 345 могут выполняться как обычно.

С другой стороны, если операция пользователя пытается изменить любую информацию, связанную с файлом, например содержимое или длину файла, система 300 сначала определяет точки, на которые указывает ссылка, например на оригинальный файл в файловом дереве 310 с общим доступом, или другое место. Для обеспечения возможности пользователя изменять данные файловой системы каждый из пользователей получает свою собственную частную (приватную) файловую область, отображенную позицией 370 на фиг. 4, причем указанная область может располагаться в файловой области 410 пользователя.

Область 370 приватных файлов может быть выбранной памятью или устройством хранения данных, расположенным в системе 300 или доступным для системы 300. При формировании события, заключающегося в том, что пользователь 320 запрашивает выполнение операции, которая изменяет файл с общим доступом в файловом дереве 310 с общим доступом, для которого файловое дерево 330 пользователя содержит ссылку, указывающую на файл с общим доступом, система 300 сначала копирует файл с общим доступом в принадлежащую указанному пользователю область 370 приватных файлов.

Затем система 100 изменяет файловое дерево 330 пользователя таким образом, что ссылка, связанная с файлом с общим доступом, перестает указывать на место в файловом дереве 310 с общим доступом, вместо этого указанная ссылка указывает на место положения копии файла в принадлежащей пользователю области 370 приватных файлов. Таким образом система 100 реализует прозрачную для пользователя операцию, позволяющую пользователю изменять файл с общим доступом без возникновения опасности риска повреждения файла с общим доступом.

Например, как показано на фиг. 4, пользователь 320 может запросить доступ и изменение файла "myfile" 350, расположенного в файловом дереве 310 с общим доступом. Поскольку пользователь 320 запросил изменение указанного файла, система 100 не позволит пользователю 320 осуществить прямой доступ и изменение реального файла 350 с общим доступом. Вместо этого система 100 скопирует файл "myfile" 350 с общим доступом в область 370 приватных файлов пользователя. В результате, область 370 приватных файлов теперь содержит копию оригинального файла myfile с общим доступом, показанную позицией 360.

Затем система 100 изменяет связанный ссылочный файл "myfile" 340, расположенный в файловом дереве 330 пользователя с тем, чтобы он указывал на копию 360 вместо оригинального файла 350, расположенного в файловом дереве 310 с общим доступом. Как показано путем Path 1, отображенным позицией 380, вместо доступа к оригинальному файлу пользователь 320 будет получать доступ к ссылочному файлу 340 для того, чтобы открыть копию 360, хранящуюся в принадлежащей пользователю области 370 приватных файлов. При этом пользователь 320 может обычным путем изменять копию 360. Любые изменения, внесенные в указанную копию 360 файла myfile 350 указанным пользователем, теперь будут видны другим пользователям системы 100.

Следует отметить, что область 370 приватных файлов и файловое дерево 330 пользователя могут быть сконфигурированы таким образом, что к ним возможен доступ не только одного пользователя, но и выбранной совокупности пользователей, например группе пользователей, связанных с основной операционной системой. Следует отметить, что пользователь 320 может помещать файлы в область 370 приватных файлов, которая не содержит ссылок, например указателей на файловое дерево 310 с общим доступом. Более того, файловое дерево 330 пользователя может содержать метаданные, предназначенные для оптимизации доступа пользователя. Например, ссылки, расположенные в файловом дереве 330 пользователя, могут содержать метаданные, относящиеся к доступу пользователя к соответствующему файлу с общим доступом. Например, метаданные могут предоставлять пользователю возможность определять допуск к файлам, хранящимся в файловом дереве с общим доступом, без копирования файлов в область 370 приватных файлов.

Если ссылочный файл в в области 330 файлов пользователя уже указывает на копию файла в области 370 приватных файлов, над копией файла может быть осуществлена операция без внесения изменений в файловое дерево 330 пользователя. Например, если пользователь 320 запрашивает продолжение операции изменения копии 360 файла myfile, как было раскрыто в приведенном выше примере, пользователь может получить доступ к копии 360 файла myfile через ссылку 340 myfile, как это показано в виде пути Path 1, представленного позицией 380. Из этого следует, что все дальнейшие операции с копией 360 файла myfile также будут прозрачны для пользователя 320.

Пользователь 320 также может свободно создавать новые файлы в системе 100. Если пользователь 320 запросил создание нового файла, новый файл будет создан только в определенной области 370 приватных файлов или 410. Например, в иллюстративном варианте выполнения, показанном на фиг. 4, пользователь 320, например User 1, запрашивает создание нового файла, например файла, отсутствующего в файловом дереве 310 с общим доступом, обозначенного "newfile". Система 100 в предпочтительном случае позволяет пользователю создать указанный новый файл, показанный как newfile и обозначенный позицией 410, только в принадлежащей пользователю области данных, связанной с файловым деревом 330 пользователя.

Соответственно, пользователь 320 может непосредственно обращаться к файлу newfile 355, например, с использованием пути lusr/bin/newfile, как показано путем Path 3, обозначенным позицией 390. Таким образом, в предпочтительном иллюстративном варианте выполнения только пользователь, являющийся автором нового файла, может получить доступ к указанному новому файлу или просматривать его. В этом примере файл newfile 355 в предпочтительном варианте выполнения не виден всем остальным пользователям, кроме пользователя User 1. В альтернативном варианте реализации система 100 может создать новый файл области 370 приватных файлов пользователя и изменить файловое дерево 330 пользователя для включения в него ссылочного файла, который указывает на новый файл в области 370 приватных файлов пользователя. Пользователь 320 теперь может иметь доступ к новому файлу через связанную в указанном файле ссылку в файловом дереве 330 пользователя.

Пользователь 320 также может удалить файл в системе 100. Если пользователь запрашивает операцию по удалению файла, который имеет ссылку, указывающую на область данных общего доступа, тогда будет удален только указатель. Оригинальный файл и связанные с ним данные не будут затронуты и останутся доступными для других пользователей. Например, в иллюстративном варианте выполнения, показанном на фиг. 4, пользователь 320, например пользователь User 1, хочет удалить файл с общим доступом, озаглавленный "nofile" 375, расположенный в файловом дереве 310 с общим доступом. Вместо удаления файла с общим доступом система 100 удалит соответствующий ссылочный файл nofile 365, расположенный в принадлежащем пользователю User 1 файловом дереве 330, как показано путем Path 4, обозначенным позицией 400.

Как только ссылочный файл 365 удален, пользователь User 1 не сможет просматривать или получать доступ к файлу nofile 385 при отсутствии, например, вмешательства системного администратора. Соответственно, с точки зрения пользователя User's 1, файл nofile 385 удален, несмотря на то, что он всё ещё доступен для всех других пользователей. Если пользователь запрашивает удаление файла, который имеет ссылку, указывающую на копию, расположенную в области 370 приватных файлов пользователя, тогда как сам указатель, так и копия будут удалены. Например, если пользователь User 1 хочет удалить измененный файл "myfile" 360, как ссылочный файл 340, так и копия 360 будут удалены.

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

Фиг. 5 иллюстрирует примерный вариант выполнения способа согласно настоящему изобретению. На шаге 500 система получает запрос пользователя на получение доступа к файлу. На шаге 510 система определяет, является ли запрошенный файл файлом с общим доступом, расположенным в файловом дереве с общим доступом, или приватным файлом. Если система определяет, что файл является файлом с общим доступом, затем, на шаге 515, система определяет, хочет ли пользователь удалить файл.

Если пользователь хочет удалить файл, на шаге 520 удаляется ссылка, расположенная в файловом дереве пользователя, а не файл с общим доступом. В противном случае, на шаге 525 определяется не хочет ли пользователь изменить файл с общим доступом. Если нет, на шаге 535 пользователь может получить доступ к файлу с общим доступом через файловое дерево пользователя. В противном случае, если пользователь хочет изменить файл с общим доступом, система копирует файл с общим доступом в область приватных файлов пользователя и на шаге 530 изменяет файловое дерево пользователя так, что оно указывает на указанную копию на шаге 540 и затем дает разрешение пользователю изменить копию (не оригинальный файл с общим доступом) на шаге 545.

Если на шаге 510 определяется, что пользователь хочет получить доступ к приватному файлу, затем, на шаге 550, определяется, не хочет ли пользователь удалить приватный файл. Если пользователь хочет удалить приватный файл, система удаляет как копию, так и связанный с ней указывающий файл. Если пользователь хочет только изменить файл, на шаге 570 система дает возможность пользователю напрямую изменить приватный файл на шаге 580. С другой стороны, если пользователь хочет получить только доступ к файлу, на шаге 590 пользователю дается возможность получить доступ к приватному файлу.

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

Как было раскрыто выше, для обеспечения такого рода доступа компьютерная система создает две директории для каждого пользователя: первая директория повторяет структуру дерева с общим доступом для сохранения ссылок на файлы, например файловое дерево 330 пользователя, а вторая директория используется для хранения файлов, скопированных из общей области, например область 370 приватных файлов. В одном иллюстративном варианте выполнения указанные директории реализованы с использованием вызова смонтированной системы, который использует требуемую директорию, как параметр. При анализе пути доступа к файлу система будет распознавать событие, заключающееся в том, что путь доступа пройдет в поддереве, доступном через точку монтирования. Соответствующие программные средства затем будут управлять доступом к файлу внутри директории.

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

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

Как было раскрыто выше, сходные структуры данных могут быть созданы «на лету » в процессе взаимодействия с файловой системой. В этом случае, указанные структуры хранятся преимущественно в памяти с произвольной выборкой (оперативной памяти) компьютера или в его быстродействующей буферной памяти (кэше), а не на жестком диске или сходном устройстве хранения. Например, указанные структуры, создаваемые на лету, могут храниться в буферной области временных данных на диске или в ОЗУ или в любой другой сходной зоне памяти.

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

Примерный вариант компьютерной системы 100 для предоставления общего доступа к общим файлам виртуальным средам исполнения программного обеспечения показана на фиг. 6. Файловая система содержит корневую директорию 601, расположенную на физическом уровне компьютерной системы 100. Общие файлы 603 находятся в общем доступе пользователей 602А и 602В ВСИПО. В отличие от общепринятых моделей предоставления общего доступа к файлам предложенная система дает возможность доступа к файлам 603, выполненным с возможностью общего доступа, через корневую директорию 601 файловой системы, что требует вычисления пути к файлу. Вместо этого доступ к файлам и директориям в области 603 общего доступа осуществляется через ссылки, содержащиеся в файлах и директориях в приватной области пользователя ВСИПО. Ссылки, содержащиеся в файлах или директориях, задаются специальными атрибутами метаданных.

В примере, изображенном на фиг. 6, пользователи ВСИПО VEE User 1 и VEE User 2 обращаются к файлам и директориям внутри принадлежащих им приватных корневых директорий 602А и 602В. Файлы и директории приватных корневых директорий 602А и 602В содержат ссылки к файлам и/или директориям в области общего доступа 603. Относящиеся к ссылкам атрибуты 601, 610, 611, 613, 621, 622, 623 метаданных внутри приватных файлов и директорий показаны черными квадратами. Например, когда пользователь ВСИПО VEE User 1 обращается к файлу File 1, считывается атрибут 601 метаданных, определяющий является ли указанный файл файлом данных или ссылкой на файл в области 603 с общим доступом.

Если атрибут 601 метаданных определяет, что файл является ссылкой, часть файла, относящаяся к данным, не открывается, а происходит обращение к файлу Fx-1.ext из общей области 603, на который указывает ссылка. Указанный файл может иметь любой тип расширения (такое, например, как ".txt", ".exe", ".mpeg", "jpeg," и так далее - на чертеже использовано обобщенное расширение ".ext"). Сходным образом, пользователь ВСИПО VEE User 2 может обратиться к файлу Fx-2.ext через ссылочный файл 2, имеющий атрибут 621 метаданных.

Тот же самый алгоритм доступа может быть использован и в отношении файловых директорий. Например, пользователь ВСИПО VEE User 1 может открыть директорию Dir 1 в приватной корневой директории 602А и использовать атрибут 611 метаданных для обращения к директории Dir 11 в области 603 с общим доступом. Следует отметить, что ссылки создаются, удаляются и изменяются системой и пользователи ВСИПО не уполномочены создавать, удалять или изменять ссылки. Пользователи ВСИПО могут видеть ссылки в корневой приватной области пользователя ВСИПО, но обращение пользователя к реальным ссылкам и метаданным ссылок внутри файлов или директорий заблокировано. Такое выполнение предназначено для эффективного общего доступа к файлам пользователями ВСИПО без нарушения целостности и безопасности файловой системы.

Обращение к директориям Dir 12 и Dir 13 осуществляется тем же путем, с использованием указывающих ссылок, содержащихся в директориях Dir 2 и Dir 3. Те же действия в отношении Fx-3.ext, к которому происходит обращение пользователя VEE User 2, выполняются с использованием соответствующего ссылочного файла 3. Таким образом, обращение к файлам и директориям и совместный доступ к ним пользователями ВСИПО осуществляется опосредовано с использованием ссылок. Следует отметить, что каждый файл и/или директория в приватной области пользователя ВСИПО могут иметь множество ссылок к файлам и/или директориям в общей области с общим доступом. Директории в частной области ВСИПО могут иметь ссылки к директориям и/или файлам в общей зоне с общим доступом, а файлы в приватной области ВСИПО могут иметь ссылки к файлам и/или директориям в общей зоне с общим доступом.

Ссылочные файлы являются файлами со специальными атрибутами метаданных, и они также являются обычными файлами при их оценке с точки зрения аппаратной части. Такое выполнение реализовано для упрощения процессов резервного архивирования и восстановления ВСИПО. За счет предложенных вариантов реализации изобретения экономятся значительные объемы ОЗУ и дискового пространства. Варианты реализации изобретения также предназначены для повышения безопасности, поскольку пользователи ВСИПО не имеют доступа к системной корневой файловой директории. Когда пользователи ВСИПО обращаются к файлам из области с общим доступом, они не уведомляются о реальном месте нахождения файла, поскольку путь к файлу скрыт за ссылками. Как было раскрыто выше, пользователи ВСИПО не могут обращаться к метаданным, содержащимся в ссылочных файлах. Таким образом, процесс резервного архивирования ВСИПО остается совершенно не затронутым предоставлением совместного доступа к файлам и директориями для пользователей ВСИПО.

Для обеспечения безопасности и целостности системы предпочтительно, чтобы компьютерная система ограничивала пределы, в которых пользователи могут маркировать файлы, например, путем простановки специфических пометок. В общем случае, создание и простановка специфических пометок зависит от основной файловой системы. Например, для системы Linux system, специальный файловый флаг, например, "sticky bit" или промежуточный бит округления, может использоваться как специфическая пометка, поскольку этот флаг не используется стандартной файловой системой для символьных ссылок. В других файловых системах, например Windows NTFS, система может использовать другую технику для маркировки файлов.

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

Например, пользователь может создать ссылку на файл "/etc/shadow", который содержит зашифрованные пароли для системы. Соответственно, система не должна позволять пользователям маркировать файлы, доступные через точку «монтирования ». Для этого указанные ссылки должны создаваться только путем прямого доступа к приватной области пользователя средствами основной файловой системы, а путь доступа не должен содержать точку монтирования описанной файловой системы.

Например, система должна позволять создавать метки для файлов из дерева директории "/vz/private" (см. приведенное ниже обсуждение технологии Virtuozzo ™ в отношении директорий "vz"), но не должна позволять создавать такие метки для файлов из дерева директории "/vz/root".

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

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

Например, в VE пользователи могут быть ограничены использованием только смонтированного дерева, а не основной файловой системой. В этом случае, если операция "chroot" выполняется в отношении "/vz/root" для процессов пользователя, пользователи не смогут создать такой указатель, поскольку файловая система будет доступна с использованием "/vz/root". Как было раскрыто выше, такое исполнение имеет определенные преимущества с точки зрения безопасности.

Следует отметить, что в одном из вариантов реализации настоящее изобретение не требует использования системного вызова для монтирования, но настоящее изобретение может использовать системный вызов для монтирования в примерном варианте выполнения изобретения. Более того, настоящее изобретение не требует создания точки монтирования, когда пользователь изменяет файл (и создает копию в приватной файловой области). Файловая система может использовать единственную точку монтирования для объединения двух известных файловых деревьев (таких, например, как "/vz/private" в качестве приватной области и "/vz/шаблон" как общей области с совместным доступом, предназначенной только для чтения) в новое объединенное дерево (например, в "/vz/root", где с точки зрения пользователя появляются все файлы из /vz/шаблон и /vz/private).

Соответственно, для создания такой области система может использовать единственный вызов монтирования, в котором указанные два дерева использованы в качестве параметров. После создания указанной точки монтирования, указанное объединенное дерево будет пригодно для использования пользователем и все обращения с использованием указанного пути (например, к файлу "/vz/root/etc/passwd") будут обрабатываться драйвером файловой системы, поскольку операция пересечения путей пересечет /vz/root/. Любая из операций, относящихся к копированию при записи, и другие операции, относящиеся к использованию ссылок, будут выполняться драйвером файловой системы, и при этом не требуются другие операции монтирования.

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

Например, для того, чтобы сделать изменения видимыми, администратор или сам пользователь могут вызвать специальную процедуру, которая создаст такую ссылку в приватной области пользователя. Указанная ссылка будет указывать на область с общим доступом и, в типовом случае, будет прозрачна для пользователя. Указанная специальная процедура может, в обычном случае, создать нормальную «стандартную » ссылку на основную (или другими словами, лежащую ближе к основанию) файловую систему и позднее промаркировать указанную ссылку как «магическую » ссылку с использованием специальной процедуры обмена данными, реализованной драйвером файловой системы или ядром операционной системы.

Варианты реализации изобретения также предоставляют ряд преимуществ перед известными из уровня техники файловыми системами, такими как MFS (Mirage File System), которые требуют проведения нескольких поисков или использование моментальных копий системы и записи изменений в различные поддеревья в различные моменты времени. Например, предложенный вариант реализации использует ссылки или фиктивные файлы, которые позволяют системе проводить единственный поиск. Соответственно, предложенный вариант реализации использует меньше системных ресурсов, например, предложенный вариант реализации не требует кэшировать дополнительные компоненты директорий в кэше файловой системы для работы с дополнительными путями к файлам, связанными с моментальными копиями системы.

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

Примерная система для управления файлами в соответствии с ещё одним вариантом реализации изобретения проиллюстрирована на фиг. 7. Предложенная система передовым образом обеспечивает доступ к файловым шаблонам, расположенным на сетевом хранилище данных, тем самым обеспечивая экономию ресурсов компьютерной системы и повышая её устойчивость к сбоям. В иллюстративном варианте выполнения компьютерная система 100 содержит две исполняемые на ней виртуальных среды исполнения программного обеспечения (720А и 720В). Следует отметить, что в вычислительной системе 100 может быть активировано любое количество виртуальных сред исполнения программного обеспечения. ВСИПО 720А выполняет процессы 722А пользователя, а ВСИПО 720В выполняет процессы 722В пользователя. Виртуальные среды исполнения программного обеспечения 720А и 720В имеют свои собственные файловые системы 724А и 724В соответственно. Файловые системы 724А и 724В сообщаются с соответствующими им переадресаторами 728А и 728В виртуального хранилища данных через соответствующие драйвера 726А и 726В диска.

Переадресаторы 728А и 728В виртуального хранилища данных переадресуют (с использованием первой переадресации) запросы файлов к файловой системе 729, реализованной под управлением главной операционной системы 704. Файловая система может обращаться к файловым шаблонам, хранящимся в локальном хранилище данных 731 и посылать запрошенные файлы непосредственно к файловым системам 724А и 724В виртуальных сред исполнения программного обеспечения через средства ввода/вывода. Если запрошенный файл не найден в локальном хранилище данных 731, файловая система 729 переадресует запрос (с использованием второй переадресации) к обслуживающей процедуре (утилите) 730 загрузки. Утилита 730 загрузки имеет локальную точку монтирования для удаленного сетевого хранилища данных 732, и запрошенный файл может быть загружен в утилиту 730 из шаблонов, расположенных на сетевом хранилище данных 732. Затем загруженные файлы переадресуются обратно к файловой системе 729 и предоставляются файловым системам 724А и 724В соответствующих виртуальных сред исполнения программного обеспечения через системные средства ввода/вывода. Запрошенные файлы также представляются в локальное хранилище данных 731 загрузочной утилитой 730. Таким образом, только ранее запрошенные файлы хранятся локально в локальном хранилище данных 731, за счет чего могут быть сэкономлены ресурсы памяти вычислительной системы 100.

Способ управления файлами в соответствии с предпочтительным вариантом выполнения показан на фиг. 8. Предложенный способ содержит запуск виртуальных сред исполнения программного обеспечения на компьютерной системе (шаг 800) и создание дерева файловой системы, содержащего описатели всех файлов, требуемых для каждой ВСИПО, исполняемой на вычислительной системе (шаг 810). Также на шаге 820 создается общее дерево файловой системы с шаблонными файлами, которые могут быть одновременно запрошены виртуальными средами исполнения программного обеспечения. Указанные файлы копируются из общего дерева файловой системы с шаблонными файлами в дерево локальной файловой системы на шаге 830. На шаге 840 создаются фиктивные файлы, содержащие ссылки к общему дереву файловой системы с шаблонными файлами из дерева локальной файловой системы.

Затем на шаге 850 создаются фиктивные файлы, содержащие ссылки к общему дереву файловой системы с шаблонными файлами из дерева файловой системы ВСИПО, и на шаге 860 создаются фиктивные файлы, содержащие ссылки к сетевому устройству хранения данных из общего дерева файловой системы с шаблонными файлами. Когда на шаге 870 одна из виртуальных сред исполнения программного обеспечения пытается обратиться к файлу из сетевого устройства хранения данных через файловую систему ВСИПО с использованием второй переадресации, файл загружается из сетевого устройства хранения данных на локальное хранилище данных (шаг 880) и доступ к файлу обеспечивается с использованием второй переадресации (шаг 990).

Фиг. 9А иллюстрирует дополнительные подробности реализации системы в соответствии с одним из предпочтительных вариантов выполнения. Примерный вариант системы показан на фиг. 9А с использованием только одного ВСИПО 910А, исполняемого на вычислительной системе 100. Следует отметить, что предложенные способ и устройство могут быть реализованы с любым количеством виртуальных сред исполнения программного обеспечения, запущенных на одной компьютерной системе 1000 или на компьютерном кластере. Локальное хранилище данных 731 содержит файловую систему 940А ВСИПО, которая содержит фиктивные файлы 941А, содержащие ссылки (указатели) на общее дерево 950А файловой системы с шаблонными файлами.

Общее дерево 950А файловой системы с шаблонными файлами содержит фиктивные файлы 951А, содержащие ссылки на файлы, которые могут храниться локально 950А или на сетевом хранилище данных 732. Файлы, на которые ссылаются фиктивные файлы 951А, загружаются в общую файловую систему 950А. Затем файлы из общей файловой системы 950А, на которые ссылаются фиктивные файлы 941А, загружаются в файловую систему 940А ВСИПО и затем предоставляются ВСИПО 910А через системные средства ввода/вывода. Файлы загружаются и кэшируются в соответствии с предварительно определенными правилами.

Набор операций, разрешенных для локально хранящихся файлов 950А или хранящихся на сетевом хранилище данных 732 (например, шаблонных файлов), не ограничен операциями «только чтение ». Например, может быть изменен параметр «время доступа », который является полем структуры файла, которое «прикреплено » к файлу.

На фиг. 9В находятся две виртуальные среды исполнения программного обеспечения 720А и 720В, которые могут исполнятся на двух различных физических машинах 930В и 940В. При этом виртуальные среды исполнения программного обеспечения имеют свои собственные локальные хранилища данных 731А и 731В. Виртуальные среды исполнения программного обеспечения могут иметь связи с удаленным сетевым хранилищем данных или с другими виртуальными средами исполнения программного обеспечения, с использованием сети системной области (system area network (SAN)), сети с использованием высокоскоростной коммутируемой последовательной шины (InfiniBand), сети TCP/IP (протокол управления передачей/протокол Интернет) и т.п. Сетевое хранилище данных 732 содержит шаблоны, которые нужны для функционирования виртуальных сред исполнения программного обеспечения. Такая иллюстративная система показывает, как виртуальные среды исполнения программного обеспечения получают шаблоны, которые хранятся на сетевом хранилище данных 732 или в локальных хранилищах данных виртуальных сред исполнения программного обеспечения. В предпочтительном варианте выполнения существует три варианта доступа к данным: из удаленного сетевого хранилища данных, из локального хранилища данных ВСИПО и комбинация предыдущих двух вариантов.

Фиг. 9В показывает три шаблона на сетевом хранилище данных: шаблон 732А, шаблон 732В и шаблон 732С. Локальные хранилища данных 731А и 731В содержат файловые системы 932В и 942В ВСИПО. Фиктивные файлы 933В и 943В, которые расположены в приватной файловой системе ВСИПО, содержат ссылки к общему дереву файловой системы с шаблонными файлами 934В и 944В. Первая ВСИПО 720А содержит только один шаблон «template 2 », который соответствует шаблону 732А на сетевом хранилище данных. Для первой ВСИПО 720А требуется два шаблона: шаблон «template 1 », который находится во второй ВСИПО 720В, и шаблон «template 4 », который соответствует шаблону 732С на сетевом хранилище данных 732. Сходная ситуация существует и для второй ВСИПО. Вторая ВСИПО содержит шаблон «template 1 », однако, для реализации указанной ВСИПО требуются шаблон 732А и шаблон 732В.

Таким образом, запросы на обращение к файлам от виртуальных сред исполнения программного обеспечения переадресуются к файловым системам 932В и 942В. Файловая система с использованием фиктивных файлов проверяет место нахождения требуемых шаблонов. Запрос файлов дает возможность обращения к общему дереву файловой системы. Ссылки (переадресации) в фиктивных файлах 935В и 945В, которые используются общим деревом файловой системы 934В и 944В, содержат файлы, которые могут храниться локально или на удаленном сетевом хранилище данных 732.

Две виртуальные среды исполнения программного обеспечения одновременно на основе своих запросов могут получить одни и те же шаблоны, которые расположены на сетевом хранилище данных 732. Также фиктивные файлы могут иметь файлы, хранящиеся на локальных хранилищах данных других виртуальных сред исполнения программного обеспечения. В этом случае первая ВСИПО 720А может извлечь шаблон «template 1 » из физической машины 930В. Таким образом, вторая ВСИПО 720В, которая содержит требуемый шаблон, будет еще одним сетевым хранилищем данных для первого ВСИПО 720А. Требуемые шаблоны могут загружаться и предоставляться виртуальными средами исполнения программного обеспечения.

Фиг. 9С иллюстрирует способ миграции данных ВСИПО в соответствии с предпочтительным вариантом выполнения изобретения. Сетевое хранилище данных 732 содержит шаблоны виртуальных сред исполнения программного обеспечения, которые могут быть использованы для развертывания и обновления виртуальных сред исполнения программного обеспечения. Фиг. 9С показывает перемещение (миграцию) данных ВСИПО с целью развертывания новой ВСИПО на любой физической машине. На сетевом хранилище данных 732 существуют два шаблона: шаблон 732А и шаблон 732В. В этом примерном варианте системы, шаблоны «template 2 » и «template 3 » расположены на физической машине 930В. В этом случае шаблон «template 1 » соответствует шаблону 732А на сетевом хранилище данных 732, и сходным шаблону «template 1 » образом шаблон «template 2 » соответствует шаблону 732В.

Таким образом, если существует необходимость реализовать ВСИПО 720А на этой машине, уже существуют два из требуемых шаблонов. Отсутствующий шаблон 732А может быть загружен с удаленного сетевого хранилища данных 732. Указанный шаблон может быть получен с использованием раскрытого ранее способа, если существует необходимость переместить ВСИПО 720А с одной физической машины 930В на ещё одну физическую машину 940В, не требуется загрузка шаблонов для ВСИПО 720А. Отсутствующие шаблоны могут быть немедленно перемещены с сетевого хранилища данных 732, и с первой физической машины 930В на новую физическую машину 940В. В этом случае шаблон «template 2 » уже существует на второй физической машине 940В, шаблон «template 1 » будет скопирован с сетевого хранилища данных 732, а шаблон «template 3 » будет загружен с первой физической машины 930В.

Доступ к данным в процессе создания ВСИПО и в процессе запуска ВСИПО может обеспечиваться различными путями. В процессе создания ВСИПО шаблоны, необходимые для запуска ВСИПО, должны быть доступны локально. Когда все необходимые шаблоны доступны, ВСИПО может быть запущена. С другой стороны, запуск ВСИПО требует использования фиктивных файлов или ссылок на файловые шаблоны, а сами файлы могут быть недоступными в процессе запуска.

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

Ещё одна возможность миграции данных ВСИПО заключается в получении требуемых файлов при запуске ВСИПО. В этом случае миграция данных ВСИПО может быть реализована «по запросу » путем перемещения (миграции) целых файлов. Также при миграции данных могут копироваться файлы и части файлов, требуемые в процессе исполнения ВСИПО, например при попытке открытия файла, или доступа к любому шаблонному файлу. Миграция частей файлов раскрыта в патенте США № 5813008, использованном в настоящем описании в качестве ссылки и выданном на имя Microsoft Corporation, который описывает технологию хранения данных в единственном экземпляре (Single Instance Storage (SIS)).

Также в процессе "миграции по запросу" все требуемые данные могут быть перемещены в фоновом режиме.

Автономные и оперативные процессы миграции могут быть использованы в настоящем изобретении совместно с предложенным процессом миграции данных, например, для фоновой синхронизации данных. Таким образом, указанные процессы могут быть перемещены параллельно, или последовательно, или в заданном порядке, выбранном в соответствии с назначенной задачей. Заявка США № 10/837618, поданная 4 мая 200 г., озаглавленная "Система, вычислительный программный продукт и способ миграции данных в режиме реального времени с минимальным временем простоя", раскрывает возможность минимизации времени простоя в процессе миграции и включена в настоящее описание как ссылочный материал. Такой режим достигается приостановкой ( «замораживанием ») всех процессов на сервере-источнике данных и перемещении требуемых данных с сервера-источника данных на сервер-приемник данных.

В соответствии с фиг. 10, примерная система для реализации изобретения содержит вычислительное устройство общего назначения, вид с компьютера или сервера 100 или сходного устройства, содержащего блок обработки 21, системную память 22 и системную шину 23, которая соединяет различные системные компоненты, включая системную память, с блоком обработки 21. Системная шина 23 может быть выполнена любого типа и из различных типов структур шин, в том числе шины памяти или контроллера памяти, периферийной шины и локальной шины, с использованием любой архитектуры из всего разнообразия архитектур системных шин.

Системная память содержит постоянное запоминающее устройство (ПЗУ, ROM) 24 и запоминающее устройство с произвольной выборкой (ЗУПВ, RAM) 25. Основная система ввода-вывода 26 (ОСВВ, BIOS), хранящаяся в ПЗУ 24, содержит основные процедуры, которые помогают передавать информацию между элементами внутри компьютера 100, например, при запуске. Компьютер 100 может также содержать привод 27 жесткого диска для считывания и записи на не отраженный на чертеже жесткий диск, привод 28 магнитного диска для считывания и записи информации на магнитный диск 29 и привод 30 оптического диска для считывания и записи на сменный оптический диск 31, такой как CD-ROM, DVD-ROM или иной оптический носитель данных.

Привод 27 жесткого диска, привод 28 магнитного диска и привод 30 оптического диска соединены с системной шиной 23 интерфейсом 32 жесткого диска, интерфейсом 33 магнитного диска и интерфейсом 34 оптического диска соответственно. Приводы и взаимодействующие с ними машиночитаемые носители данных обеспечивают энергонезависимое сохранение машиночитаемых инструкций, структур данных, программных модулей и других данных для компьютера 100. Хотя примерная среда исполнения, раскрытая в настоящем описании, использует жесткий диск, сменный магнитный диск 29 и сменный оптический диск 31, лицо, сведущее в уровне техники, должно принять во внимание, что другие виды машиночитаемых носителей данных могут хранить данные, доступные для компьютера, например магнитные кассеты, энергонезависимые карты памяти, цифровые видеодиски, картриджи Бернулли, оперативные запоминающие устройства, постоянные запоминающие устройства, и сходные с ними устройства могут также использоваться в иллюстративных вариантах исполнения программного обеспечения.

Несколько программных модулей могут храниться на жестком диске, магнитном диске 29, оптическом диске 31, ПЗУ 24 или ЗУПВ 25, в том числе и операционная система 35 (в предпочтительном варианте Windows ™ 2000). Компьютер 100 содержит файловую систему 36, такую как Windows NT ™ File System (NTFS), взаимодействующую с операционной системой 35 или включенную в операционную систему 35, одну или больше прикладных программ 37, другие программные модули 38 и данные 39 для программ. Пользователь может вводить команды и информацию в персональный компьютер 100 путем использования устройств ввода, таких как клавиатура 40 и указательное устройство 42. В качестве других устройств ввода (не показаны) могут использоваться микрофон, джойстик, игровая панель, спутниковая тарелка, сканер и т.п. Эти и другие устройства ввода часто соединяются с блоком обработки 21 с использованием интерфейса последовательного порта 46, который соединен с системной шиной, но может быть соединен с другими интерфейсами, такими как параллельный порт, игровой порт или универсальная последовательная шина (universal serial bus (USB)). Монитор 47 или другое устройство отображения также соединен с системной шиной 23 через интерфейс, такой как видеоадаптер 48. Кроме монитора 47 персональный компьютер обычно может содержать и другие периферийные устройства вывода (не показаны), такие как громкоговорители и устройства печати.

При использовании локальной сетевой среды персональный компьютер 100 соединен с локальной сетью 51 через сетевой интерфейс или адаптер 53. При использовании сетевой среды широкого доступа персональный компьютер 20 обычно содержит модем 54 или другое средство передачи информации через сеть широкого доступа 52, такую как Интернет. Модем 54, который может быть встроенным и внешним, соединен с системной шиной 23 через интерфейс последовательного доступа 46. В сетевой среде программные модули, изображенные относящимися к персональному компьютеру 100 или к его части, могут храниться на удаленном устройстве хранения памяти. Следует принять во внимание, что сетевые соединения показаны в иллюстративных целях и могут быть использованы другие средства обеспечения коммуникационных соединений между компьютерами.

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

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