СПОСОБ ОПТИМИЗАЦИИ ХРАНЕНИЯ И ПЕРЕДАЧИ ДАННЫХ
METHOD FOR OPTIMISATION OF DATA STORAGE AND TRANSMISSION

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Функциональные возможности оптимизации хранения данных становятся все более и более важными для повышения конкурентоспособности на рынке файловых серверов и средств хранения данных. Оптимизация сетевого трафика также важна в вычислительной и сетевой средах, а также в устройствах, которые интегрированы в существующую сетевую инфраструктуру, и выполнение оптимизации сетевого трафика в реальном времени может обеспечить полезные эффекты.
Продолжается быстрый рост объема генерируемых, передаваемых и сохраняемых на компьютерах данных. Потребители и конкуренты стимулируют увеличивающуюся тенденцию использования методик оптимизации данных для уменьшения требований к хранению данных в местах их хранения. Например, данные могут быть сжаты, и для уменьшения места, необходимого для хранения данных, может быть уменьшена избыточность в сохраняемых данных. Подобные методики также применяются для уменьшения объема данных, которые пересылаются через сети, таким образом уменьшая затраты на ширину полосы LAN и WAN и понижая время ожидания приложения. Однако, как правило, существующие решения для хранения данных и передачи данных, главным образом, являются раздельными и различными, и не известно никакого единого решения. Поскольку методики хранения и передачи являются раздельными, то имеет место избыточность, несовместимость и непроизводительные потери, если хранение данных и передача данных рассматриваются в совокупности.
В качестве примера, файл, который хранится на сервере (то есть в устройстве для хранения данных), может быть одновременно сжат и сохранен в отдельных сегментах (например, фрагментах) при сохранении на сервере хранения данных. Если клиент выполняет запрос на передачу файла с сервера на клиент, то сервер должен собрать заново фрагменты и распаковать файл для восстановления файла перед передачей файла на клиент.
Подобным образом, для уменьшения ширины полосы пропускания (например, по сети), времени ожидания или затрат на передачу, сетевой агент может затем взять файл и снова сжать его перед передачей, передать сжатый файл в другое оконечное устройство, а затем распаковать его на другом конце канала передачи.
В данном случае может быть целесообразным наличие унифицированных инструментов для оптимизации данных и технических приемов, охватывающих хранение данных, протоколы передачи, API (интерфейсы прикладного программирования) файловых систем, устройства для хранения данных, серверы, клиенты, приложения и среду облачных вычислений. Такие инструменты и технические приемы могут расширить и улучшить существующие частичные и раздельные решения в сфере хранения данных и передачи данных посредством обеспечения оптимизированного хранения данных в местах их хранения, максимальное использование которого может быть достигнуто посредством протоколов пересылки и передачи данных.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Настоящее изобретение распространяется на способы, системы, устройства и компьютерные программные продукты для комплексной оптимизации хранения и передачи данных. Например, варианты осуществления, описанные в настоящей заявке, предусматривают улучшение и увеличение эффективности, и оптимизацию как хранения данных, так и передачи данных.
Один иллюстративный вариант осуществления предусматривает способ предоставления на клиент деталей оптимизации хранения данных в сервере хранения данных. Способ включает в себя доступ к метаданным, описывающим хранение данных файла на сервере хранения данных, причем данные файла хранятся на сервере хранения данных в форме, отличной от исходной формы данных файла. Метаданные предоставляют форму хранения данных файла в том виде, как они сохранены на сервере хранения данных.
Клиент может отправить запрос на данные файла на сервер хранения данных, а клиент может принять информацию из сервера хранения данных, включающую в себя данные файла, дополнительные метаданные, описывающие хранение данных файла на сервере хранения данных, и/или данные, представляющие, по меньшей мере, часть данных файла.
Другой иллюстративный вариант осуществления предусматривает предоставление на клиент деталей оптимизации хранения данных в сервере хранения данных. Этот способ включает в себя отправку метаданных, описывающих хранение данных файла на сервере хранения данных. Данные файла сохраняются на сервере хранения данных в форме, отличной от исходной формы данных файла, а метаданные предоставляют форму хранения данных файла в том виде, как они сохранены на сервере хранения данных.
Сервер хранения данных принимает запрос на данные файла из вычислительной системы, и сервер хранения данных отправляет информацию, содержащую данные файла, дополнительные метаданные, описывающие хранение данных файла на сервере хранения данных, и/или данные, представляющие, по меньшей мере, часть данных файла.
Другой иллюстративный вариант осуществления предусматривает компьютерный программный продукт для предоставления деталей оптимизации хранения данных в сервере хранения данных на клиент. Компьютерный программный продукт включает в себя исполняемые компьютером команды, помимо прочего, для отправки из вычислительной системы запроса на данные файла на сервер хранения данных и для приема из сервера хранения данных информации, включающей в себя информацию, описывающую хранение данных файла на сервере хранения данных.
Дополнительные признаки и преимущества изобретения будут сформулированы в последующем описании и частично будут очевидны из описания, или могут быть изучены посредством осуществления изобретения на практике. Признаки и преимущества изобретения могут быть реализованы и получены посредством инструментов и комбинаций, конкретно указанных в приложенной формуле изобретения. Эти и другие признаки настоящего изобретения станут еще более очевидны из последующего описания и приложенной формулы изобретения, или могут быть изучены посредством осуществления изобретения на практике, как сформулировано далее в настоящем документе.
Отметим, что данное кратное осуществление сущности изобретения предоставлено для введения подборки понятий в упрощенной форме, которые дополнительно описываются ниже в подробном описании. Данное краткое изложение сущности изобретения не предназначено для определения ключевых признаков или существенных признаков заявленного изобретения и при этом оно не предназначено для использования в качестве помощи в определении объема заявленного изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Для описания способа, при помощи которого могут быть получены вышеупомянутые и другие предпочтительные признаки изобретения, будет предоставлено более подробное описание изобретения, кратко описанное выше, посредством ссылки на его конкретные варианты осуществления, которые иллюстрированы на приложенных чертежах. Понимая, что эти чертежи изображают исключительно типичные варианты осуществления изобретения и, следовательно, не должны рассматриваться как ограничивающие его объем, изобретение будет описано и разъяснено с дополнительной спецификой и подробностями с применением сопроводительных чертежей, на которых:
Фиг.1 изображает иллюстративную комплексную оптимизацию хранения и передачи данных.
Фиг.2 изображает иллюстративную архитектуру для комплексной оптимизация хранения и передачи данных.
Фиг.3 изображает иллюстративный способ предоставления деталей оптимизации хранения данных, находящихся в сервере хранения данных, на клиент, если смотреть с точки зрения клиента.
Фиг.4 изображает иллюстративный способ предоставления деталей оптимизации хранения данных, находящихся в сервере хранения данных, на клиент, если смотреть с точки зрения сервера.
ПОДРОБНОЕ ОПИСАНИЕ
Настоящее изобретение распространяется на способы, системы, устройства и компьютерные программные продукты для комплексной оптимизации хранения и передачи данных. Например, варианты осуществления, описанные в настоящем документе, предусматривают повышение эффективности и оптимизацию, как хранения, так и передачи данных. Настоящее изобретение распространяется на способы, системы и компьютерные программные продукты для предоставления на клиент деталей оптимизации хранения данных, находящихся в сервере хранения данных. Варианты осуществления настоящего изобретения могут включать в себя специализированный компьютер или компьютер общего назначения, включающий в себя различные компьютерные аппаратные средства или модули, как более подробно описывается на протяжении всего документа.
Один иллюстративный вариант осуществления предусматривает способ предоставления на клиент деталей оптимизации хранения данных, находящихся в сервере хранения данных. Способ включает в себя доступ к метаданным, описывающим хранение данных файла на сервере хранения данных, при этом данные файла хранятся на сервере хранения данных в форме, отличной от исходной формы данных файла. Метаданные предоставляют форму хранения данных файла в виде, сохраненном на сервере хранения данных.
Клиент может отправить запрос на данные файла в сервер хранения данных, и клиент может принять с сервера хранения данных информацию, содержащую данные файла, дополнительные метаданные, описывающие хранение данных файла на сервере хранения данных, и/или данные, представляющие, по меньшей мере, часть данных файла.
Другой иллюстративный вариант осуществления предусматривает предоставление на клиент деталей оптимизации хранения данных, находящихся в сервере хранения данных. Этот способ включает в себя отправку метаданных, описывающих хранение данных файла на сервере хранения данных. Данные файла сохраняются на сервере хранения данных в форме, отличной от исходной формы данных файла, и метаданные предоставляют форму хранения данных файла в том виде, как они сохранены на сервере хранения данных.
Сервер хранения данных принимает запрос на данные файла из вычислительной системы, и сервер хранения данных отправляет информацию, содержащую данные файла, дополнительные метаданные, описывающие хранение данных файла на сервере хранения данных, и/или данные, представляющие, по меньшей мере, часть данных файла.
Другой иллюстративный вариант осуществления предусматривает компьютерный программный продукт для предоставления деталей оптимизации хранения данных, находящихся в сервере хранения данных, на клиент. Компьютерный программный продукт включает в себя исполняемые компьютером команды, помимо прочего, для отправки из вычислительной системы запроса на данные файла в сервер хранения данных, и для приема из сервера хранения данных информации, содержащей информацию, описывающую хранение данных файла на сервере хранения данных.
Варианты осуществления настоящего изобретения могут содержать или использовать специализированный компьютер или компьютер общего назначения, включающий в себя компьютерные аппаратные средства, такие как, например, один или несколько процессоров и системную память, как более подробно описано ниже. Варианты осуществления, в пределах объема настоящего изобретения, также включают в себя физические и другие машиночитаемые носители для переноса или хранения исполняемых компьютером команд и/или структур данных. Такой машиночитаемый носитель может быть любым известным носителем, к которому можно осуществить доступ посредством специализированной компьютерной системы или компьютерной системы общего назначения. Машиночитаемый носитель, на котором хранятся исполняемые компьютером команды, может являться физическим носителем данных. Машиночитаемый носитель, который переносит исполняемые компьютером команды, может являться средой передачи данных. Следовательно, для примера, но не ограничения, варианты осуществления изобретения могут содержать, по меньшей мере, два принципиально разных вида машиночитаемых носителей: компьютерный носитель данных и среду передачи данных.
Компьютерный носитель данных включает в себя RAM (оперативную память), ROM (постоянную память), EEPROM (электрически стираемую программируемую постоянную память), CD-ROM (постоянную память на компакт-дисках) или другой накопитель на оптических дисках, накопитель на магнитных дисках либо другие магнитные устройства хранения данных, либо любой другой носитель, который может быть использован для хранения желаемых средств программного кода в форме исполняемых компьютером команд или структур данных, и к которому можно осуществить доступ посредством специализированного компьютера или компьютера общего назначения.
Компьютерные программные продукты могут содержать один или несколько машиночитаемых носителей данных, на которых имеются кодированные исполняемые компьютером команды, которые, при исполнении их на одном или нескольких процессорах компьютера, выполняют способы, этапы и действия, описанные в настоящем документе.
«Сеть» определяется как один или несколько каналов связи, которые обеспечивают транспортирование электронных данных между компьютерными системами и/или модулями, и/или другими электронными устройствами. Если информация пересылается или предоставляется через сеть или другое коммуникационное соединение (либо проводное, либо беспроводное, либо комбинацию из проводного и беспроводного) на компьютер, то компьютер, должным образом, рассматривает соединение в качестве среды передачи данных. Среда передачи данных может включать в себя сеть и/или каналы связи, которые могут быть использованы для переноса желаемых средств программного кода в форме исполняемых компьютером команд или структур данных, к которым можно осуществить доступ посредством специализированного компьютера или компьютера общего назначения. Комбинации вышеупомянутых сред и носителей также охватываются понятием машиночитаемый носитель.
Кроме того, после достижения различных компонентов компьютерной системы, средства программного кода в форме исполняемых компьютером команд или структур данных могут быть автоматически переданы из среды передачи данных на компьютерный носитель данных (или наоборот). Например, исполняемые компьютером команды или структуры данных, принятые по сети или каналу связи, могут быть помещены в буфер в RAM в модуле сетевого интерфейса (например, «NIC» (платы сетевого интерфейса), а затем в конечном итоге переданы в RAM компьютерной системы и/или на компьютерные носители данных, которые в меньшей степени зависят от электропитания, в компьютерной системе. Следовательно, следует понимать, что компьютерные носители данных могут быть включены в состав компонентов компьютерной системы, которые также (или даже в первую очередь) используют среду передачи данных.
Исполняемые компьютером команды включают в себя, например, команды и данные, которые, при исполнении их в процессоре, предписывают компьютеру общего назначения, специализированному компьютеру или специализированному устройству обработки данных выполнять определенную функцию или группу функций. Исполняемые компьютером команды могут быть, например, двоичными файлами, командами в промежуточном формате, такими как на языке ассемблер, или даже программой на исходном языке. Несмотря на то, что изобретение описано языком, специфическим для структурных признаков и/или методологических действий, следует понимать, что объем изобретения, определяемый приложенной формулой изобретения, не обязательно ограничен описанными признаками или описанными выше действиями. Наоборот, описанные признаки и действия раскрыты в качестве иллюстративных форм реализации формулы изобретения.
Специалисты в данной области техники оценят, что изобретение может быть осуществлено на практике в среде сетевых вычислений при помощи многих типов конфигураций компьютерных систем, включая персональные компьютеры, настольные компьютеры, ноутбуки, устройства обработки сообщений, портативные устройства, многопроцессорные устройства, основанную на микропроцессорах или программируемую бытовую электронику, сетевые PC (персональные компьютеры), миникомпьютеры, большие универсальные компьютеры, мобильные телефоны, PDA (карманные персональные компьютеры), пейджеры, маршрутизаторы, коммутационные устройства и т.п. Изобретение также может быть осуществлено на практике в средах распределенных вычислительных систем, где задачи выполняются как локальными, так и удаленными компьютерными системами, которые связаны (либо посредством проводных каналов связи, либо беспроводных каналов связи, либо посредством комбинации проводных и беспроводных каналов связи) через сеть. В среде распределенной системы вычислений, программные модули могут быть расположены как в локальных, так и в удаленных запоминающих устройствах.
Используемый в настоящем документе термин «модуль» или «компонент» может относиться к программным объектам или стандартным подпрограммам, которые исполняются в вычислительной системе. Различные компоненты, модули, обработчики и службы, описанные в настоящем документе, могут быть реализованы в виде объектов или процессов, которые выполняются в вычислительной системе (например, в виде отдельных потоков). Несмотря на то, что система и способы, описанные в настоящем документе, реализованы, предпочтительно, в программных средствах, также возможны и предполагаются варианты реализации в аппаратных средствах или в комбинации программных средств и аппаратных средств. В этом описании, «субъект вычисления» может являться любой вычислительной системой, определенной ранее в настоящем документе, или любым модулем или комбинацией модулей, исполняющихся в вычислительной системе.
Фиг.1 изображает иллюстративную среду, в которой может работать настоящее изобретение. Фиг.1 изображает клиент 110, устройство 120 хранения данных и передачу 130 данных между клиентом 110 и устройством 120 хранения данных. Данные могут быть сохранены на устройстве 120 хранения данных во многих различных формах.
В вариантах осуществления, представленных в настоящем документе, описываются способы, системы и компьютерные программные продукты для объединения и оптимизации хранения 140 и передачи 130 данных в средах, таких как проиллюстрированные на Фиг.1.
Файл может быть сохранен в устройстве хранения данных в его исходной форме в виде непрерывного файла. Например, файл A 150 хранится в устройстве 120 хранения данных в неизменном неформатированном или исходном формате, включающем в себя все биты, байты и данные файла, как может быть представлено или может ожидаться приложением. Данные также могут быть сохранены во множестве альтернативных форматов. Например, данные могут быть хранены в сжатом формате для уменьшения необходимого места для хранения данных, и данные могут быть сохранены с использованием методик, предназначенных для уменьшения избыточности и дедупликации данных, хранящихся в устройстве хранения данных.
Данные могут быть сохранены в устройстве хранения данных во фрагментах или блоках, на которые разбивается файл, в отдельных и различных подмножествах данных. Например, файл может быть сохранен в устройстве хранения данных в виде фрагментов 160 с C1 по Cn. Фрагменты, подмножества данных из файла иногда могут называться блоками, и два термина, а именно, фрагменты и блоки, в настоящем документе используются попеременно. (Можно отметить, что термин файл, используемый в настоящем документе, описывает любую логически связанную группу или объем данных).
Устройство хранения данных может иметь алгоритм разбиения файла на фрагменты для оптимизации хранения данных. Например, файл может быть разбит на фрагменты 160 с C1 по Cn для сохранения файла в устройстве хранения данных более эффективным или компактным способом. Файл, разбитый на фрагменты, также может быть сохранен более эффективно посредством уменьшения избыточности в файле. Например, фрагмент C1 может встречаться в файле более одного раза. Вследствие разбиения файла на фрагменты, необходимо записать фрагмент C1 в устройство хранения данных один раз, и каждое повторное возникновение фрагмента C1 в файле впоследствии заменяется на ссылку или указатель на фрагмент C1.
Как может быть понятно, фрагменты или блоки не обязательно имеют фиксированную длину, и могут быть любой длины, любым объемом данных, или любой частью файла, включая весь файл. Фрагменты или блоки файла могут иметь произвольные длины и/или могут быть смещены в файле. Разделение файла на фрагменты или блоки может подчиняться любому алгоритму или технологии, и на размер фрагментов может влиять или он может быть обусловлен конкретными принципами устройства хранения данных, на которое данные должны быть сохранены, или канала передачи данных, по которому данные должны быть переданы.
Данные также могут быть сохранены в устройстве хранения данных в сжатом формате. Например, файл C 170 хранится в сжатом формате, в котором исходный файл был сжат с использованием алгоритма сжатия для создания файла, а именно, файла C 170, который занимает меньше места для хранения данных в устройстве хранения данных, чем исходные, несжатые данные файла. Сжатие файлов и данных может быть выполнено посредством методик, широко известных в данной отрасли, таких как способы сжатия Lempel-Ziv (LZ), Lempel-Ziv-Welch (LZW) и MPEG.
В устройстве хранения данных также может быть использована комбинация сжатия и фрагментации (или разбиения на блоки). Например, файл может быть разбит на фрагменты, которые затем сжимаются и сохраняются в виде сжатых фрагментов 180 c CH1 по CHn.
Другая оптимизация может быть получена посредством дедупликации файлов и данных, сохраненных в устройстве хранения данных. Дедупликация определяет идентичные файлы или идентичные части данных, которые могут встречаться в различных файлах, которые сохранены в устройстве хранения данных, и заменяет все, кроме одного, избыточные файлы или части данных посредством ссылки на контрольную копию файла или часть данных. Посредством дедупликации файлов, только одна копия каждого конкретного файла или части данных будет сохранена в устройстве хранения данных, благодаря чему экономится место для хранения данных, которое могло быть занято множеством дублированных файлов или частей данных.
Дедупликация также может быть выполнена на уровне фрагментов файла. Например, если два или более файлов были фрагментированы на фрагменты данных, то дублированные фрагменты могут быть заменены в устройстве хранения данных ссылками на копию избыточных фрагментов. Например, файл может быть сохранен в устройстве 120 хранения данных в виде фрагмента C1, и ссылки на другие фрагменты, уже сохраненные вместе с другими файлами, сохраняются в формате фрагмента в устройстве 120 хранения данных. Например, файл X может быть сохранен в виде ссылки на фрагменты с C1 по Cn; файл Y может быть сохранен в виде ссылки на фрагменты CH1, C1, и C2; в файл Z может быть сохранен в виде списка ссылок на фрагмент C1 и сжатые фрагменты с CH2 по CHn.
Дедупликация, фрагментация и сжатие данных файла также могут быть выполнены в виде комбинации. Например, файл может быть сохранен на устройстве хранения данных в виде одного или нескольких фрагментов, где каждый из фрагментов был сжат. Данные файла также могут быть сохранены в любой комбинации, где часть файлов хранится несжатыми, часть файлов хранится сжатыми, часть файлов хранятся во фрагментированном формате, и часть файлов хранится в виде фрагментов, в результате чего часть фрагментов сжата, а часть фрагментов не сжата.
В целом, если клиент запрашивает данные из устройства хранения данных, то клиент будет запрашивать данные для всего файла или для некоторой логической части файла. Например, клиент может запросить get(fileX) (получить (файл Х)) через файловую систему, или может запросить через файловую систему getFileBytes (fileX; bytes = 100-1000) (получить байты файла (файл Х; байты = 100-1000)). Если файл или часть файла передается 130 из устройства 120 хранения данных на клиент 110, то на устройство хранения данных ложится нагрузка по распаковке сжатых данных или по сборке заново фрагментов данных, для сборки заново и передачи на клиент запрашиваемых данных в формате, ожидаемом посредством клиента или приложения.
Варианты осуществления, описанные в настоящем документе, позволяют клиенту запрашивать или осуществлять доступ к информации, относящейся к хранению данных файла на устройстве хранения данных так, чтобы могли быть получены эффективность и оптимизация посредством предоставления на клиент информации о деталях хранения данных, хранящихся на устройстве хранения данных. Например, клиент 110 может выполнить запрос на предмет того, чтобы устройство 120 хранения проинформировало клиента о том, как файл X сохранен на устройстве для хранения данных. Устройство для хранения данных может сообщить на клиент, что файл X сохранен в виде сжатых фрагментов CH1 и CH3. Поскольку было бы более эффективным выполнение передачи сжатых фрагментов на клиент в сжатой форме, то клиент может запросить устройство хранения данных передать фрагменты CH1 и CH3 на клиент, вместо выполнения запроса get(fileX), который повлечет за собой выполнение устройством хранения данных распаковки фрагментов CH1 и CH3 и сборку файла заново до передачи файла на клиент.
Варианты осуществления также позволяют клиенту выполнять доступ к информации относительно хранения данных файла на устройстве хранения данных так, чтобы могли быть получены эффективность и оптимизация посредством предоставления на клиент информации относительно деталей хранения данных, хранящихся на устройстве хранения данных. Например, клиент 110 может осуществить доступ к локально кэшированной или сохраненной информации, определяющей, как файл X сохранен на устройстве хранения данных. Эта информация может быть получена посредством предшествующих запросов или может быть кэширована во время предшествующих операций между клиентом и устройством хранения данных.
Дополнительная эффективность может быть получена, если на клиенте уже имеется копия фрагмента CH1, сохраненная локально или доступная из ячейки запоминающего устройства с более низким временем ожидания или затратами на передачу, чем из устройства 120 хранения данных. Затем, в таком случае, клиент может запросить из устройства хранения данных исключительно getChunk(CH3) (получить фрагмент (СН3)).
Описанные в настоящем документе варианты осуществления уменьшают избыточный трафик LAN и/или WAN между клиентами и устройствами хранения данных и/или централизованными серверами. Варианты осуществления, описанные в настоящем документе, позволяют выполнять оптимизацию хранения и передачи для различных протоколов сетевых файловых систем. Например, как протоколы SMB, так и протоколы HTTP могут быть расширены при помощи улучшения, выполненного посредством описанных устройств и способов.
Стандартные протоколы файловых систем (например, SMB и HTTP) могут быть расширены для обеспечения API, который позволяет клиенту запрашивать данные из устройства хранения данных, которые, при их предоставлении посредством устройства хранения данных, предоставляют детали хранения части файла или данных в устройстве хранения данных. Например, клиент 110 может запросить данные из устройства 120 хранения данных касательно того, как файл X сохранен на устройстве 120 хранения данных. Например, клиент 110 может вызвать расширение файловой системы, такое, как getStorageDetails(fileX) (получить детали хранения (файл Х)), а устройство хранения данных может ответить при помощи {fileX: = chunks CH1, СН3} ({файл: = фрагменты CH1, CH3}). Теперь, при наличии знания о деталях того, как файл X хранится на устройстве хранения данных, клиент может решить, как запрашивать данные, связанные с файлом X, из устройства хранения данных. При использовании стандартного способа, клиент может запросить весь файл в его неформатированном или исходном формате. Для сравнения, варианты осуществления, описанные в настоящем документе, позволяют клиенту запрашивать передачу устройством хранения данных сжатого фрагмента CH3 на клиент.
В одном варианте осуществления, как изображено на Фиг.3, клиент может осуществить доступ 310 к метаданным, описывающим хранение данных файла на сервере хранения данных, причем данные файла хранятся на сервере хранения данных в форме, отличной от исходной формы данных файла, и, при этом, метаданные предоставляют форму хранения данных файла в том виде, как он сохранен на сервере хранения данных. Метаданные, описывающие хранение данных файла на сервере хранения данных, могут являться информацией, описывающей то, как данные файла были фрагментированы в устройстве хранения данных, как данные файла были сжаты в устройстве хранения данных, или как данные файла были одновременно фрагментированы и сжаты в устройстве хранения данных.
Детали фрагментации файла могут включать в себя информацию о том, какие части файла соответствуют каждому фрагменту, сохраненному на сервере. Детали фрагментации также могут включать в себя криптографический хеш-код каждого из фрагментов, из которых состоит файл. Криптографические хеш-коды фрагментов позволяют клиентам, приложениям и устройствам хранения данных однозначно идентифицировать каждый фрагмент. Посредством использования этой информации, клиент, приложение или другое устройство хранения данных могут быть способны выполнять идентификацию того, доступен ли уже идентичный фрагмент, идентифицированный посредством его криптографического хеш-кода.
Детали того, как файл или часть данных (например, фрагмент) сжимаются, могут включать в себя криптографический хеш-код исходных несжатых данных для однозначной идентификации данных. Также они могут включать в себя криптографический хеш-код сжатых данных для однозначной идентификации сжатых данных. Детали также могут включать в себя тип сжатия, используемого для выполнения сжатия (которое может быть необходимо для распаковки сжатых данных после передачи их в другое оконечное устройство из устройства хранения данных). Типы сжатия могут включать в себя, например, LZ, LZW, MPEG и т.п.
Посредством доступа к метаданным, клиент может стать осведомленным о деталях хранения данных, хранящихся на устройстве хранения данных. Если клиент осведомлен о деталях хранения данных в устройстве хранения данных, то клиент может отправить 320 запрос на данные файла в сервер хранения данных. Посредством использования вариантов осуществления, описанных в настоящем документе, клиенту не требуется запрашивать весь файл, клиент может запросить исключительно те фрагменты файла, которые ему необходимы, или может запросить сжатую версию файла или сжатую версию фрагмента файла. После отправки 320 запроса на данные файла, клиент может принять 330 информацию из сервера хранения данных, включающую в себя запрошенные данные файла, дополнительные метаданные, описывающие хранение данных файла на сервере хранения данных, и/или данные, представляющие, по меньшей мере, часть данных файла.
Прием 330 информации о данных файла может включать в себя, по меньшей мере, либо данные файла, либо дополнительные метаданные, описывающие хранение данных файла на сервере хранения данных, и/или данные, представляющие, по меньшей мере, часть данных файла. Информация может содержать данные файла в стандартном формате, который может ожидаться устаревшим приложением на клиенте. Информация может содержать информацию, описывающую хранение данных файла на устройстве хранения данных. Информация может содержать данные, которые представляют, по меньшей мере, часть данных файла.
Осуществление доступа 310 к метаданным, описывающим хранение данных файла, может содержать отправку в сервер запроса на информацию, описывающую хранение данных файла. Такой запрос может быть в форме расширения файловой системы, которое позволяет клиенту осуществлять вызов в файловую систему (или сетевую файловую систему) для запроса деталей того, как файл, данные файла или часть данных сохранены на устройстве хранения данных.
Альтернативно, осуществление доступа 310 к метаданным, описывающим хранение данных файла, может содержать осуществление доступа к местному запоминающему устройству для получения информации, описывающей хранение данных файла. Информация в местном запоминающем устройстве может быть принята ранее с файлового сервера в ответ на предыдущий запрос, или может быть локально кэширована, как часть происходящей в настоящее время серии операций файловой системы. Осуществление доступа 310 к метаданным, описывающим хранение данных файла, может содержать вызов файловой системы (вводимый посредством расширения нормальных API файловой системы), которое возвращает детали, которые предоставляют форму хранения данных файла в виде, сохраненном на сервере хранения данных, или как локально кэшированные копии локально сохранены на клиенте.
Например, метаданные, описывающие хранение данных файла на сервере хранения данных, могут содержать данные, описывающие хранение данных файла, полученных в результате дедупликации данных файла на сервере хранения данных. Метаданные могут содержать список фрагментов, состоящий из фрагментов, составляющих файл, а также могут содержать список хеш-кодов из криптографических хеш-кодов каждого из фрагментов, составляющих файл. Затем, клиент может использовать возвращенный список фрагментов или список хеш-кодов для формулирования запроса на один или более фрагментов, которые должны быть переданы, или может использовать список хеш-кодов для сравнения со списком уже принятых или локально кэшированных фрагментов для определения того, нужен ли запрос каких-либо фрагментов из устройства для хранения данных.
Например, при загрузке файла, клиент может запросить список хеш-кодов из файлового сервера, а также может запросить клиенты одноранговой сети и/или запросить файловые серверы одноранговой сети на предмет желаемых данных. Клиент может принять 330 информацию, содержащую список хеш-кодов, в качестве ответа на запрос. Список хеш-кодов может представить данные в виде, в котором они сохранены на устройстве для хранения данных, и клиенту может быть предоставлена возможность запроса только необходимых ему частей данных (например, фрагментов). Данные также могут быть считаны с узла одноранговой сети, если в узле одноранговой сети имеются желаемые данные, а затраты на передачу или время ожидания для передачи данных между узлом одноранговой сети и клиентом ниже, чем затраты на передачу или время ожидания между клиентом и устройством хранения данных.
Метаданные, описывающие хранение данных файла на сервере хранения данных, также могут содержать данные, описывающие сжатое подмножество данных файла, или данные, описывающие сжатую версию данных файла. Посредством использования этой информации, клиент может сформулировать запрос на сжатое подмножество данных файла или сформулировать запрос на сжатую версию данных файла. Это обеспечит эффективность устройства хранения данных, заключающуюся в отсутствии необходимости распаковки данных файла или подмножества данных файла перед передачей данных в ответ на запрос на данные файла.
В одном варианте осуществления клиент может отправить 320 запрос на данные файла, который может включать в себя запрос всего файла или запрос части файла. Например, запрос файла, get(fileX), или запрос части файла, getFileBytes(fileX; bytes = 100-1000), может быть отправлен через файловую систему на сервер хранения данных. В ответ, сервер хранения данных может ответить посредством отправки не файла или части файла, а данных, которые могут находиться в другой форме, которые содержат запрашиваемый файл или часть файла.
Например, сервер хранения данных может возвратить данные файла, содержащие ряд сжатых фрагментов, которые полностью охватывают запрошенный файл или запрошенную часть файла. Кроме того, сервер хранения данных может возвратить вместе с фрагментами метаданные о хранении файла, которые определяют, что возвращенные фрагменты содержат запрошенные данные (и, возможно, больше данных, чем было запрошено).
Кроме того, если возвращенные фрагменты были сжаты, то сервер хранения данных может возвратить метаданные о хранении файла, которые определяют, что возвращенные данные (или фрагменты данных) были сжаты, и может определить, какая технология сжатия или алгоритм были использованы для сжатия данных, или какие методики или алгоритмы распаковки должны быть использованы для распаковки данных. Как может быть понятно, может существовать принятая по умолчанию технология сжатия или распаковки, которая может быть предусмотрена в случае, в котором сжатые данные и/или сжатые фрагменты возвращаются без одновременного с ними возвращения метаданных, идентифицирующих конкретные методики сжатия или распаковки.
Тогда клиент может принять 330 эти данные и/или метаданные из сервера хранения данных и выполнить соответствующую распаковку и/или сборку фрагментов со стороны клиента для восстановления запрошенных данных. Как может быть понятно, этот процесс может быть более эффективным в плане затрат на передачу данных или времени ожидания передачи, чем выполнение сервером хранения данных распаковки и/или сборки конкретных данных, фактически запрошенных посредством клиента перед передачей на клиент и/или приемом посредством клиента.
Метаданные о хранении файла могут содержать список криптографических хеш-кодов фрагментов или сжатых фрагментов и определения того, какие части данных файла содержатся в конкретных фрагментах. Посредством использования списка криптографических хеш-кодов фрагментов или сжатых фрагментов и определений того, в какой части данных файла содержатся конкретные фрагменты, клиент может быть способен правильно распаковывать сжатые данные и/или собирать заново фрагменты, которые содержат все или больший объем из диапазона данных, желаемых или запрашиваемых посредством клиента.
На Фиг.2 изображена иллюстративная архитектура для интегрированного подхода к хранению и передаче файлов. Клиенты и серверы 210 могут содержать приложения и/или службы, осведомленные об оптимизации. Клиенты и серверы могут взаимодействовать с интерфейсом 250 файловой системы 250, который может содержать интерфейс прикладного программирования (API) файловой системы, а также может содержать API оптимизации. API файловой системы может содержать все нормальные вызовы и функции нормальной файловой системы и/или сетевой файловой системы. API оптимизации содержит расширенные элементы API (например, вызовы функций и интерфейсы), которые предоставляют детали хранения данных 260, 270 и 280, которые сохранены на устройстве хранения данных.
Интерфейс 250 файловой системы позволяет клиенту запрашивать метаданные, описывающие хранение данных файла на сервере хранения данных. Интерфейс 250 файловой системы также позволяет клиенту запрашивать данные из сервера хранения данных во множестве форматов. Клиент может запрашивать данные с использованием нормального API файловой системы (например, стандартного или устаревшего API файловой системы) для получения файла в неизменном виде, а именно в его неформатированном или исходном формате. Клиент также может запрашивать данные с использованием API оптимизации для запрашивания исключительно конкретного фрагмента файла, сжатой формы файла в виде, сохраненном на сервере, и может запрашивать сжатый фрагмент файла в виде, сохраненном на сервере.
Клиенты, приложения и службы 220, которые не осведомлены об улучшенном и/или расширенном интерфейсе 250 файловой системы, все еще могут работать нормально, без изменений и свободно, посредством выполнения вызовов к API файловой системы, в котором сохранены все функциональные возможности устаревшего API файловой системы.
Клиенты, приложения и службы 230, которые осведомлены об оптимизации, могут выполнять вызовы к API оптимизации для активации всех функциональных возможностей, соответствующих вариантам осуществления, описанным в настоящем документе. Клиенты, приложения и службы, которые осведомлены об оптимизации, могут запрашивать списки хеш-кодов, списки фрагментов, сжатые данные, и т.д. из устройства хранения данных или с сервера. Например, файл 260 foo.vhd может быть сохранен на устройстве хранения данных в виде списка фрагментов, который указывает на хранилище/индекс 270 фрагментов. Хранилище/индекс фрагментов может включать в себя фрагменты (например, фрагменты 160 C1-Cn), может включать в себя сжатые фрагменты (например, фрагменты 180 CH1-CHn), и может включать в себя ссылки, указатели и индексы для сохраненных фрагментов, которые позволяют выполнять дедупликацию и другую оптимизацию хранения данных и файлов.
Через API оптимизации, клиент может запрашивать метаданные, описывающие хранение foo.vhd, и принимать из устройства хранения данных метаданные, которые описывают, как хранится foo.vhd. Как только клиент осуществил доступ к метаданным, он может отправить запрос на данные файла через API оптимизации в сервер хранения данных. Может быть выполнен запрос на весь файл в его исходном формате, или может быть выполнен запрос исключительно на один или несколько фрагментов или сжатых фрагментов файла в том виде, как они сохранены в хранилище/индексе фрагментов.
Тогда клиент может принять из сервера хранения данных информацию, содержащую один или несколько элементов данных файлов, дополнительные метаданные, описывающие хранение данных файла на сервере хранения данных, и данные, представляющие, по меньшей мере, часть данных файла. Клиент может принять весь файл в его исходном формате. Клиент может принять весь файл как сжатый в устройстве хранения данных. Клиент может принять фрагмент файла. Клиент может принять сжатый фрагмент файла. Клиент может принять дополнительные метаданные, описывающие хранение данных файла, и может принять данные, включающие в себя часть данных файла. Ответ, принятый клиентом, может соответствовать запросу, выполненному через расширенный API оптимизации, который позволяет клиентам и приложениям выполнять запросы с осведомленностью о деталях хранения данных в устройстве хранения данных.
В другом примере файл bar.doc может быть сжат, фрагментирован и подвергнут дедупликации посредством службы 240 оптимизации и сохранен в виде указателей в хранилище/индексе 270 фрагментов. В варианте осуществления, описанном в настоящем документе, клиент может запросить метаданные, описывающие хранение bar.doc на устройстве хранения данных, и после приема информации, описывающей хранение bar.doc на устройстве хранения данных, отправить запрос на один или несколько сжатых фрагментов bar.doc, которые сохранены в хранилище/индексе 270 фрагментов. Поскольку сжатые фрагменты были запрошены клиентом, устройство хранения данных не должно распаковывать фрагменты bar.doc и при этом устройство хранения данных не должно собирать заново фрагменты bar.doc для ответа на запрос из клиента на bar.doc.
В другом варианте осуществления предложен способ предоставления деталей оптимизации хранения данных в сервере хранения данных на клиент. Этот способ включает в себя отправку метаданных, описывающих хранение данных файла на сервере хранения данных, при этом данные файла хранятся на сервере хранения данных в форме, отличной от исходной формы данных файла, и при этом метаданные предоставляют форму хранения данных файла в виде, сохраненном на сервере хранения данных. Способ также включает в себя прием на сервере хранения данных запроса на данные файла из вычислительной системы. Способ также включает в себя отправку из сервера хранения данных информации, содержащей по меньшей мере одно из данных файла, дополнительных метаданных, описывающих хранение данных файла на сервере хранения данных, и данных, представляющих, по меньшей мере, часть данных файла.
Как иллюстрировано на Фиг.4, сервер или устройство хранения данных может отправить 410 метаданные, описывающие хранение данных файла на сервере хранения данных или в устройстве хранения данных. Данные файла хранятся на сервере хранения данных в форме, отличной от исходной формы данных файла. Например, данные файла могут быть сохранены на сервере хранения данных в формате фрагментов, в сжатом формате или в виде комбинации форматов сжатых данных и фрагментов.
Отправленные метаданные предоставляют информацию, которая предоставляет форму хранения данных файла в виде, в котором он сохранен на сервере хранения данных. Например, метаданные могут включать в себя информацию, которая предоставляет информацию о том, что данные файла хранятся в фрагментированном, сжатом формате, или в комбинации фрагментированного и сжатого форматов. Метаданные могут содержать информацию, которая включает в себя список хеш-кодов фрагментов, из которых состоят данные файла в виде, сохраненном на устройстве хранения данных. Фрагменты, сохраненные в устройстве хранения данных, могут являться фрагментами, которые получаются в результате дедупликации данных файла (а также другими данными файла), сохраненных на сервере хранения данных.
Метаданные могут содержать информацию, включающую в себя криптографический хеш-код подмножества данных файла. Криптографический хеш-код подмножества данных может быть использован клиентом, устройством передачи данных, или другим устройством хранения данных, для определения того, является ли фрагмент идентичным другому фрагменту. Посредством использования криптографического хеш-кода подмножества данных файла, клиенты, устройства передачи данных и другие устройства хранения данных позволяют определять, доступно ли конкретное подмножество данных локально или оно доступно из источника с более низким временем ожидания или затратами на передачу. Посредством определения идентичных подмножеств данных может быть определено, требуется ли выполнить запрос или передачу конкретного подмножества данных.
Подмножество данных файла может являться всем файлом или данными файла. Подмножество данных также может являться одним или несколькими фрагментами данных файла, который был фрагментирован посредством устройства хранения данных, как часть режима оптимизации хранения данных или дедупликации.
Метаданные, описывающие хранение данных файла на сервере хранения данных или в устройстве хранения данных, также могут включать в себя данные, описывающие, что часть или все данные файла сжаты на сервере хранения данных или в устройстве хранения данных. Метаданные могут включать в себя информацию о том, что один или несколько фрагментов в фрагментированном формате данных файла были сжаты. Посредством использования информации, указывающей на то, что некоторая часть данных файла сжата, клиент может запросить возвращение файла или одного, или нескольких фрагментов файла в ответе на клиент в фрагментированном или сжатом формате в виде, сохраненном в устройстве хранения данных. Посредством запрашивания конкретного фрагмента или сжатого фрагмента файла, уменьшаются непроизводительные потери, поскольку устройство хранения данных может не сжимать файл или фрагмент файла перед передачей файла или фрагмента файла на клиент, выполняющий запрос.
Фиг.4 также изображает прием 410 запроса на данные файла из вычислительной системы. Запрос может быть принят из клиента, из другого сервера хранения данных, из приложения, исполняющегося в удаленной вычислительной системе или т.п. Формат запроса может быть задан с использованием протокола, соответствующего API оптимизации, который расширяет и/или улучшает стандартный API сетевой файловой системы.
Запрос на данные файла может включать в себя информацию, идентифицирующую конкретные запрашиваемые фрагменты файла. Запрос также может включать в себя информацию, определяющую, должны ли быть отправлены запрошенные данные файла в сжатом или в несжатом формате. Запрос может включать в себя информацию о том, что должно быть отправлено исключительно подмножество фрагментов файла, поскольку другие фрагменты уже доступны локально.
Фиг.4 также изображает отправку 430 информации о данных файла, которая включает в себя, по меньшей мере, либо данные файла, либо дополнительные метаданные, описывающие хранение данных файла на сервере хранения данных, либо данные, представляющие, по меньшей мере, часть данных файла. Отправка 430 информации о данных файла может быть выполнена в ответ на принятый запрос 420 на данные файла. Как обсуждалось выше, запрос на данные файла может быть выполнен в отношении данных файла, которые сохранены в устройстве хранения данных в виде фрагментов, в сжатом формате или в любой их комбинации.
Отправка 430 информации о данных файла может включать в себя, по меньшей мере, либо данные файла, либо дополнительные метаданные, описывающие хранение данных файла на сервере хранения данных, либо данные, представляющие, по меньшей мере, часть данных файла. Информация может содержать данные файла в стандартном формате, поскольку его может ожидать устаревшее приложение на клиенте. Информация может содержать информацию, описывающую сохранение данных файла на устройстве хранения данных. Информация может содержать данные, которые представляют, по меньшей мере, часть данных файла.
Принятый запрос может идентифицировать конкретные фрагменты данных, которые желает получить клиент. В ответ на этот запрос, устройство хранения данных может отправить запрашиваемые фрагменты данных на клиент, выполняющий запрос. Принятый запрос может иметь идентифицированные конкретные сжатые подмножества данных, которые желает получить клиент. В ответ на этот запрос, устройство хранения данных может отправить требуемые сжатые подмножества данных на клиент, выполняющий запрос. Принятый запрос может иметь конкретные криптографические хеш-коды, идентифицирующие фрагменты данных, которые желает получить клиент. В ответ на этот запрос, устройство хранения данных может отправить конкретные фрагменты данных, которые идентифицированы посредством криптографических хеш-кодов на клиент, выполняющий запрос.
В одном варианте осуществления, устройство хранения данных может принять 420 запрос на файл или часть файла. Например, устройство хранения данных может принять запрос get(fileX) на файл или может принять запрос getFileBytes (fileX; bytes = 100-1000) на часть файла. Устройство хранения данных может создать ответ на запрос и отправить информацию о данных файла, которая включает в себя данные файла в виде, сохраненном на устройстве хранения данных, и включить в их состав метаданные, идентифицирующие детали хранения данных файла в сохраненном виде. Например, устройство хранения данных может возвратить ряд фрагментов и метаданные, определяющие, какие части запрашиваемых данных содержатся в конкретных фрагментах. Кроме того, устройство хранения данных может возвратить метаданные, содержащие информацию о сжатии и/или распаковке, которая может подходить для распаковки данных, которые были возвращены в сжатом формате.
В некоторых вариантах осуществления может быть принят запрос 420, и информация о данных файла может быть отправлена 430 без выполнения предыдущего этапа отправки метаданных 410. Например, клиент, осведомленный об оптимизации, может просто запросить данные файла, устройство хранения данных может принять запрос 420, а устройство хранения данных может составить ответ и отправить ответ на клиент, при условии, что клиент сможет правильно обработать возвращенные данные файла и/или метаданные, и, в случае необходимости, правильно собрать заново фрагменты и/или распаковать данные.
Варианты осуществления также предусматривают поддержку оптимизации тракта записи для сохранения и передачи данных. Например, при локальных модификациях файла, клиент может генерировать представление списка хеш-кодов изменяемого файла. Этот список хеш-кодов затем может быть передан на сервер хранения данных. Затем, сервер хранения данных может сравнить принятый список хеш-кодов, представляющий измененный файл, с комплексным списком хеш-кодов, содержащимся на сервере хранения данных, который идентифицирует фрагменты файлов, хранящиеся на сервере хранения данных.
Затем, на основе этого сравнения, сервер хранения данных может возвратить на клиент список фрагментов, которые уже были сохранены на сервере хранения данных. Сервер хранения данных также может возвратить на клиент список фрагментов, которые не сохранены на сервере хранения данных. Затем, на основе возвращенного сохраненного списка фрагментов (или не сохраненного списка фрагментов) на сервере хранения данных, клиент может передать на сервер хранения данных фрагменты, которые еще не сохранены на сервере хранения данных.
Затем, после приема списка хеш-кодов, представляющего измененный файл, и приема фрагментов измененного файла, которые еще не были сохранены на сервере хранения данных, сервер хранения данных может сохранить полный измененный файл (который состоит из нескольких фрагментов, уже сохраненных на сервере, нескольких фрагментов, недавно принятых посредством сервера, и списка хеш-кодов (или списка фрагментов), представляющего весь измененный файл). Посредством передачи списка хеш-кодов (или списка фрагмента), представляющего весь файл, и передачи исключительно фрагментов, еще не сохраненных на сервере хранения данных, может быть реализована оптимизация передачи данных с клиента на устройство хранения данных.
Например, сервер хранения данных может принять с клиента список хеш-кодов и сравнить переданный список хеш-кодов, представляющий файл, со списком хеш-кодов, сохраненным в хранилище/индексе 270 фрагментов, который включает в себя фрагменты, хранящиеся на сервере хранения данных, и индекс криптографических хеш-кодов для фрагментов, хранящихся на сервере хранения данных. Тогда устройство хранения данных может возвратить на клиент список хеш-кодов, представляющий фрагменты, которые еще не сохранены в хранилище/индексе 270 фрагментов. Затем, клиент может передать на устройство хранения данных фрагменты, еще не сохраненные в устройстве хранения фрагментов. Затем, устройство хранения данных может сохранить принятые фрагменты в хранилище 270 фрагментов вместе со списком хеш-кодов, представляющим полный измененный файл. Тогда таким образом, сервер хранения данных может сохранить полное представление измененного файла (в контексте списка фрагментов, представляющего файл и соответствующие фрагменты), но без необходимости передачи клиентом всех составляющих файл фрагментов.
В другом примере файл, составленный из пяти фрагментов, а именно фрагментов C1-C5, может быть изменен клиентом исключительно в фрагменте C4 (что даст в результате измененный фрагмент Cm4). Клиент может отправить список хеш-кодов, представляющий фрагменты C1-C3, Cm4 и C5 в сервер хранения данных. Затем, этот список хеш-кодов представляет полный измененный файл. Затем, сервер хранения данных может ответить на клиент, что на сервере уже сохранены фрагменты C1-C3 и C5, но отсутствует фрагмент Cm4. Затем, клиент может отправить фрагмент Cm4 на сервер хранения данных. Затем, сервер хранения данных может сохранить фрагмент Cm4 на сервере хранения данных и, вместе с принятым списком хеш-кодов, представляющим фрагменты C1-C3, Cm4 и C5, и уже сохраненными фрагментами C1-C3 и C5, теперь имеет полный измененный файл, сохраненный на устройстве хранения данных.
Как может быть понятно, также этот вариант осуществления тракта записи может быть задействован для недавно созданных файлов, а также для измененных файлов. Клиент может создать список фрагментов для любого файла, независимо от того, является ли он измененным файлом или недавно созданным файлом, и отправлять список фрагментов на сервер хранения данных для того, чтобы сервер хранения данных мог сравнить принятый список фрагментов со списком фрагментов, уже сохраненным на сервере. Кроме того, список фрагментов может быть списком криптографических хеш-кодов, однозначно идентифицирующих каждый из фрагментов, из которых состоит файл. Фрагменты, сами по себе обсуждаемые в настоящем документе, могут являться сжатыми фрагментами, фрагментами в виде неформатированных данных, или даже фрагментами, которые были преобразованы каким-либо способом, а именно, криптографическим или иным способом.
При передаче фрагментов они могут быть переданы в виде неформатированном данных, в сжатом формате или иным способом. Как может быть понятно, если части данных файла переданы в сжатом формате, то это может привести к оптимизации в том плане, что инфраструктура передачи не должна сжимать данные для получения эффективности при передаче, и сервер хранения данных не должен сжимать данные для оптимизации хранения на сервере хранения данных. Посредством передачи исключительно сжатых фрагментов, которые еще не сохранены или не присутствуют на приемном конце передачи, может быть реализована оптимизация, как передачи, так и хранения данных файла.
Настоящее изобретение может быть реализовано в других конкретных формах без отступления от его сущности или существенных характеристик. Описанные варианты осуществления должны рассматриваться во всех отношениях исключительно как иллюстративные, но не ограничительные. Следовательно, объем изобретения определяется приложенной формулой изобретения, а не посредством предшествующего описания. Все изменения, которые подпадают под смысловое содержание и диапазон эквивалентов формулы изобретения, должны быть включены в ее объем.