Способ оптимизации хранения и передачи данных

Иллюстрации

Показать все

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

Реферат

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

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

Продолжается быстрый рост объема генерируемых, передаваемых и сохраняемых на компьютерах данных. Потребители и конкуренты стимулируют увеличивающуюся тенденцию использования методик оптимизации данных для уменьшения требований к хранению данных в местах их хранения. Например, данные могут быть сжаты, и для уменьшения места, необходимого для хранения данных, может быть уменьшена избыточность в сохраняемых данных. Подобные методики также применяются для уменьшения объема данных, которые пересылаются через сети, таким образом уменьшая затраты на ширину полосы 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), может быть отправлен через файловую систему на сервер хранения данных. В ответ, сервер хранения данных может ответить посредством отправки не файла или части файла, а данных, которые могут находиться в другой форме, которые содержат запрашиваемый файл или часть файла.

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

Кроме того, если возвращенные фрагменты были сжаты, то сервер хранения данных может возвратить метада