Система размещения и извлечения файлов выделенных серверов

 

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

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

Полезная модель относится к виртуальным частным серверам (от английского - Virtual Private Server, VPS). Более точно, полезная модель относится к кэшированию (т.е. процедуре размещения и извлечения из кэш-памяти) общих файлов виртуальных частных серверов.

Уровень техники

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

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

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

Таким образом, другая проблема организации множества виртуальных частных серверов на едином физическом хост-компьютере состоит в предоставлении каждому виртуальному частному серверу отдельной файловой системы. Файловая система представляет собой организованную совокупность данных (в хранилище данных), хранящуюся на одном или более физических запоминающих устройствах, например, накопителях на жестких дисках или RAID-накопителях (от английского RAID - Redundant Array of Inexpensive Disks, избыточный массив недорогих дисков).

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

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

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

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

Раскрытие полезной модели

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

Согласно варианту осуществления, в составе системы имеется основной компьютер, обеспечивающий координированный доступ к ресурсам компьютера, на котором выполняется ядро операционной системы, содержащее в своем составе сервис файловой системы. Ядро операционной системы поддерживает множество виртуальных частных серверов. Пользователям сервиса виртуальных частных серверов доступно, по крайней мере, одно приложение. Каждый виртуальный частный сервер имеет свое собственное виртуальное пространство адресов (или собственный набор адресов), которое включает: адреса оперативного запоминающего устройства (ОЗУ); адреса IP (от английского Internet Protocol - протокол сети Интернет); адреса накопителя на жестких дисках; имена по протоколу SMB (от английского Server Message Block - совокупность серверных сообщений, сетевой протокол удаленного доступа к файлам, принтерам и другим сетевым ресурсам); имена по протоколу TCP (от английского Transmission Control Protocol - протокол управления передачей); имена каналов и т.д. Каждый виртуальный частный сервер имеет свои собственные объекты и файлы. С точки зрения ядра операционной системы каждый из упомянутых объектов и файлов каждого из виртуальных частных серверов имеет уникальный идентификатор.

Каждый из виртуальных частных серверов не может воздействовать на файлы или объекты другого виртуального частного сервера (контейнера), а также не может получить доступ к информации о процессах, выполняемых на другом виртуальном частном сервере. В состав ресурсов сервера входят: пространство виртуальной памяти, выделенное каждому пользователю; пространство памяти подкачки, выделенное в ядре операционной системы для поддержки виртуальных частных серверов; пространство памяти подкачки, используемое ядром операционной системы для поддержки процессов пользователя либо в форме совместного использования, либо в эксклюзивной форме (т.е. для поддержки процессов пользователя либо одного, либо множества виртуальных частных серверов); резидентная память, выделенная в ядре операционной системы; физическая память, используемая процессами пользователя; совместно используемые ресурсы центрального процессорного устройства (ЦПУ); секретные дескрипторы (или иные идентификаторы, относящиеся к разграничению прав доступа пользователей и виртуальных частных серверов); объекты и файлы, используемые ядром операционной системы; интерфейсы ввода-вывода и уровень их использования конкретными виртуальными частными серверами; файловое и (или) дисковое пространство памяти; ограничения, накладываемые на индивидуальные ресурсы пользователя.

Каждый виртуальный частный сервер содержит: совокупность процессов, причем каждый из них содержит, по крайней мере, один поток, обслуживающий соответствующих пользователей; совокупность объектов и файлов, ассоциированных с указанным множеством потоков. Согласно варианту осуществления, если виртуальный частный сервер использует файлы для операций чтения и записи, то для каждого из файлов основная управляющая операционная система с помощью хэш-функций вычисляет хэш-значения (контрольные суммы). Такие хэш-значения (контрольные суммы) используются как атрибуты (хэш-атрибуты) файла. Указанные значения хэш-атрибутов файлов (контрольные суммы) формируются при создании файлов (т.е. при выполнении операции закрытия файла). Хэш-атрибуты входят в состав расширенных атрибутов файлов, которые хранятся совместно с файлами.

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

Программное обеспечение сервера может представлять собой дополнение к любой из операционных систем: Microsoft Windows NT Server - Terminal Server Edition; Microsoft Windows 2000 Server - Terminal Server; Microsoft Windows Server 2003 - Terminal Services, или любому серверу, основанному на платформе Microsoft Windows. Операционная система содержит совокупность потоков, предназначенных для выполнения запросов пользователей. Виртуальные частные серверы представляются пользователю по существу как выделенные серверы и в общем случае предоставляют функциональность выделенного сервера или удаленного компьютера, включая все операции администрирования.

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

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

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

На чертежах показано:

на фиг. 1 - схема кэш-памяти дискового запоминающего устройства согласно варианту осуществления;

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

на фиг. 3 - графическое представление процедуры формирования кэш-памяти файлов согласно варианту осуществления;

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

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

Осуществление полезной модели

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

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

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

По сути, с точки зрения пользователя виртуальный частный сервер функционирует так же, как и сервер с удаленным доступом, и предоставляет те же услуги, например, через выделенный IP-адрес. Следует учитывать, что некоторые процессы, выполняемые в составе ядра операционной системы, могут предоставлять услуги множеству виртуальных частных серверов.

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

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

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

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

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

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

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

Если файл открыт для записи, то хэш-атрибут (контрольная сумма) файла отбрасывается, и по завершении операции записи в файл формируется новое значение атрибута. Эти действия выполняются обновленной подсистемой ввода-вывода ядра операционной системы. Согласно варианту осуществления, хэш-атрибут (контрольная сумма) формируется при выполнении операции закрытия файла только для файлов, расположенных в директории с атрибутом checksum=auto (от английского - контрольная сумма=автоматически). Например, директория /bin имеет атрибут checksum=auto.

Если в указанной директории записан файл /bin/xxx, то для этого файла вычисляется хэш-атрибут (контрольная сумма) XXX и записывается в атрибут файла checksum=XXX. Следует учитывать, что, например, директория /home не имеет атрибута контрольной суммы, и файлы пользователя в этой директории не подвергаются хэшированию (хэш-атрибуты не вычисляются), поскольку вероятность совпадения файлов пользователя крайне мала по сравнению с вероятностью совпадения файлов контейнера.

Согласно варианту осуществления, могут применяться известные алгоритмы хэширования, например, SHA20, Gold Fish, EСВ, SHA1, SHA2, SHA256, SHA512 и т.д. Если файл хранится на уровне блоков данных (кластеров), то значение хэш-атрибута может изменяться при изменении блоков данных, образующих файл. В таком случае значение хэш-атрибута пересчитывается с учетом соответствующего блока данных. Эти операции должны выполняться быстро, в связи с чем рекомендуется использовать простую (короткую) хэш-функцию. Альтернативный вариант заключается в расчете и хранении значений хэш-атрибутов для каждого блока данных.

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

Следует учитывать, что основное преимущество варианта осуществления полезной модели состоит не столько в экономии объема доступной памяти дискового запоминающего устройства, сколько в снижении числа обращений к устройствам данного типа. То есть, достоинствами являются большая производительность и быстродействие системы. Например, в случае, если 100 идентичных виртуальных серверов (контейнеров) случайным образом обращаются к 10 страницам, то общее число обращений по сравнению с обычной системой сокращается на (100-1)×10. Следует учитывать, что 990 случайных обращений к обычному традиционному накопителю на жестких дисках занимает приблизительно 10 с.

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

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

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

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

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

На фиг. 1 показана схема кэш-памяти дискового запоминающего устройства согласно варианту осуществления полезной модели. Создается файл, вычисляется значение хэш-атрибута (контрольной суммы), это значение помешается в один из вариантов кэш-памяти ПО "centos-6.tgz" шаблона файла (цифра 6 может обозначать номер версии файла, "tgz" - расширение файла, означающее, что это контейнер сжатых данных, а не виртуальный контейнер). Назначается атрибут контрольной суммы файла ("x-attr:csum=HEX16"). При создании контейнера указанный файл копируется вместе с предварительно рассчитанным значением "x-attr" (значением контрольной суммы) из кэш-памяти шаблонов в файл (виртуальное запоминающее устройство, образ диска) "ploop" (от английского "p"+"loop", в технологии виртуализации OpenVZ - файл, содержащий файловую систему контейнера) 120. Файл "ploop" 120 представляет собой совокупность виртуального блочного устройства и соответствующего драйвера, который получает данные из файла, а не от физического запоминающего устройства. Файл "ploop" 120 является результатом переноса технологии кольцевого запоминающего устройства (от английского - loop device, виртуальное запоминающее устройство, содержащее файловую систему) из операционной системы Linux, которое поддерживает: модульную архитектуру; различные форматы файлов (плоский, QCOW2 и др.); сетевое хранение и соответствующий протокол сетевой файловой системы NFS; создание моментальных копий содержимого запоминающего устройства и быструю инициализацию через стековые образы и трекер совмещенной записи для ускоренной миграции на лету (живой миграции). Файл ploop 120 является виртуальным блочным кольцевым дисковым устройством, которое в дополнение к возможностям устройства типа ploop обладает расширенным набором возможностей, в частности обеспечивает динамическое изменение объема, моментальное создание копий содержимого, резервное копирование и т.д. Основная идея состоит в размещении файловой системы контейнера в файле. При создании контейнера файл копируется в директорию 130 /bin/bash/. Виртуальное запоминающее устройство ploop 120 проверяет файлы в приватной директории контейнера /vz/private/100/fs. Затем, если файл имеет хэш-атрибут (контрольную сумму) x-attr: csum=HEX16, то файл помещается в кэш-память локального шаблона 140 /opt/vzcached-file совместно с атрибутом контрольной суммы файла х-attr: csum=HEX16. Затем файл сохраняется (150) локально по адресу /opt/cached-file со своим атрибутом x-attr: csum=НЕХ16 для использования контейнером в случаях, когда сохраненный в кэш-памяти файл недоступен (т.е. утерян или усечен).

Файл из кэш-памяти 140 шаблонов /opt/vzcached-file перемещается в кэш-память 160 дискового запоминающего устройства /vz/pfcache/HEX1-2/HEX3-16. Альтернативный вариант заключается в том, что файл из локального запоминающего устройства 130 контейнера /bin/bash/ не помещается в кэш-память 140, однако помещается к кэш-память 160 дискового запоминающего устройства при необходимости (по запросу) или отложено. Отложенное кэширование означает, что блок управления и поддержки пользователя собирает статистику обращений к файлам контейнеров, а ядро операционной системы по прошествии некоторого времени помещает файлы в кэш-память на основе статистических данных, обработанных блоком управления и поддержки пользователя.

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

Фиг.2 поясняет процедуру формирования хэш-атрибута (контрольной суммы) файла контейнера согласно варианту осуществления полезной модели. Согласно варианту осуществления, при создании контейнера файл вместе с ранее рассчитанным значением атрибута контрольной суммы "xattr" извлекается из кэш-памяти шаблонов и копируется в локальное запоминающее устройство 130 "/bin/bash/" контейнера.

При инсталляции соответствующего шаблона приложения исходный менеджер пакетов компании Red Hat или иной менеджер пакетов или инсталлятор устанавливает файлы и, опционально, шаблоны. Ядро принимает участие в этой процедуре и рассчитывает контрольные суммы "x-attr:csum=HEX16" файлов в кэш-памяти 210 "/opt/plesk" в отложенном режиме. Кэш-память 160 (см. фиг.1) формирует контрольные суммы для измененных файлов и устанавливает значения их атрибутов "x-attr". Затем обновляются значения атрибутов "x-attr:csum=HEX16" файлов в приватной директории "/bin/Is" контейнера.

Фиг.3 поясняет процедуру заполнения кэш-памяти согласно варианту осуществления полезной модели. Шаблоны приложений устанавливаются менеджером пакетов компании Red Hat (этой процедуре способствует ядро операционной системы), вычисляются "на лету" значения атрибутов "x-attr". Кроме того, кэш-память 160 пересчитывает значения контрольных сумм тех файлов, которые были изменены по сравнению с состоянием на момент предыдущего вычисления значений контрольных сумм.

Если значение индексного дескриптора некоторого файла (контрольная сумма и длина файла) совпадает со значением индексного дескриптора другого файла, к которому осуществляется обращение, то ядро операционной системы может запросить кэширование файла. Например, значения атрибутов файлов, расположенных в приватных директориях контейнеров 310 и 320, одинаковы (совпадают контрольные суммы и длины файлов). Ядро 330 операционной системы обнаруживает факт использования одного и того же файла (контрольная сумма и длина одинаковы) и уведомляет об этом блок управления и поддержки пользователя кэш-памяти. Блок управления и поддержки пользователя 340 в отложенном режиме принимает решение, следует ли и когда именно выполнить кэширование общего для контейнеров файла. Для ограничения размера кэш-памяти путем использования образа файла применяется виртуальное запоминающее устройство ploop 350. Виртуальное запоминающее устройство ploop является разновидностью виртуального дискового запоминающего устройства или образа диска с определенными характеристиками и свойствами, описанными выше, снабженного соответствующими программами-драйверами. Следует учитывать, что виртуальное запоминающее устройство ploop 350 может применяться как отдельный раздел дискового запоминающего устройства.

Согласно варианту осуществления, для хранения ссылок-перенаправлений как для шаблонов, так и для размещенных в кэш-памяти файлов применяется глобальная кэш-память /vz/pfcache. Файлы кэшируются в отложенном режиме: изначально кэш-память pfcache дискового запоминающего устройства пуста, она заполняется на основе статистики доступа к файлам контейнера, собираемой блоком управления и поддержки пользователя 340 кэш-памяти. Кэш-память дискового запоминающего устройства заполняется динамически, в нее помещаются только общие для контейнеров файлы, к которым происходит обращение. Неиспользуемые файлы удаляются из кэш-памяти по прошествии установленного времени.

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

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

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

Следует учитывать, что шаблоны могут помещаться в кэш-память в форме "simfs" (представление в виде памяти дискового запоминающего устройства или виртуальной памяти, используемое в проекте по технологии виртуализации OpenVZ), но с атрибутами, содержащими контрольные суммы файлов. Шаблоны могут быть удалены просто путем удаления помещенного в кэш-память файла "template.tgz" (например, при обновлении).

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

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

Следует учитывать, что копирование кэш-памяти или шаблонов не требуется. Кэш-память дискового запоминающего устройства воссоздается автоматически (в отложенном режиме и по требованию) в зависимости от обращений к файлам. Согласно варианту осуществления, виртуальный частный сервер (контейнер) может быть обновлен по сравнению с текущим состоянием. Монтируется контейнер, монтируется образ "ploop", затем копируются файлы. Образ "ploop" выглядит аналогично другим образам дисковых накопителей, например, образам типа ISO (от английского International Organization for Standardization - Международная организация по стандартизации) и др. Иными словами, для файла или индексного дескриптора файловая система выглядит так, как будто бы она является реальной. Альтернативный вариант заключается в сохранении в запоминающем устройстве файлов (шаблонов) вместе с рассчитанными контрольными суммами.

Согласно варианту осуществления, шаблон приложения инсталлируется следующим образом:

пользователя, отладочные данные, настройки и т.д. Пакеты инсталлируются как есть, после чего выполняется сортировка данных;

- ядро операционной системы способствует инсталляции и формирует на лету контрольные суммы файлов, созданных менеджером пакетов компании Red Hat;

- для формирования хэш-атрибутов (контрольных сумм) используется усиленный алгоритм SHA1 (от английского Secure Hash Algorithm 1 - алгоритм криптографического хэширования тип 1).

Следует учитывать, что скорость вычислений алгоритма SHA1 достаточно высока. С использованием современного программного обеспечения скорость составляет около 300 МБ/с. Это значение сравнимо со скоростью передачи данных высокоскоростного дискового запоминающего устройства. Алгоритм SHA1 формирует значения большой длины (20 байт или 40 шестнадцатеричных слов), в связи с чем они должны быть закодированы в 27-символьный формат атрибута контрольной суммы с использованием алфавита [0, 1, , 9, а, b, , z, А, В, , ]. Согласно варианту осуществления, значения атрибутов, рассчитанные по правилу SHA1 + длина файла, сравниваются для выявления совпадающих индексных дескрипторов.

Согласно варианту осуществления, блок управления и поддержки пользователя кэш-памяти исполняется с использованием отдельного бинкаунтера (бинкаунтера пользователя) или иного контроллера ресурсов. Бинкаунтеры или бинкаунтеры пользователя являются набором ограничений и могут использоваться для предотвращения перегрузки системы работой блоков управления и поддержки пользователя. Бинкаунтеры ресурсов позволяют учитывать и держать под контролем потребление группой процессов ресурсов ядра операционной системы. Полный набор бинкаунтеров пользователя позволяет контролировать:

- пространство памяти ядра операционной системы. Все объекты ядра операционной системы, размещаемые по требованию пользователя, должны учитываться и ограничиваться для предотвращения сбоя типа "отказ в обслуживании" (от английского DoS - Denial of Service), например, страничные таблицы, структуры данных типа "task struct" (структура данных в ядре операционной системы, содержащая необходимую информацию для управления определенным процессом), "vmas" и т.д.;

- страницы виртуальной памяти.

Бинкаунтер пользователя позволяет ограничивать объем памяти, используемый контейнером, и вводит двухуровневое ограничение типа "нехватка памяти", следящее за потреблением контейнером ресурсов запоминающего устройства. Страницы, используемые контейнерами совместно, загружаются корректно в виде частей (процедура настраиваемая). Следует учитывать, что обычно ошибка типа "нехватка памяти" возникает, когда операционная система не может увеличить объем виртуальной памяти, поскольку все доступное пространство памяти запоминающих устройств заполнено. Различные операционные системы, такие как Linux, будут пытаться преодолеть подобную нехватку объема памяти путем прекращения выполнения процессов с низким приоритетом, этот механизм известен как "OOM Killer" (от английского Out of Memory Killer - устраняющий ошибку типа "нехватка памяти"). В некоторых случаях утечки памяти (т.е. неконтролируемого уменьшения объема свободной памяти компьютера, связанного с ошибками высвобождения ненужных участков памяти) механизм "OOM Killer" уязвим. Утечка памяти возникает, когда компьютерная программа некорректно выполняет операции размещения в пространстве памяти. В объектно-ориентированном программировании утечка памяти может происходить в случае, если хранящийся в памяти объект оказывается недоступным для выполняемой программы.

Полный набор бинкаунтеров пользователя также позволяет контролировать:

- сетевую буферную память. Эта память включает буферы приема и передачи по протоколу TCP/IP, буферы типа "dgram snd", "unix", "netlink" и др.;

- второстепенные ресурсы, учитываемые по значению:

- задания и файлы; механизмы и объекты "flock", "ptys", "siginfo", "pinned dcache";

- сокеты; механизмы и объекты "mem", "iptentry" (для контейнеров с виртуализированным доступом к локальной вычислительной сети).

Все или некоторые из перечисленных механизмов и объектов могут использоваться для ограничения показателя IOPS (от английского Input/Output Operations Per Second - число операций ввода-вывода в секунду) или пропускной способности или применительно к образу ploop (для ограничения объема памяти дискового запоминающего устройства, загруженного в кэш-памятью дискового запоминающего устройства).

Контроллеры ресурса Virtuozzo в дополнение к управлению использованием пространства памяти и ресурсов системы позволяют:

- контролировать загрузку ЦПУ; подробные сведения об этом ресурсе приведены в разделе Управление распределением времени центрального процессора;

- контролировать квоты дисковой памяти (см. руководство пользователя программного обеспечения Parallels Virtuozzo Containers компании Parallels, раздел Управление ресурсами);

- формировать и вести учет сетевого трафика (см. руководство пользователя программного обеспечения Parallels Virtuozzo Containers компании Parallels, раздел Управление ресурсами).

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

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

На фиг. 4 показана схема алгоритма, реализующего способ согласно варианту осуществления настоящей полезной модели. На шаге 410 создается контейнер. На шаге 420 файлы контейнера сохраняются в приватной директории контейнера. На шаге 430 ядро операционной системы выявляет файлы, к которым обращаются процессы контейнера. На шаге 440 для файлов, используемых процессами контейнера, формируются значения хэш-атрибутов (контрольных сумм). На шаге 450 атрибутам файлов присваиваются значения контрольных сумм и длин файлов.

На шаге 460 ядро операционной системы путем сравнения значений атрибутов (контрольных сумм и длин) файлов с хранящимися в базе данных значениями атрибутов общих для контейнеров файлов выявляет идентичные файлы, используемые другими контейнерами. На шаге 470 выполняется проверка условия: если выявлен факт идентичности файлов, то на шаге 480 файл из приватной директории контейнера копируется к кэш-память дискового запоминающего устройства; в противном случае осуществляется возврат на шаг 460, и ядро операционной системы выполняет проверку другого файла. Наконец, на шаге 490 файлу из приватной директории контейнера назначается ссылка-перенаправление на его копию в кэш-памяти дискового запоминающего устройства. Таким образом, в следующий раз, когда процесс контейнера обращается к упомянутому файлу, процесс перенаправляется на копию файла в кэш-памяти дискового запоминающего устройства.

На фиг. 5 показан пример структурной схемы хост-компьютера, который может быть использован в настоящей полезной модели. Пример системы, показанный на фиг. 5, содержит вычислительное устройство общего назначения в виде компьютера или сервера 20 или подобного вычислителя, содержащего вычислительное устройство 21, системное запоминающее устройство 22 и системную шину 23, которая объединяет различные компоненты системы, в том числе, системное запоминающее устройство 22 и вычислительное устройство 21. Системная шина 23 может быть шиной любого типа, в том числе, шиной запоминающего устройства или контроллером запоминающего устройства, периферийной шиной, локальной шиной, и быть построена по любой архитектуре шин. В состав системного запоминающего устройства входят постоянное запоминающее устройство (ПЗУ) 24 и ОЗУ 25.

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

Компьютер 20 может также содержать: накопитель 27 на жестких дисках для чтения и записи информации на жесткие диски (на фиг. 5 сами жесткие диски условно не показаны); привод 28 магнитных дисков для чтения и записи информации на сменные магнитные диски 29; привод 30 оптических дисков для чтения и записи информации на сменные оптические диски 31, такие, как CD-ROM (от английского Compact disk read-only memory - компакт-диск - постоянное запоминающее устройство), DVD-ROM (от английского Digital video disc read-only memory - цифровой видеодиск - постоянное запоминающее устройство) или оптические машиночитаемые среды другого типа.

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

Несмотря на то, что в описываемом варианте осуществления используется жесткий диск, магнитный диск 29 и сменный оптический диск 31, специалистам в данной области должно быть понятно, что для хранения данных, доступных компьютеру, могут использоваться машиночитаемые среды других типов, в частности магнитные кассеты, карты флэш-памяти, цифровые видеодиски, картриджи для накопителей Бернулли, накопители на ОЗУ и ПЗУ и т.п.

Некоторое число программных модулей может храниться на жестком диске, магнитном диске 29, оптическом диске 31, ПЗУ 24 или ОЗУ 25, в том числе, операционная система 35. Компьютер 20 содержит: файловую систему 36, связанную или входящую в состав операционной системы 35; одну или более прикладных программ 37; другие программные модули 38; данные 39 программ. Пользователь может вводить команды и информацию в компьютер 20 через устройства ввода, такие, как клавиатура 40 и указывающее устройство 42. В состав прочих устройств ввода (на фиг. 5 не показаны) могут входить: микрофон; джойстик; игровой пульт управления; спутниковая антенна; сканер; другие подобные устройства.

Перечисленные и прочие устройства ввода обычно соединяются с процессорным устройством 21 через интерфейс 46 последовательного порта, который подключается к системной шине. Однако указанные устройства ввода могут подключаться и через другие интерфейсы, такие, как параллельный порт, игровой порт, порт USB (от английского Universal serial bus - универсальная последовательная шина). Также к системной шине 23 через интерфейс, такой, как видеоадаптер 48, подключается монитор 47 или устройство другого типа для отображения видеоинформации. Помимо монитора 47, персональные компьютеры обычно содержат другие периферийные устройства вывода (на фиг. 5 не показаны), такие, как громкоговорители и принтеры.

Компьютер 20 может действовать в сетевом окружении с использованием логических подключений к одному или более удаленных компьютеров 49. Удаленным компьютером (компьютерами) 49 могут быть: другой компьютер; сервер; роутер; сетевой персональный компьютер; сетевое устройство, напрямую взаимодействующее с другими устройствами в сетевом окружении; другой узел той же сети. Кроме того, удаленный компьютер 49 обычно содержит многие или все функциональные узлы, описанные выше применительно к компьютеру 20, хотя показано только запоминающее устройство 50. В число логических подключений входят локальная вычислительная сеть (ЛВС) 51 и глобальная вычислительная сеть 52. Описанное сетевое окружение распространено в офисах, вычислительных сетях предприятий, сетях интранет и Интернет.

При использовании в сетевом окружении ЛВС компьютер 20 подключен к ЛВС 51 через сетевой интерфейс (сетевой адаптер) 53. При использовании в сетевом окружении глобальной вычислительной сети компьютер 20 обычно содержит модем 54 или иное средство установления соединения через глобальную вычислительную сеть 52, такую, как Интернет.

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

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

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

1. Система размещения и извлечения файлов выделенных серверов, содержащая:

основной компьютер, обеспечивающий координированный доступ к ресурсам компьютера;

хранилище данных, содержащее:

- совокупность файлов выделенных серверов, выполненная с возможностью поддержки сервисом файловой системы;

- совокупность файлов выделенных серверов, расположенных в индивидуальных областях памяти серверов;

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

- базу данных, хранящую данные внутренних системных имен файлов выделенных серверов;

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

в которой:

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

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

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

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

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

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

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

РИСУНКИ



 

Наверх