ДИНАМИЧЕСКИЙ ВЫБОР УРОВНЕЙ ХРАНИЛИЩА
DYNAMIC SELECTION OF STORAGE LEVELS

УРОВЕНЬ ТЕХНИКИ
[0001] Разработчик программного обеспечения может столкнуться с необходимостью принятия различных решений относительно мест, в которых следует хранить данные, используемые конкретной программой. После принятия указанных решений разработчик непосредственно указывает, где должны храниться данные, используемые программой. Например, разработчик может предусмотреть определенную функцию программирования для обеспечения хранения данных программы в оперативном запоминающем устройстве (ОЗУ). Аналогичным образом, разработчик может использовать другую функцию программирования для осуществления хранения данных в другом месте, например, на сетевом сервере. В связи с этим, часто необходимо, чтобы разработчики знали все потенциально доступные места для хранения данных и, кроме того, понимали механизмы сохранения данных в доступных местах различных типов, которые часто являются достаточно сложными. Далее, программист не всегда может выбрать наиболее оптимальное место для хранения данных и это может привести к снижению производительности приложения.
[0002] Представленное описание изобретения касается указанных выше и других признаков.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0003] На фиг. 1 проиллюстрирована схема сети и системы, представляющая аспекты иллюстративного механизма динамического выбора уровней хранилища, описанного в настоящем документе.
[0004] На фиг. 2 проиллюстрирована схема системы, представляющая дополнительные аспекты иллюстративного механизма динамического выбора уровней хранилища, описанного в настоящем документе.
[0005] На фиг. 3 проиллюстрирована структурная схема, представляющая иллюстративную процедуру, которая описывает аспекты рассмотренного в настоящем документе механизма идентификации доступных уровней хранилища и расчета или определения иным образом одного или более показателей расположения объекта в соответствии c одним вариантом реализации изобретения, рассмотренным в настоящем документе.
[0006] На фиг. 4 проиллюстрирована структурная схема, представляющая иллюстративную процедуру, которая описывает аспекты функционирования диспетчера хранения, касающиеся хранения объекта на выбранном в динамическом режиме уровне хранилища, в соответствии с вариантом реализации изобретения, представленным в настоящем документе.
[0007] На фиг. 5 проиллюстрирована структурная схема, представляющая иллюстративную процедуру, которая описывает аспекты функционирования диспетчера хранения, касающиеся получения объекта, ранее сохраненного на выбранном в динамическом режиме уровне хранилища, в соответствии с вариантом реализации изобретения, представленным в настоящем документе.
[0008] На фиг. 6 проиллюстрирована схема системы и сети, представляющая иллюстративную операционную среду, содержащую распределенную среду исполнения, в которой могут быть осуществлены различные варианты реализации изобретения, представленные в настоящем документе.
[0009] На фиг. 7 проиллюстрирована схема вычислительной системы, иллюстрирующая конфигурацию центра обработки данных, которая обеспечивает реализацию аспектов описанных в настоящем документе принципов и технологий динамического выбора уровня хранилища с целью сохранения данных в соответствии с вариантом реализации изобретения, представленным в настоящем документе.
[0010] На фиг. 8 проиллюстрирована схема архитектуры компьютера, представляющая иллюстративную архитектуру аппаратного обеспечения компьютера, предназначенную для получения вычислительного устройства, которое может использоваться с целью осуществления аспектов различных вариантов реализации изобретения, представленных в настоящем документе.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0011] Представленное далее подробное описание изобретения относится к технологиям динамического выбора уровня хранилища. При использовании технологий, описанных в настоящем документе, операционная система осуществляет динамический выбор соответствующего уровня хранилища для сохранения объекта на основании одного или более показателей расположения объекта. Показатели расположения объектов могут представлять собой такие параметры, как затраты на хранение данных на каждом уровне, пропускная способность или задержка, связанная с каждым уровнем хранилища, тип сохраняемых данных и/или другие показатели. В случае применения показателей расположения объектов с целью выполнения динамического выбора соответствующего уровня хранилища для сохранения объектов разработчик освобождается от необходимости принятия решений, касающихся выбора места хранения объектов и разработки сложных механизмов, используемых для осуществления фактического сохранения данных. Дополнительная информация, касающаяся указанных выше и других аспектов принципов и технологий динамического выбора уровней хранилища, описанных в настоящем документе, представлена ниже.
[0012] В соответствии с одним аспектом изобретения, рассмотренным в настоящем документе, конфигурация операционной системы предусматривает использование диспетчера хранилища, имеющего функции динамического выбора уровня хранилища для сохранения объектов как большого, так и малого объема. Функции, которые, как указано в настоящем документе, выполняет диспетчер хранения, могут также выполнять другие компоненты операционной системы. Указанные объекты могут представлять собой объекты данных, используемые при исполнении операционной системы, приложений или других процессов. Предполагается, что термин «объект», используемый в настоящем документе, охватывает цифровые данные любого типа, используемые исполняемыми процессами любого типа.
[0013] В случае необходимости сохранения объекта приложение может подать диспетчеру хранения обобщенный запрос на сохранение объекта. Термин «обобщенный», используемый в настоящем документе, означает, что данный запрос не содержит указания местоположения для объекта. Однако запрос может включать данные, определяющие показатель оптимизации и, возможно, один или более показателей расположения объекта. Как более подробно описано далее, при получении запроса на динамический выбор уровня хранилища для сохранения объекта диспетчер хранения может использовать показатель оптимизации и один или более показателей расположения объекта.
[0014] В вариантах реализации изобретения диспетчер хранения может предусматривать генерирование одного или более показателей расположения объекта, которые также используются при выборе уровня хранилища для сохранения объекта. Например, диспетчер хранения может предусматривать контроль пропускной способности и/или задержки сети или другого средства соединения с уровнями хранилища. Пропускная способность и задержка могут использоваться в качестве показателей расположения объекта. В другом примере диспетчер хранения осуществляет контроль параметров статистики использования объектов. Параметры статистики использования объектов также могут применяться в качестве показателей расположения объектов. В других вариантах реализации изобретения диспетчер хранения или другой компонент, функционирующий совместно с диспетчером хранения, может также осуществлять другие операции обработки с целью генерирования других показателей расположения объектов.
[0015] В некоторых вариантах реализации изобретения диспетчер хранения дополнительно получает показатели расположения объектов из одного или более внешних источников. Например, диспетчер хранения может получить информацию, указывающую затраты на хранение данных на одном или большем числе уровней хранилища, от службы хранения, доступ к которой осуществляется при помощи глобальной сети (WAN), такой как сеть Интернет. Диспетчер хранения может также получать из прочих источников другие данные, используемые в качестве показателей расположения объектов. Показатели расположения объектов могут также генерироваться на основе свойств объекта, который требуется сохранить. Например, в качестве показателей расположения объекта могут использоваться тип объекта, размер, атрибуты файла, требования безопасности, требования общего доступа и характеристики сжимаемости. Можно также использовать другие свойства объекта.
[0016] Как кратко указано выше, диспетчер хранения использует показатели расположения объекта с целью выполнения динамического выбора уровня хранилища для сохранения данного объекта. Например, если совместно с запросом на сохранение объекта передан показатель оптимизации, указывающий, что хранение объекта следует оптимизировать с учетом затрат, то диспетчер хранения выбирает уровень хранилища, обеспечивающий минимальные затраты на хранение. Если предусмотрен показатель оптимизации, указывающий, что хранение объекта необходимо оптимизировать с учетом скорости доступа, то диспетчер хранения выбирает уровень хранилища, доступ к которому осуществляется с использованием соединения, имеющего максимально возможную пропускную способность и/или минимальную задержку. Диспетчер хранения может также использовать комбинацию показателей расположения объекта, чтобы выбрать соответствующее местоположение для сохранения объекта. В других вариантах реализации изобретения запрос на сохранение объекта, поданный диспетчеру хранения, не содержит показатель оптимизации. В этих вариантах реализации изобретения диспетчер хранения осуществляет выбор соответствующего уровня хранилища для сохранения объекта с учетом только имеющихся показателей расположения объекта. Кроме того, в прочих вариантах реализации изобретения для динамического выбора уровня хранилища может использоваться другая информация.
[0017] В некоторых вариантах реализации изобретения доступные уровни хранилища охватывают локальный уровень хранилища. Локальный уровень хранилища содержит системные кэши, память и устройства массовой памяти компьютера, на котором исполняется диспетчер хранения. Уровни хранилища могут также охватывать локальный сетевой уровень хранилища, содержащий одну или более систем памяти, доступ к которым осуществляется при помощи локальной сети (ЛС). Уровни хранилища могут также включать удаленный сетевой уровень хранилища, содержащий одну или более служб хранения, доступ к которым осуществляется при помощи глобальной сети, такой как сеть Интернет. В некоторых вариантах реализации изобретения диспетчер хранения содержит также функции определения доступных уровней хранилища. Дополнительные детали, касающиеся различных компонентов и процессов, описанных выше, которые используются с целью динамического выбора уровня хранилища для сохранения объекта, представлены ниже со ссылкой на фиг. 1-8.
[0018] Следует отметить, что изобретение, представленный в настоящем документе, может быть реализовано в виде компьютерного процесса, устройства, управляемого компьютером, вычислительной системы или промышленного изделия, такого как машиночитаемый носитель данных. Хотя изобретение, описанное в настоящем документе, представлено в общем контексте программных модулей, исполняемых на одном или большем числе вычислительных устройствах, для специалистов в данной области техники очевидно, что могут быть реализованы другие варианты, предусматривающие использование других типов программных модулей. В общем, программные модули охватывают процедуры, программы, компоненты, структуры данных, а также структуры другого типа, обеспечивающие выполнение конкретных задач или реализацию определенных абстрактных типов данных.
[0019] Для специалистов в данной области техники также очевидно, что аспекты изобретения, описанного в настоящем документе, могут быть реализованы на основе других конфигураций или в комбинации с другими конфигурациями компьютерных систем, которые отличаются от конфигураций, представленных в настоящем документе. Указанные конфигурации охватывают многопроцессорные системы, микропроцессорные или программируемые бытовые электронные устройства, миникомпьютеры, большие электронно-вычислительные машины, портативные компьютеры, карманные персональные компьютеры, электронные книги, сотовые телефоны, специализированное оборудование, сетевые устройства и аналогичное оборудование. Варианты реализации изобретения, представленные в настоящем документе, могут быть осуществлены в среде распределенных вычислений, в которой выполнение задачи осуществляется удаленными устройствами обработки данных, связанными при помощи сети обмена данными. В среде распределенных вычислений программные модули могут размещаться как на локальных, так и на удаленных запоминающих устройствах.
[0020] В представленном далее подробном описании изобретения указаны ссылки на прилагаемые графические материалы, которые являются частью настоящего документа и иллюстрируют конкретные варианты и примеры реализации изобретения. Графические материалы в настоящем документе выполнены не в масштабе. Аналогичные элементы на различных чертежах (которые обозначены в настоящем документе сокращением «фиг») указаны одинаковыми позициями.
[0021] На фиг. 1 проиллюстрирована схема сети и системы, представляющая аспекты иллюстративного механизма динамического выбора уровней хранилища, описанного в настоящем документе. Как проиллюстрировано на фиг. 1, в соответствии с представленным вариантом реализации изобретения, указанным в настоящем документе, вычислительное устройство 102 предназначено для исполнения операционной системы 104, содержащей диспетчер 106 хранения. Вычислительное устройство 102 может представлять собой настольный или портативный компьютер, серверный компьютер, смартфон, планшетный компьютер или стационарное либо мобильное вычислительное устройство другого типа. Исполнение операционной системы 104 может осуществляться непосредственно на аппаратном обеспечении вычислительного устройства 102 или в среде виртуальной машины.
[0022] Как более подробно указано далее, диспетчер 106 хранения предназначен для приема от операционной системы 104 или от приложения 108, исполняемого на вычислительном устройстве 102, запросов на сохранение объекта 110. Как указано выше, объект 110 может представлять собой объект данных, используемый при исполнении операционной системы 104, приложения 108 или процессов других типов, исполняемых на вычислительном устройстве 102. Термин «объект», используемый в настоящем документе, охватывает цифровые данные любого типа, используемые выполняемым процессом любого типа.
[0023] Как также кратко указано выше, в одном из вариантов реализации изобретения запрос на сохранение объекта 110 является «обобщенным» запросом. Обобщенный запрос представляет собой запрос, не содержащий указание местоположения, в котором следует сохранить данный объект. В известных системах разработчику программного обеспечения обычно требовалось указать, что объект (например, данные конкретного процесса, файл и т.д.) следует сохранить в оперативном запоминающем устройстве (ОЗУ), на сетевом устройстве или в другом месте. Однако, при использовании вариантов реализации изобретения, представленных в настоящем документе, предполагается осуществление единого элементарного механизма, при помощи которого разработчик обеспечивает передачу запроса на сохранение практически любого типа объекта 110 независимо от его размера. В соответствии с указанным механизмом объект 110 сохраняется на соответствующем уровне хранилища с учетом типа объекта 110 и, возможно, множества других показателей расположения объекта. Для реализации этой функции диспетчер 106 хранения может взаимодействовать с уровнями управления памятью, хранения блоков и сети операционной системы 104. Дополнительные детали, касающиеся различных показателей расположения объектов, которые могут использоваться с целью выбора уровня хранилища для сохранения объекта 110, будут описаны далее со ссылкой на фиг. 2.
[0024] В примере реализации операционной среды, проиллюстрированном на фиг. 1, для сохранения объекта 110 доступны три уровня 100A-100C хранилища (которые отдельно могут указываться как «уровень 100 хранилища» или совместно - как «уровни 100 хранилища»). Локальный уровень 100A хранилища включает в себя системный кэш 112, системную память 114 и одно или более устройств 116 массовой памяти, размещенных в вычислительном устройстве 102, на котором выполняется операционная система 104. В различных вариантах реализации изобретения устройства массовой памяти могут представлять собой дисковые и/или твердотельные накопители (SSD). В других вариантах реализации изобретения локальный уровень 100A хранилища может также содержать другие типы запоминающих устройств.
[0025] Как дополнительно проиллюстрировано на фиг. 1, для хранения объекта 110 может также использоваться локальный сетевой уровень 100B хранилища. Локальный сетевой уровень 110B хранилища содержит одну или более систем памяти, доступ к которым вычислительное устройство 102 осуществляет при помощи ЛС 118. Например, в иллюстративной операционной среде, указанной на фиг. 1, доступными являются запоминающее устройство 120, подключенное к сети, и устройство 122 сети хранения данных. При помощи ЛС 118 могут быть подключены также другие типы систем памяти.
[0026] В варианте реализации изобретения, проиллюстрированном на фиг. 1, предусмотрен также удаленный сетевой уровень 100C хранилища. Удаленный сетевой уровень 100C хранилища также включает одну или более служб хранения, доступ к которым осуществляется при помощи глобальной сети, такой как сеть Интернет. Например, в варианте реализации, проиллюстрированном на фиг. 1, доступными для сохранения объекта 110 являются служба 126 хранения объектов, служба 128 хранения блоков и служба 130 длительного хранения. В других вариантах реализации изобретения с использованием удаленного сетевого уровня 100C хранилища могут быть также предусмотрены другие службы.
[0027] В примере системы, проиллюстрированном на фиг. 1, указаны три уровня 100A-100C хранилища. Однако, очевидно, что в других вариантах реализации изобретения может использоваться другое количество уровней 100 хранилища. Кроме того, следует учитывать, что каждый уровень 100A-100C хранилища может иметь специфичные рабочие характеристики. Например, локальный уровень 100A хранилища может отличаться наличием быстродействующей памяти ограниченного объема. Аналогичным образом, локальный сетевой уровень 100B хранилища может отличаться более длительным временем доступа, чем локальный уровень 100A хранилища, но большей емкостью памяти. Таким же образом, удаленный сетевой уровень 100C хранилища может отличаться еще более длительным временем доступа, но иметь значительно больший объем памяти, более высокую надежность и, возможно, требовать меньших затрат, чем локальный сетевой уровень 100B хранилища. Как более подробно указано далее, некоторые характеристики или все характеристики уровней 100A-100C хранилища могут использоваться с целью выбора соответствующего уровня 100 хранилища для сохранения объекта 110.
[0028] В примере системы, проиллюстрированном на фиг. 1, приложение 108 передает диспетчеру 106 хранения запрос на сохранение объекта 110. Как указано выше, запрос, передаваемый диспетчеру 106 хранения, может быть обобщенным запросом. В некоторых вариантах реализации изобретения в запросе может быть также указан показатель оптимизации и один или более показателей расположения объекта. Показатель оптимизации представляет собой данные, определяющие атрибут, с учетом которого следует оптимизировать выбор соответствующего уровня 100 хранилища, предназначенного для сохранения объекта 110. Например, показатель оптимизации может указывать, что выбор соответствующего уровня хранилища следует оптимизировать с учетом минимизации затрат. Аналогичным образом, показатель оптимизации может указывать, что выбор соответствующего уровня 100 хранилища следует оптимизировать с учетом максимизации возможной скорости использования объекта 110. Могут быть также определены другие типы показателей. Дополнительные детали, касающиеся показателя оптимизации, указанного в запросе на сохранение объекта 110, представлены далее со ссылкой на фиг. 2.
[0029] Как кратко указано выше, запрос на сохранение объекта 110 может также содержать один или более показателей расположения объекта. Показатели расположения объекта представляют собой показатели, используемые диспетчером 106 хранения при выборе соответствующего уровня 100 хранилища для сохранения объекта 110. Как более подробно указано далее со ссылкой на фиг. 2, показатели расположения объекта могут быть определены на основе свойств объекта 110, определенных диспетчером 106 хранения, полученных от источника, находящегося за пределами вычислительного устройства 102, предоставленных с запросом на сохранение объекта 110, или генерированных и/или полученных другими способами.
[0030] При получении запроса на сохранение объекта 110 диспетчер 106 хранения осуществляет выбор соответствующего уровня 100 хранилища для сохранения объекта 110. Как указано в настоящем документе, диспетчер 106 хранения использует показатели расположения объектов с целью выбора соответствующего уровня 100 хранилища. Кроме того, если совместно с запросом на сохранение объекта 110 представлен показатель оптимизации, то диспетчер 106 хранения может также использовать переданный показатель оптимизации. Могут использоваться также другие данные.
[0031] Далее описаны несколько примеров, иллюстрирующих процедуру выбора диспетчером 106 хранения соответствующего уровня 100 хранилища с целью сохранения объекта 110. В одном из примеров диспетчер 106 хранения определяет, что объект 110 имеет сравнительно небольшой размер и желательно обеспечить быстрое и частое использование объекта 110. В данном примере диспетчер 106 хранения выполняет сохранение объекта 110 в системном кэше 112. В другом примере диспетчер 106 хранения может определить, что объект 110 имеет объем, превышающий максимальную емкость системного кэша 112, но желательно обеспечить быстрое и частое использование объекта 110. В этом примере диспетчер 106 хранения может сохранить объект 110 в системной памяти 114. Если диспетчер 106 хранения определяет, что объект 110 имеет слишком большой объем и не может быть сохранен в системной памяти 114, то диспетчер 106 хранения может сохранить весь объект или часть объекта 110 в устройстве 116 массовой памяти.
[0032] Если диспетчер 106 хранения определяет, что очень быстрое использование объекта 110 не требуется, то диспетчер 106 хранения может выбрать локальный сетевой уровень 100B хранилища для сохранения объекта 110. Аналогичным образом, если использование объекта 110 будет осуществляться очень редко, то диспетчер 106 хранения может выбрать сетевой уровень 106 хранилища вследствие его низких затрат и высокой надежности. Дополнительные детали, касающиеся рассмотренных выше и других процессов и показателей, которые используются диспетчером 106 хранения при выборе соответствующего уровня 100 хранилища для сохранения объекта 110, будут представлены далее со ссылкой на фиг. 2.
[0033] После определения диспетчером 106 хранения соответствующего уровня 100 хранилища для сохранения объекта 110, диспетчер 106 хранения обеспечивает сохранение объекта 110 на выбранном уровне 100 хранилища. Далее, диспетчер 106 хранения может обрабатывать запросы на чтение объекта 110 посредством получения объекта 110 с уровня 100 хранилища, на котором он был ранее сохранен. После получения объекта 100 с уровня 100 хранилища, на котором он был ранее сохранен, объект 110 передается процессу, подавшему запрос на чтение объекта 110. Рассмотренные выше и другие аспекты функционирования диспетчера 106 хранения будут более подробно описаны далее со ссылкой на фиг. 2.
[0034] Следует отметить, что иллюстративная операционная среда, проиллюстрированная на фиг. 1, является только примером и, соответственно, могут использоваться многие другие типы операционных сред. Например, сети 118 и 124, проиллюстрированные на фиг. 1, для целей обсуждения были представлены в упрощенном виде. Таким образом, очевидно, что для осуществления вариантов реализации изобретения, описанных в настоящем документе, может использоваться намного более сетей, сетевых устройств, компьютерных систем и компонентов программного обеспечения, чем число элементов, проиллюстрированное на фиг. 1. Кроме того, хотя указано, что функции динамического выбора уровня 100 хранилища, описанные в настоящем документе, осуществляет диспетчер 106 хранения, очевидно, что эти функции могут быть реализованы операционной системой 104 или другим компонентом. Указанные функции могут быть также осуществлены комбинацией компонентов, выполняемых локально или на распределенных вычислительных устройствах.
[0035] Очевидно также, что в одном из вариантов реализации изобретения вычислительное устройство 102 может быть размещено в одном пункте с компьютерными системами, реализующими различные службы удаленного сетевого уровня 100C хранилища. Таким образом, в варианте реализации изобретения локальный уровень 100A хранилища, локальный сетевой уровень 100B хранилища и/или удаленный сетевой уровень 100C хранилища могут быть размещены в одном центре обработки данных. Например, в одном из вариантов реализации изобретения функции вычислительного устройства 102 выполняет серверный компьютер, например, серверный компьютер 702A, входящий в состав распределенной среды исполнения, предоставляющей функции удаленного сетевого уровня 100C хранилища. В данном примере операционная система 104 может исполняться на экземпляре виртуальной машины, таком как экземпляр 706A. Пользователь может осуществлять доступ и контролировать операционную систему 104 и приложение 108 при помощи клиентского приложения, функционирующего с использованием протокола удаленного рабочего стола (RDP) или другого подобного протокола. Объекты, сгенерированные пользователем таким способом, могут динамически сохраняться на соответствующем уровне 100 хранилища с использованием различных технологий, описанных в настоящем документе. Дополнительные детали, касающиеся данного конкретного варианта реализации изобретения, будут представлены далее со ссылкой на фиг. 6 и фиг. 7.
[0036] На фиг. 2 проиллюстрирована схема системы, представляющая несколько дополнительных аспектов иллюстративного механизма динамического выбора уровней 100 хранилища, описанного в настоящем документе. Как проиллюстрировано на фиг. 2 и кратко описано выше, приложение 108 может передать запрос 201 диспетчеру 106 хранения, реализованному как часть операционной системы 104. Функции, которые, как указано в настоящем документе, выполняет диспетчер 106 хранения, могут также осуществляться другими исполняемыми процессами. Например, операционная система 104 также может осуществлять функции сохранения объекта 110, описанные в настоящем документе. Кроме того, функции сохранения объекта 110, описанные в настоящем документе, могут выполнять другие процессы.
[0037] В некоторых вариантах осуществления изобретения операционная система 104 реализует прикладной программный интерфейс (API) 202, при помощи которого приложение 108 может подать запрос 201. Однако в других вариантах изобретения операционная система 104 реализует другие механизмы, при помощи которых процесс осуществляет подачу запроса на сохранение объекта 110. Например, функция программирования может быть реализована при помощи библиотеки программирования, которая используется компонентами, представленными на различных языках программирования, для доступа к функциям, описанным в настоящем документе. Могут также применяться другие механизмы, обеспечивающие возможность использования приложениями 108, операционными системами 104 и другими процессами функций динамического выбора уровня 100 с целью сохранения объекта 110, описанных в настоящем документе.
[0038] Как кратко указано выше со ссылкой на фиг. 1, запрос 201 может также содержать показатель 208 оптимизации и один или более показателей 204 расположения объекта. Например, в варианте реализации изобретения, проиллюстрированном на фиг. 2, приложение 108 совместно с запросом на сохранение объекта 110 передает на прикладной программный интерфейс 202, реализованный операционной системой 104, показатель 208 оптимизации и показатель 204M расположения объекта. В связи с этим, следует отметить, что запрос 201 не обязательно содержит показатель 208 оптимизации или показатель 204 расположения объекта. В случае получения запроса 201, который не содержит показатель 208 оптимизации или показатель 204 расположения объекта, диспетчер 106 хранения осуществляет выбор соответствующего уровня 100 хранилища для сохранения объекта 110 на основании показателей расположения объекта, рассчитанных диспетчером 106 хранения или полученных из других источников. Дополнительные детали, касающиеся данного процесса, описаны далее.
[0039] Как также кратко указано выше, некоторые из показателей 204 расположения объектов могут быть получены на основе свойств объекта 110, подлежащего сохранению. Например, как проиллюстрировано на фиг. 2, в качестве показателей расположения объекта могут использоваться атрибуты 204G файла объекта 110, подлежащего сохранению. Атрибуты 204G файла объекта могут охватывать, например, информацию, определяющую владельца объекта 110, информацию, касающуюся процессов, которым предоставлены права выполнения чтения и записи объекта 110, и другую информацию. Аналогичным образом, размер 204E объекта может также использоваться в качестве показателя расположения объекта.
[0040] Тип 204D объекта также можно использовать в качестве показателя расположения объекта. Тип 204D объекта может описывать тип данных объекта 110. В этом контексте, характеристики сжимаемости 204K объекта также можно использовать в качестве показателя 204 расположения объекта в процессе определения соответствующего уровня 100 хранилища для сохранения объекта 110. Кроме того, с целью определения соответствующего уровня 100 хранилища для сохранения объекта 110 можно использовать другие свойства объекта 110.
[0041] Как указано выше, диспетчер 106 хранения или другой компонент может также рассчитать один или более показателей 204 расположения объекта. Например, в одном из вариантов реализации изобретения диспетчер 106 хранения или другой компонент выполняет расчет задержки 204 уровня хранилища и/или пропускной способности 204H уровня хранилища для каждого из доступных уровней 100 хранилища. Значения задержки и пропускной способности могут рассчитываться на постоянной основе и, таким образом, при получении запроса 201 на сохранение объекта 110 диспетчер 106 хранения имеет обновленную информацию, касающуюся доступности каждого уровня 100 хранилища.
[0042] Диспетчер 106 хранения может также предусматривать получение показателей 204 расположения объекта от внешней службы. Например, в одном из вариантов реализации изобретения диспетчер 106 хранения получает данные затрат 204C на хранение от службы хранения, размещенной на удаленном сетевом уровне 100C хранилища. Диспетчер 106 хранения может также получить от других внешних служб другие типы данных, которые могут использоваться в качестве показателей 204 расположения объекта. В другом примере служба хранения может содержать данные параметров статистики использования конкретного объекта 110. Диспетчер 106 хранения может получить данные параметров 204A статистики использования в процессе определения соответствующего уровня 100 хранилища для сохранения объекта 110.
[0043] Следует отметить, что в других вариантах реализации изобретения с запросом 201 могут быть получены другие типы показателей расположения объекта, рассчитанные диспетчером 106 хранения, переданные внешней службой или полученные другими способами. В примере, проиллюстрированном на фиг. 2, показатели 204 расположения объекта также охватывают требования 204B безопасности, связанные с объектом 110, требования 204J общего доступа, связанные с объектом 110, требуемую скорость 204L использования объекта 110 и доступность каждого уровня хранилища. Эти показатели расположения объекта могут быть переданы с запросом 201 или получены диспетчером 106 хранения иным образом. Следует отметить, что показатели 204 расположения объекта, проиллюстрированные на фиг. 2, имеют чисто иллюстративный характер и что при выборе соответствующего уровня 100 хранилища для сохранения объекта 110 диспетчер 106 хранения может использовать множество других показателей.
[0044] Следует также отметить, что формат запроса 201, проиллюстрированный на фиг. 2, является иллюстративным и что запрос 201 может содержать другие данные, не показанные на фиг. 2. Например, в других вариантах реализации изобретения запрос 201 может содержать «указание» или рекомендацию относительно места сохранения объекта 110. Диспетчер 106 хранения может использовать указание с целью выбора соответствующего уровня 100 для сохранения объекта 110 или может игнорировать указание, представленное приложением 108. В запрос 201 могут быть также включены другие типы данных, предназначенные для использования диспетчером 106 хранения в процессе выбора уровня 100 хранилища.
[0045] После выбора диспетчером 106 хранения соответствующего уровня 100 хранилища для сохранения объекта 110 диспетчер 106 хранения обеспечивает сохранение объекта 110 на выбранном уровне 100 хранилища. Кроме того, диспетчер 106 хранения может создать в таблице 206 поиска запись, указывающую, что объект 110 сохранен на конкретном уровне 100 хранилища. Как более подробно указано далее, содержание таблицы 206 поиска может использоваться для определения уровня 100 хранилища, на котором был сохранен объект 110, при получении запроса на чтение объекта 110. Дополнительные детали, касающиеся указанных выше и других аспектов функционирования диспетчера 106 хранения, будут представлены далее со ссылкой на фиг. 3-5.
[0046] На фиг. 3 проиллюстрирована структурная схема, представляющая иллюстративную процедуру 300, которая описывает аспекты рассмотренного в настоящем документе механизма идентификации доступных уровней 100 хранилища и расчета или определения иным образом одного или более показателей 204 расположения объекта в соответствии c вариантом реализации изобретения, рассмотренным в настоящем документе. Очевидно, что логические операции, описанные в настоящем документе со ссылкой на фиг. 3 и другие фигуры, реализованы (1) в форме последовательности осуществляемых компьютером действий или программных модулей, выполняемых в вычислительной системе, и/или (2) в форме взаимосвязанных логических схем электронно-вычислительной машины или электронных модулей вычислительной системы.
[0047] Реализация различных компонентов, описанных в настоящем документе, осуществляется в зависимости от производительности и других характеристик вычислительной системы. Соответственно, логические операции, описанные в настоящем документе, осуществляются различными средствами: в форме операций, устройств, действий или модулей. Указанные операции, устройства, действия и модули могут быть реализованы на основе программного обеспечения, микропрограммы, специализированной цифровой логики или любой комбинации указанных элементов. Следует также отметить, что может осуществляться выполнение большего или меньшего числа операций, чем показано на фигурах и описано в настоящем документе. Некоторые операции могут также выполняться параллельно или в порядке, отличающемся от порядка, указанного в настоящем документе.
[0048] Выполнение процедуры 300 начинается этапом 302, на котором диспетчер 106 хранения определяет доступные уровни 100 хранилища и получает данные характеристик каждого уровня 100. Например, в некоторых вариантах реализации изобретения диспетчер 106 хранения содержит функции идентификации доступных служб удаленного сетевого уровня 100C хранилища, таких как служба 126 хранения объектов, служба 128 хранения блоков и служба 130 длительного хранения. Могут также использоваться другие механизмы поиска и идентификации систем памяти, доступных на локальном сетевом уровне 100B хранилища, и запоминающих устройств, имеющихся на локальном уровне 100A хранилища.
[0049] Таким образом, объем доступной памяти, пределы памяти и другие атрибуты различных уровней 100 хранилища могут быть определены диспетчером 106 хранения или другим соответствующим компонентом. Для служб хранения каждого уровня 100 также могут быть определены параметры настройки и оптимизации. Кроме того, в некоторых вариантах реализации изобретения пользователь вычислительного устройства 102 может иметь полномочия на указание доступных уровней 100 хранилища, предоставление учетных данных каждого уровня 100 хранилища и/или указание различных характеристик каждого уровня 100, таких как характеристики, описанные выше. После определения доступных уровней 100A-100C хранилища процедура 300 переходит от этапа 302 к этапу 304.
[0050] На этапе 304 диспетчер 106 хранения или другой компонент выполняет расчет одного или более показателей 204 расположения объекта. Например, как кратко указано выше, диспетчер 106 хранения может постоянно выполнять расчет задержки 204F уровня хранилища и пропускной способности 204H уровня хранилища для каждого из уровней 100 хранилища, определенных на этапе 302. Эти расчеты могут выполняться на регулярной и постоянной основе и, таким образом, диспетчер 106 получает актуальную информацию, касающуюся задержки и пропускной способности по каждому уровню 100. В других вариантах реализации изобретения могут выполняться также другие расчеты с целью генерирования других показателей 204 расположения объекта.
[0051] После выполнения этапа 304 осуществляется переход процедуры 300 к этапу 306, на котором диспетчер 106 хранения получает один или более показателей 204 расположения объекта от одного или более внешних источников. Например, как указано выше, диспетчер 106 хранения может получить данные затрат 204C на хранение от служб удаленного сетевого уровня 100C хранилища. В других вариантах реализации изобретения запросы на получение других типов показателей 204 расположения объекта могут быть направлены другим внешним источникам.
[0052] После выполнения этапа 306 осуществляется возврат процедуры 300 к этапу 302, после чего описанные выше процессы могут быть выполнены повторно. В результате повторения указанных операций диспетчер 106 хранения обеспечивает наличие обновленного списка доступных уровней 100 хранилища, обновленных характеристик каждого уровня 100 и обновленных показателей 204 расположения объектов. Как более подробно описано далее со ссылкой на фиг. 4, данная информация может использоваться для динамического выбора соответствующего уровня 100 при получении диспетчером 106 хранения запроса 201 на сохранение объекта 110.
[0053] На фиг. 4 проиллюстрирована структурная схема, представляющая иллюстративную процедуру 400, которая описывает аспекты функционирования диспетчера 106 хранения, касающиеся сохранения объекта 110 на выбранном в динамическом режиме уровне 100 хранилища, в соответствии с вариантом реализации изобретения, представленным в настоящем документе. Процедура 400 начинается выполнением этапа 402, на котором диспетчер 106 хранения получает запрос 201 на сохранение объекта 110. Как указано выше, запрос 201 может быть обобщенным и, таким образом, не может обеспечить указание местоположения для сохранения объекта 110. В другом варианте запрос 201 может дополнительно содержать показатель 208 оптимизации и один или более показателей 204 расположения объекта.
[0054] При получении запроса 201 на этапе 402 процедура 400 переходит к этапу 404, на котором диспетчер 106 хранения использует один или более имеющихся показателей 204 расположения объекта и показатель 208 оптимизации, если он предусмотрен, с целью выбора одного из доступных уровней 100 хранилища для сохранения объекта 110. Например, если с запросом 201 на сохранение объекта 210 передан показатель 208 оптимизации, указывающий, что сохранение объекта 110 следует оптимизировать с учетом затрат, то диспетчер 106 хранения выбирает уровень 100 хранилища, связанный с минимальными затратами. В другом примере, если предусмотрен показатель 208 оптимизации, указывающий, что сохранение объекта 110 следует оптимизировать с учетом скорости доступа, то диспетчер 106 выбирает уровень 100 хранилища, доступ к которому осуществляется при помощи соединения, имеющего максимальную возможную пропускную способность и/или минимальную задержку. Диспетчер 106 хранения может также использовать комбинацию показателей 204 расположения объекта с целью выбора соответствующего уровня 100 для сохранения объекта 110. Если показатель 208 оптимизации не передан совместно с запросом 201 на сохранение объекта 110, то диспетчер 106 хранения осуществляет выбор уровня 100 хранилища на основе имеющихся показателей 204 расположения объекта.
[0055] После выбора диспетчером 106 хранения соответствующего уровня 100 для сохранения объекта 110 процедура 400 переходит от этапа 404 к этапу 406. На этапе 406 диспетчер 106 хранения выполняет сохранение объекта 110 на выбранном уровне 100 хранилища. Далее процедура 400 переходит к этапу 408, на котором диспетчер 106 хранения обновляет таблицу 206 поиска для определения уровня 100, на котором было выполнено сохранение объекта 110. Как более подробно описано далее, данные, записанные в таблице 206 поиска, могут позднее использоваться для получения объекта 110 из соответствующего уровня 100 хранилища. После выполнения этапа 408 процедура 400 переходит к этапу 410, на котором осуществляется завершение процедуры.
[0056] На фиг. 5 проиллюстрирована структурная схема, представляющая иллюстративную процедуру 500, которая описывает аспекты функционирования диспетчера 106 хранения, касающиеся получения объекта 110, ранее сохраненного на выбранном в динамическом режиме уровне 100 хранилища, в соответствии с вариантом реализации изобретения, представленным в настоящем документе. Процедура 500 начинается выполнением этапа 502, на котором диспетчер 106 хранения получает запрос на чтение объекта 110, ранее сохраненного на одном из уровней 100 хранилища.
[0057] После получения на этапе 502 запроса на чтение объекта 110 процедура 500 переходит к этапу 504, на котором диспетчер 106 хранения обращается к таблице 206 поиска, чтобы определить уровень 100, на котором ранее был сохранен запрошенный объект 110. После определения уровня 100, на котором содержится запрошенный объект 110, процедура 500 переходит от этапа 504 к этапу 506.
[0058] На этапе 506 диспетчер 106 хранения получает из идентифицированного уровня 100 хранилища запрошенный объект 110. Далее процедура 500 переходит от этапа 506 к этапу 508, на котором диспетчер 106 хранения передает полученный объект 110 процессу, подавшему запрос на получение объекта 110. Затем процедура 500 переходит от этапа 508 к этапу 510, на котором выполнение процедуры завершается.
[0059] Как кратко указано выше, в некоторых вариантах реализации изобретения вычислительное устройство 102 может быть размещено совместно с вычислительными системами, предоставляющими удаленный сетевой уровень 100C хранилища. В этих вариантах реализации изобретения функции динамического выбора уровня 100 хранилища, описанные в настоящем документе, могут быть реализованы на основе распределенной среды 604 исполнения, которая на постоянной основе или по мере необходимости предоставляет вычислительные ресурсы для исполнения приложения 108 и функционирования операционной системы 104. фиг. 6 и 7 иллюстрируют аспекты такой распределенной вычислительной среды 604.
[0060] Вычислительные ресурсы, предоставленные распределенной средой 604 исполнения, могут содержать различные типы средств, таких как ресурсы обработки данных, ресурсы хранения данных, ресурсы обмена данными и аналогичные ресурсы. Каждый тип вычислительных ресурсов может представлять собой универсальный ресурс или ресурс, доступный в виде набора специализированных конфигураций. Например, как более подробно описано далее, ресурсы обработки данных могут быть представлены в виде экземпляров виртуальной машины, представленных в различных конфигурациях. Указанные экземпляры могут быть предназначены для выполнения приложений, в том числе веб-серверов, серверов приложений, серверов мультимедиа, серверов баз данных и других типов приложений 108. Ресурсы хранения данных могут охватывать устройства хранения файлов, устройства хранения блоков и аналогичные устройства. Эти ресурсы могут быть предоставлены службой 126 хранения объектов, службой 128 хранения блоков и/или службой 130 длительного хранения, которые описаны выше со ссылкой на фиг. 1.
[0061] Каждый тип или конфигурация вычислительного ресурса может иметь различные размеры, например, могут использоваться большие ресурсы, состоящие из множества процессоров, содержащие большие объемы памяти и/или большие емкости хранения, и малые ресурсы, состоящие из небольшого числа процессоров, содержащие небольшие объемы памяти и/или небольшие емкости хранения. Экземпляры виртуальной машины также могут иметь характеристики, представляющие непрерывный диапазон соотношения производительности процессора и емкости памяти.
[0062] В одном из вариантов реализации изобретения вычислительные ресурсы, предоставленные распределенной средой 604 исполнения, обеспечиваются одним или более центров 606A-606N обработки данных (которые в настоящем документе могут указываться в единственном числе как «центр 606 обработки данных» или во множественном числе - как «центры 606 обработки данных»). Центры 606 обработки данных представляют собой структуры, используемые для размещения и эксплуатации компьютерных систем и связанных с ними компонентов. Центры 606 обработки данных обычно содержат избыточные или резервные источники питания, системы обмена данными, охлаждения и безопасности. Центры 606 обработки данных могут также размещаться в различных географических пунктах. Ниже со ссылкой на фиг. 7 рассмотрена иллюстративная конфигурация центра 606 обработки данных, на основе которого реализованы принципы и технологии динамического выбора уровня 100 хранилища, описанные в настоящем документе.
[0063] Клиенты и другие пользователи распределенной среды 604 выполнения могут осуществлять доступ к вычислительным ресурсам, предоставленным центрами 606 обработки данных, при помощи ГС 124. Хотя на фиг. 6 проиллюстрирована ГС 124, очевидно, что может быть использована ЛС 118, сеть Интернет или сеть, имеющая любую другую известную в данной области техники топологию, которая соединяет центры 606 обработки данных с удаленными клиентами и другими пользователями. Очевидно также, что может использоваться комбинация указанных сетей.
[0064] Вычислительная система 602 клиента представляет собой вычислительное устройство, используемое клиентом или другими пользователями распределенной среды 604 исполнения. Например, вычислительная система 602 клиента может представлять собой серверный компьютер, настольный или переносной персональный компьютер, планшетный компьютер, радиотелефон, карманный персональный компьютер (КПК), электронную книгу, игровую приставку, абонентскую приставку или любое другое вычислительное устройство, обеспечивающее возможность доступа к распределенной среде 604 исполнения. Как более подробно указано далее, вычислительная система 602 клиента может использоваться для осуществления доступа к вычислительному устройству 102, такому как серверный компьютер, размещенный в одном из центров 606 обработки данных, и выполнения операционной системы 104, реализующей функции динамического выбора уровня 100 хранилища, описанные в настоящем документе. Вычислительная система 602 клиента может использовать приложение, содержащее протокол удаленного рабочего стола (RDP) или другой приемлемый протокол, обеспечивающий функции отображения и взаимодействия с рабочим столом, предоставленным операционной системой 104 и приложением 108. Дополнительные детали, касающиеся этого процесса, представлены ниже.
[0065] На фиг. 7 проиллюстрирована схема вычислительной системы, иллюстрирующая конфигурацию центра 606 обработки данных, который обеспечивает реализацию распределенной среды 604 исполнения, в том числе принципов и технологий динамического выбора уровня хранилища 100, описанных в настоящем документе. Пример реализации центра 606 обработки данных, проиллюстрированный на фиг. 7, содержит несколько серверных компьютеров 702A-702F (которые в настоящем документе могут указываться в единственном числе как «серверный компьютер 702» или во множественном числе - как «серверные компьютеры 702»), предоставляющих вычислительные ресурсы для выполнения операционной системы 104 и одного или более приложений 108. Серверные компьютеры 702 могут представлять собой типовые блоки или монтируемые в стойку серверные компьютеры, предназначенные для предоставления компьютерных ресурсов, описанных выше. Например, в одном из вариантов осуществления изобретения серверные компьютеры 702 предназначены для реализации экземпляров 706A-706Q вычислительных ресурсов.
[0066] В одном из вариантов реализации изобретения экземпляры 706A-706Q (которые в настоящем документе могут указываться в единственном числе как «экземпляр 706» или во множественном числе - как «экземпляры 706») представляют собой экземпляры виртуальной машины. Как известно в данной области техники, экземпляр виртуальной машины представляет собой экземпляр программной реализации машины (то есть, компьютера), который осуществляет выполнение программ как физическая машина. В примере экземпляра виртуальной машины каждый из серверов 702 может быть предназначен для выполнения диспетчера 704 экземпляров, обеспечивающего реализацию экземпляров. Диспетчер 704 экземпляров может представлять собой низкоуровневую оболочку или программу другого типа, предназначенную, например, для обеспечения выполнения множества экземпляров 706 на одном сервере 702.
[0067] Как указано выше, каждый экземпляр 706 может быть предназначен для выполнения операционной системы 104, содержащей функции динамического выбора уровня 100 хранилища, описанные в настоящем документе, и одного или более приложений 108. Например, серверный компьютер 702F, проиллюстрированный на фиг. 7, предназначен для выполнения операционной системы 104 в экземпляре 706Q. Приложение 108 также может выполняться в экземпляре 706Q.
[0068] Как также кратко указано выше, клиент распределенной среды 604 исполнения может связаться с операционной системой 104 при помощи вычислительной системы 602 клиента с использованием клиентского приложения, имеющего соответствующую конфигурацию. Например, вычислительная система 602 клиента может использовать протокол удаленного рабочего стола (RDP) клиентского приложения для соединения с экземпляром 706Q и использования операционной системы 104, а также приложения 108.
[0069] Когда вычислительная система 602 клиента применяется для соединения и использования операционной системы 104 и приложения 108, как описано выше, операционная система 104 может использовать функции, описанные выше, с целью динамического выбора уровня 100 хранилища для сохранения данных клиента. Например, диспетчер 106 хранения может выбрать на локальном уровне 100A хранилища устройство (то есть серверный компьютер 702F) для сохранения данных клиента, а также может выбрать службу на удаленном сетевом уровне 100C хранилища для сохранения данных клиента. Очевидно, что в этом примере один или более экземпляров 706A-706Q могут использоваться для предоставления различных служб хранения удаленного сетевого уровня 100C хранилища.
[0070] В примере центра 606 обработки данных, проиллюстрированном на фиг. 7, для соединения серверных компьютеров 702A-702F используется соответствующая локальная сеть 118. Локальная сеть 118 также соединена с глобальной сетью 124, проиллюстрированной на фиг. 1 и 6. Очевидно, что топология сети, указанная на фиг. 1, 6, и 7, является сильно упрощенной и что для соединения различных вычислительных систем, описанных в настоящем документе, может использоваться намного более сетей и сетевых устройств. Могут также использоваться соответствующие устройства или программные модули балансировки нагрузки для балансировки нагрузки между центрами 606A-606N обработки данных, между серверными компьютерами 702A-702F каждого центра 606 обработки данных и между экземплярами 706, приобретенными каждым клиентом распределенной среды 604 исполнения. Очевидно также, что центр 606 обработки данных, проиллюстрированный на фиг. 7, является просто примером, и могут быть использованы другие реализации указанного центра. Кроме того, очевидно, что функции, выполняемые компонентами, описанными выше, могут быть реализованы на основе программного обеспечения, аппаратного обеспечения или комбинации аппаратного и программного обеспечения. Для специалистов в данной области техники очевидно, что можно использовать другие варианты реализации изобретения.
[0071] Варианты реализации изобретения могут быть определены пунктами, указанными ниже.
1. Машиночитаемый носитель данных, содержащий команды, исполняемые компьютером и записанные на указанном носителе, которые при исполнении компьютером обеспечивают реализацию следующих операций:
исполнение операционной системы, сконфигурированной для сохранения объектов на локальном уровне хранилища, локальном сетевом уровне хранилища или удаленном сетевом уровне хранилища;
прием операционной системой обобщенного запроса на сохранение объекта;
использование одного или более показателей расположения объекта в ответ на прием запроса на сохранение объекта для определения, следует ли выполнить сохранение объекта на локальном уровне хранилища, локальном сетевом уровне хранилища или удаленном сетевом уровне хранилища; и
обеспечение сохранения объекта на определенном уровне хранилища.
2. Машиночитаемый носитель данных по п.1, при этом локальный уровень хранилища содержит одно или более запоминающих устройств или устройств массовой памяти компьютера.
3. Машиночитаемый носитель данных по п.2, при этом локальный сетевой уровень хранилища содержит одну или более систем памяти, доступ к которым компьютер осуществляет при помощи локальной сети (LAN).
4. Машиночитаемый носитель данных по п.3, при этом удаленный сетевой уровень хранилища содержит одну или более служб хранения, доступных для компьютера.
5. Машиночитаемый носитель данных по п.4, при этом запрос на сохранение объекта содержит объект и данные, идентифицирующие показатель оптимизации, а определение того, следует ли сохранить объект на локальном уровне хранилища, локальном сетевом уровне хранилища или удаленном сетевом уровне хранилища осуществляется на основе показателей расположения объекта и показателя оптимизации.
6. Машиночитаемый носитель данных по п.5, при этом запрос на сохранение объекта дополнительно содержит один или более показателей расположения объекта.
7. Машиночитаемый носитель данных по п.6, при этом показатели расположения объекта содержат один или более параметров, охватывающих тип объекта, размер объекта, атрибуты файла объекта, требования безопасности объекта, требования совместного использования объекта, параметры статистики использования объекта и характеристики сжимаемости объекта.
8. Машиночитаемый носитель данных по п.6, при этом показатели расположения объекта содержат один или более параметров, охватывающих затраты на сохранение объекта на уровне хранилища, задержку при сохранении объекта или получении объекта из уровня хранилища и доступную пропускную способность соединения с уровнем хранилища.
9. Машиночитаемый носитель данных по п.6, при этом операционная система исполняется в экземпляре виртуальной машины.
10. Машиночитаемый носитель данных по п.9, при этом экземпляр виртуальной машины исполняется в распределенной среде исполнения.
11. Компьютерно-реализуемый способ динамического выбора уровня хранилища из множества уровней хранилища с целью сохранения объекта, включающий выполнение компьютерно-реализуемых операций для осуществления следующих этапов:
прием операционной системой обобщенного запроса на сохранение объекта;
в ответ на прием указанного запроса, выбор при помощи операционной системы уровня хранилища из множества уровней хранилища с целью сохранения объекта на основе одного или более показателей расположения объекта; и
обеспечение сохранения объекта на выбранном уровне хранилища.
12. Компьютерно-реализуемый способ по п.11, в котором множество уровней хранилища содержит локальный уровень хранилища, локальный сетевой уровень хранилища и удаленный сетевой уровень хранилища.
13. Компьютерно-реализуемый способ по п.12, в котором выбор уровня хранилища для сохранения объекта осуществляется на основе показателей расположения объекта и показателя оптимизации.
14. Компьютерно-реализуемый способ по п.13, в котором запрос на сохранение объекта дополнительно содержит один или более показателей расположения объекта.
15. Компьютерно-реализуемый способ по п.13, который дополнительно содержит:
сохранение данных, идентифицирующих объект и уровень хранилища, используемый для сохранения объекта;
прием запроса на получение объекта; и
в ответ на прием запроса на получение объекта, использование сохраненных данных для идентификации уровня хранилища, на котором сохранен объект, получения объекта из идентифицированного уровня хранилища и предоставление полученного объекта в ответ на запрос на получение объекта.
16. Компьютерно-реализуемый способ по п.13, в котором операционная система исполняется в экземпляре виртуальной машины.
17. Компьютерно-реализуемый способ по п.16, в котором экземпляр виртуальной машины исполняется в распределенной среде исполнения.
18. Компьютерно-реализуемый способ динамического выбора уровня хранилища с целью сохранения объекта, включающий выполнение компьютерно-реализуемых операций для осуществления следующих этапов:
прием операционной системой обобщенного запроса на сохранение объекта;
в ответ на прием указанного запроса, выбор операционной системой локального местоположения хранения или сетевого местоположения хранения, приемлемой для сохранения объекта, на основе одного или более показателей расположения объекта в ответ на получение указанного запроса; и
обеспечение сохранения объекта в выбранном местоположения хранения.
19. Компьютерно-реализуемый способ по п.18, в котором обобщенный запрос представляет собой запрос, не содержащий указание местоположения для сохранения объекта.
20. Компьютерно-реализуемый способ по п.18, в котором указанное локальное местоположение хранения содержит одну или более систем памяти и устройств массовой памяти компьютера, на которых исполняется операционная система, принимающая обобщенный запрос на сохранение объекта.
21. Компьютерно-реализуемый способ по п.18, в котором указанное сетевое местоположение хранения содержит службу хранения, доступную для компьютера при помощи веб-службы.
22. Компьютерно-реализуемый способ по п.18, в котором показатели расположения объекта генерируются в результате контроля обмена данными с множеством уровней сетевого хранилища.
23. Компьютерно-реализуемый способ по п.18, в котором один или более показателей расположения объекта получены от служб хранения.
24. Компьютерно-реализуемый способ по п.18, в котором показатели расположения объекта содержат один или более параметров, охватывающих тип объекта, размер объекта, атрибуты файла объекта, требования безопасности объекта, требования общего доступа, параметры статистики использования объекта, характеристики сжимаемости объекта, затраты на хранение объекта в местоположении хранения, задержку при сохранении объекта или получении объекта из местоположения хранения и доступную пропускную способность соединения с позицией хранилища.
[0072] На фиг. 8 проиллюстрирован пример архитектуры компьютера 800, обеспечивающего исполнение описанных выше программных компонентов, предназначенных для динамического выбора уровня 100 хранилища с целью сохранения объекта 110. Архитектура компьютера, проиллюстрированная на фиг. 8, представляет известный серверный компьютер, рабочую станцию, настольный компьютер, переносной компьютер, планшет, смартфон, сетевое устройство, карманный персональный компьютер (КПК), электронную книгу, цифровой сотовый телефон или другое вычислительное устройство и может использоваться для выполнения различных программных компонентов, указанных в настоящем документе. Например, компьютер 800, проиллюстрированный на фиг. 8, может использоваться для выполнения операционной системы 104 и/или диспетчера 106 хранения. Компьютер 800 может также использоваться для реализации аспектов вычислительных систем, размещенных на локальном сетевом уровне 100B хранилища и/или удаленном сетевом уровне 100C хранилища.
[0073] В варианте реализации изобретения, проиллюстрированном на фиг. 8, компьютер 800 включает в себя основную плату или «материнскую плату». Указанная плата представляет собой печатную плату, к которой при помощи системной шины или других каналов обмена электронными данными может быть подключено множество компонентов или устройств. В иллюстративном варианте реализации изобретения один или более центральных процессоров (ЦП) 802 функционируют совместно с набором 804 микросхем. Центральные процессоры 802 могут представлять собой типовые программируемые процессоры, выполняющие арифметические и логические операции, которые требуются для функционирования компьютера 800.
[0074] Центральные процессоры 802 выполняют требуемые операции, осуществляя переход элементов из одного дискретного физического состояния в другое посредством управления элементами коммутации, которые обеспечивают установление и изменение указанных состояний. Элементы коммутации могут, в общем, представлять собой электронные схемы, которые устанавливаются в одно из двух возможных двоичных состояний, такие как триггеры, и электронные схемы, обеспечивающие получение на выходе состояния, представляющего собой логическую комбинацию состояний одного или более других элементов коммутации, такие как логические вентили. Эти базовые элементы коммутации могут комбинироваться с целью создания более сложных логических схем, в том числе регистров, схем суммирования-вычитания, арифметико-логических устройств, модулей операций с плавающей запятой и аналогичных устройств.
[0075] Набор 804 микросхем обеспечивает интерфейс между центральными процессорами 802 и остальными компонентами и устройствами основной платы. Набор 804 микросхем может обеспечивать интерфейс с оперативным запоминающим устройством (ОЗУ) 806, используемым в качестве основной памяти компьютера 800. Набор 804 микросхем может дополнительно обеспечивать интерфейс с машиночитаемым носителем данных, таким как постоянное запоминающее устройство (ПЗУ) 808 или энергонезависимое ОЗУ (NVRAM), предназначенное для хранения основных процедур, обеспечивающих запуск компьютера 800 и передачу информации между различными компонентами и устройствами. Постоянное запоминающее устройство 808 или энергонезависимое ОЗУ могут также содержать другие программные компоненты, необходимые для функционирования компьютера 800, в соответствии с вариантами реализации изобретения, описанными в настоящем документе.
[0076] Компьютер 800 может функционировать в сетевой среде, используя логические соединения с удаленными вычислительными устройствами и компьютерными системами при помощи сети, такой как локальная сеть 118, описанная выше. Набор 804 микросхем может содержать функции обеспечения сетевого соединения при помощи контроллера 810 сетевого интерфейса (NIC), такого как гигабитный адаптер сети Ethernet. Контроллер 810 сетевого интерфейса осуществляет подключение компьютера 800 к другим вычислительным устройствам при помощи сети 118. Следует отметить, что в компьютере 800 могут быть предусмотрены несколько контроллеров 810 сетевого интерфейса, обеспечивающих соединение компьютера с сетями и удаленными компьютерными системами других типов.
[0077] Компьютер 800 может быть подключен к устройству 812 массовой памяти, которое выполняет для компьютера функции энергонезависимой памяти. Устройство 812 массовой памяти может осуществлять хранение системных программ, приложений, других программных модулей и данных, которые были подробно описаны в настоящем документе. Устройство 812 массовой памяти может быть подключено к компьютеру 800 через контроллер 814 хранилища, связанный с набором 804 микросхем. Устройство 812 массовой памяти может содержать один или более физических блоков памяти. Контроллер 814 хранилища может быть связан с физическими блоками памяти при помощи последовательного интерфейса малых вычислительных систем SCSI (SAS), последовательного интерфейса обмена данными с накопителями информации (SATA), интерфейса Fibre Channel (FC) или другого интерфейса, предназначенного для физического подключения и передачи данных между компьютерами и физическими блоками памяти.
[0078] Компьютер 800 может осуществлять хранение данных в устройстве 812 массовой памяти посредством преобразования физического состояния физических блоков памяти с целью отображения сохраняемой информации. Конкретное преобразование физического состояния в различных вариантах реализации изобретения, описанных в настоящем документе, может зависеть от различных факторов. Примеры таких факторов могут включать, среди прочего, технологию, используемую для реализации физических блоков памяти, независимо от того, является ли устройство 812 массовой памяти основной или дополнительной памятью, и аналогичные параметры.
[0079] Например, компьютер 800 может осуществлять хранение информации в устройстве 812 массовой памяти посредством подачи при помощи контроллера 814 хранилища команд, обеспечивающих изменение магнитных характеристик конкретной позиции накопителя на магнитных дисках, характеристик отражения или преломления конкретной позиции устройства оптической памяти или электрических характеристик конкретного конденсатора, транзистора или другого дискретного компонента твердотельного запоминающего устройства. В пределах сущности и объема настоящего изобретения возможны другие преобразования физических носителей, причем указанные выше примеры представлены исключительно с целью упрощения описания. Компьютер 800 может дополнительно осуществлять чтение информации из устройства 812 массовой памяти посредством определения физического состояния одной или более конкретных позиций физических блоков памяти.
[0080] Кроме указанного выше устройства 812 массовой памяти компьютер 800 с целью сохранения или получения информации может осуществлять доступ к другим машиночитаемым носителям данных, таким как программные модули, структуры данных или прочая информация. Для специалистов в данной области техники очевидно, что машиночитаемый носитель данных может представлять собой любой имеющийся на рынке носитель данных, обеспечивающий постоянное хранение данных и доступный для компьютера 800.
[0081] В качестве примера, не имеющего ограничительного характера, машиночитаемые носители данных могут представлять собой энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные на основе любого способа или технологии. Машиночитаемые носители данных охватывают, среди прочего, ОЗУ, ПЗУ, стираемые программируемые ПЗУ (EPROM), электрически стираемые программируемые ПЗУ (ECRROM), флэш-память или другую память на основе твердотельной технологии, ПЗУ на компакт-дисках (CD-ROM), универсальные цифровые диски (DVD), универсальные цифровые диски высокой четкости (HD-DVD), диски BLU-RAY или другие оптические запоминающие устройства, запоминающие устройства на компакт-кассетах с магнитной лентой, на магнитной ленте, на магнитных дисках или другие магнитные запоминающие устройства либо любые другие носители данных, которые можно использовать для хранения требуемой информации. Используемый в настоящем документе термин «машиночитаемый носитель данных» не охватывает кратковременные сигналы.
[0082] В устройстве 812 массовой памяти может храниться операционная система 104, используемая для управления функционированием компьютера 800. В соответствии с одним из вариантов реализации изобретения операционная система представляет собой операционную систему LINUX. В соответствии с другим вариантом реализации изобретения операционная система представляет собой операционную систему WINDOWS SERVER, поставляемую корпорацией MICROSOFT. В соответствии с дополнительными вариантами реализации изобретения операционная система может представлять собой операционную систему UNIX или SOLARIS. Очевидно, что могут использоваться также другие операционные системы. Как проиллюстрировано на фиг. 8 и описано выше, операционная система 104 также может содержать диспетчер 106 хранения, предназначенный для выполнения функций, описанных выше. Как указано ранее, функции, описанные в настоящем документе, которые выполняет диспетчер 106 хранения, могут осуществляться другим компонентом, содержащимся в операционной системе 104, компонентом, не входящим в состав операционной системы 104, или комбинацией указанных компонентов.
[0083] Устройство 812 массовой памяти может осуществлять хранение других системных программ и приложений, а также данных, используемых компьютером 800, таких как приложение 108 и/или любые другие программные компоненты и данные, указанные выше. Устройство 812 массовой памяти может также осуществлять хранение других программ и данных, конкретно не указанных в настоящем документе.
[0084] В одном из вариантов реализации изобретения устройство 812 массовой памяти или другой машиночитаемый носитель данных содержит выполняемые компьютером команды, которые при загрузке в компьютер 800 преобразуют компьютер из универсальной вычислительной системы в специализированный компьютер, обеспечивающий осуществление вариантов реализации изобретения, описанных в настоящем документе. Указанные выполняемые компьютером команды преобразуют компьютер 800 посредством определения переходов центральных процессоров 802 между состояниями, как указано выше. В соответствии с одним из вариантов реализации изобретения компьютер 800 имеет доступ к машиночитаемому носителю данных, на котором хранятся выполняемые компьютером команды. Выполнение этих команд компьютером 800 обеспечивает осуществление процедур 300, 400 и 500, описанных выше со ссылкой на фиг. 3, 4 и 5, соответственно.
[0085] Компьютер 800 может также содержать контроллер 818 ввода-вывода, предназначенный для приема и обработки входных данных, поступающих от ряда устройств ввода, таких как клавиатура, мышь, сенсорная панель, сенсорный экран, электронное перо или устройство ввода другого типа. Аналогичным образом, контроллер 818 ввода-вывода может осуществлять подачу выходных данных на дисплей, такой как монитор компьютера, плоский дисплей, цифровой проектор, принтер, плоттер или устройство вывода другого типа. Очевидно, что компьютер 800 может не содержать все компоненты, проиллюстрированные на фиг. 8, может содержать другие компоненты, которые явно не проиллюстрированные на фиг. 8, или может быть построен на основе архитектуры, полностью отличающейся от архитектуры, проиллюстрированной на фиг. 8.
[0086] С учетом указанного выше, следует отметить, что в настоящем документе были рассмотрены технологии динамического выбора уровней хранилища. Хотя представленный в настоящем документе предмет изобретения описан с использованием терминологии, присущей описанию архитектуры компьютеров, способов выполнения операций и машиночитаемых носителей, очевидно, что объем настоящего изобретения, определенный приложенной формулой изобретения, не ограничивается конкретными функциями, операциями или носителями, указанными в настоящем документе. Напротив, конкретные функции, операции и носители описаны в настоящем документе в качестве примеров реализации пунктов формулы изобретения.
[0087] Описание изобретения, указанное выше, представлено только для иллюстрации и не имеет ограничительного характера. Кроме того, заявленное изобретение не ограничивается вариантами реализации, которые обеспечивают устранение некоторых или всех недостатков, указанных в настоящем описании. В изобретение, представленное в настоящем документе, могут быть внесены модификации и изменения, не совпадающие с вариантами реализации изобретения и областями применения, указанными в настоящем документе, и не выходящие за пределы объема и сущности настоящего изобретения, определяемых приложенной формулой изобретения.