ОБЕСПЕЧЕНИЕ ПРОЗРАЧНОЙ ОТРАБОТКИ ОТКАЗА В ФАЙЛОВОЙ СИСТЕМЕ Российский патент 2016 года по МПК H04L12/24 G06F15/16 

Описание патента на изобретение RU2595482C2

УРОВЕНЬ ТЕХНИКИ

[0001] Существует ряд методик для совместного использования файлов, принтеров и других ресурсов между двумя компьютерами в сети. Например, двумя сетевыми протоколами прикладного уровня для совместного использования ресурсов являются Блок сообщений сервера (SMB) и Сетевая файловая система (NFS). SMB используется MICROSOFT™ WINDOWS™ и другими операционными системами, чтобы разрешить двум компьютерам или другим ресурсам взаимодействовать, запрашивать доступ к ресурсам, задавать желаемый доступ к ресурсам (например, чтение, запись и т.п.), блокировать ресурсы и так далее. MICROSOFT™ WINDOWS™ Vista представила SMB 2.0, который упростил набор команд SMB 1.0 и добавил много других расширений. MICROSOFT™ WINDOWS™ 7 и Server 2008 R2 представили SMB 2.1, который добавил уступающую блокировку (oplock) и другие расширения.

[0002] Большинство протоколов для удаленного совместного использования ресурсов предполагают взаимно-однозначное соответствие между соединениями и сеансами. Сеанс представляет собой время существования любого одиночного запроса доступа к ресурсу и последующего доступа к тому ресурсу, пока не завершится соединение. Сеанс также может ассоциироваться с конкретным участником безопасности и проверенными учетными данными безопасности, которые определяют действия, которые санкционируются в течение сеанса. Соединение может включать в себя Протокол управления передачей (TCP), Протокол дейтаграмм пользователя (UDP) или другой тип соединения, по которому протоколы более высокого уровня типа SMB и NFS могут взаимодействовать, чтобы выполнять команды. Сеанс SMB или NFS обычно включает в себя открытие соединения TCP или UDP между источником запроса и целевым объектом запроса, отправку одной или нескольких команд SMB или NFS для доступа к целевому ресурсу, и затем закрытие сеанса. Иногда соединения теряются во время сеанса (например, из-за сетевого сбоя), сбрасывая любое состояние клиента и сервера, установленное во время соединения. Чтобы восстановить соединение, клиенту и серверу обычно нужно еще раз повторить все этапы, используемые для исходного установления соединения.

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

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

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0006] Фиг.1 - блок-схема, которая иллюстрирует компоненты системы состояния соединения в одном варианте осуществления.

[0007] Фиг.2 - блок-схема алгоритма, которая иллюстрирует обработку в системе состояния соединения для сбора информации о состоянии файловой системы в одном варианте осуществления.

[0008] Фиг.3 - логическая блок-схема, которая иллюстрирует обработку в системе состояния соединения для возобновления соединения после отработки отказа в одном варианте осуществления.

[0009] Фиг.4 - блок-схема, которая иллюстрирует операционную среду системы состояния соединения в одном варианте осуществления.

ПОДРОБНОЕ ОПИСАНИЕ

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

[0011] Система предоставляет фильтр ключа возобновления, который может использоваться для прозрачной отработки отказа после того, как сервер теряет свое соединение с клиентом. Фильтр ключа возобновления находится над файловой системой и поэтому не зависит от протокола, используемого для доступа к файловой системе. Фильтр ключа возобновления записывает состояние активного файла, а затем восстанавливает состояние активного файла после отработки отказа. Фильтр ключа возобновления может собирать ряд информации о состоянии. Например, фильтр записывает активное состояние файловой системы, содержащее открытые дескрипторы (на которые статически ссылается ключ возобновления), незафиксированное состояние файла (например, удаление при закрытии, ожидание удаления и состояние блокировки) и некоторые рабочие/прерванные файловые операции. Фильтр восстанавливает активное состояние файловой системы после отработки отказа так, что открытые дескрипторы возобновляются для соответствия таковым перед отработкой отказа, и рабочие операции можно повторить соответственно. Фильтр предоставляет нескольким Удаленным файловым системам (RFS) средство для хранения и извлечения непрозрачных данных, которые ассоциируются с открытым дескриптором файла, на который ссылаются посредством ключа возобновления. Фильтр принудительно устанавливает период сокрытия у активных файлов после отработки отказа, который гарантирует, что состояние активного файла можно восстановить соответственно, и что другие клиенты не вмешиваются в доступ к файлу в это время. Фильтр также позволяет "приостановить" активный в настоящее время файл, а затем возобновить без отработки отказа, чтобы поддержать SMB в кластерном сценарии, где узлы отрабатывают отказ.

[0012] Удаленная файловая система (RFS) поставляет ключ возобновления с каждой операцией создания файла в качестве дополнительного параметра во время создания. Этот ключ уникален для RFS. Фильтр ключа возобновления использует ключ возобновления и ключ идентификации RFS совместно в качестве глобального уникального идентификатора (GUID) для дескриптора файла. В фазе возобновления ключ возобновления используется для отображения существующих дескрипторов файлов перед отработкой отказа в фиксированное состояние файлов после отработки отказа, сохраненное фильтром ключа возобновления. Таким образом, система состояния соединения позволяет тому же или другому серверу возобновить состояние предыдущего сеанса с клиентом после события отработки отказа с как можно меньшим перерывом для клиентов.

[0013] Фиг.1 - блок-схема, которая иллюстрирует компоненты системы состояния соединения в одном варианте осуществления. Система 100 включает в себя компонент 110 сбора состояния, компонент 120 хранения состояния, хранилище 130 данных состояния, компонент 140 обнаружения возобновления, компонент 150 извлечения состояния, компонент 160 восстановления состояния, компонент 170 принудительного применения сокрытия и компонент 180 приостановки ресурса. Каждый из этих компонентов подробнее описывается в этом документе.

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

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

[0016] Хранилище 130 данных состояния на постоянной основе хранит информацию о состоянии файловой системы, которую возобновляющий сервер использует для воссоздания информации о состоянии, сохраненной неисправным сервером. В некоторых случаях возобновляющий сервер и неисправный сервер могут быть одним и тем же сервером, использующим разное соединение с клиентом или возвращающимся после короткого перерыва. В других случаях возобновляющий сервер и неисправный сервер являются разными серверами, и хранилище 130 данных состояния предоставляется в местоположении, доступном обоим серверам для совместного использования информации о состоянии. Хранилище 130 данных состояния может включать в себя один или несколько файлов, файловых систем, жестких дисков, баз данных, сетей хранения данных (SAN), служб облачного хранения, или другую систему памяти для постоянного хранения данных и доступную неисправному и возобновляющему серверам для обмена информацией. Когда неисправный сервер выполняет операции, он сохраняет информацию о состоянии касательно хода операций в хранилище 130 данных состояния. При сбое неисправный сервер будет приостановлен, а возобновляющий сервер обращается к информации о состоянии, чтобы возобновить состояние и продолжить выполнение любых операций, которые не были закончены.

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

[0018] Компонент 150 извлечения состояния извлекает сохраненную информацию о состоянии из местоположения, доступного возобновляющему серверу, где информация о состоянии позволяет возобновляющему серверу возобновить любые ранее запрошенные операции файловой системы, которые были прерваны обнаруженным условием сбоя. Компонент 150 извлечения состояния извлекает информацию о состоянии из хранилища 130 данных состояния и вызывает компонент 160 восстановления состояния для загрузки информации в возобновляющий сервер, чтобы возобновляющий сервер мог продолжить операции, запрошенные клиентом.

[0019] Компонент 160 восстановления состояния загружает извлеченную информацию о состоянии в возобновляющий сервер, чтобы возобновляющий сервер мог продолжить операции, ранее запрошенные клиентом. Восстановление также может включать в себя обновление любых уступающих блокировок и/или аренд, удерживаемых клиентом, для обеспечения, что другие клиенты соблюдают ранее запрошенные уровни доступа и/или исключительные права, предоставленные клиенту. Компонент 160 восстановления состояния позволяет новому серверу или узлу заменить неисправный сервер или узел, не возлагая большую нагрузку на клиента для восстановления информации о состоянии вследствие повторения прошлых операций. Клиенты, использующие протоколы типа SMB 2.0, уже знают, как использовать ключ возобновления для восстановления соединения с тем же сервером, и система состояния соединения позволяет заменяющему серверу заменить неисправный сервер прозрачно для клиента. Ключи возобновления также могут использоваться с NFS. В случае NFS понятие ключа возобновления является полностью непрозрачным для клиента. Клиент не обращается явно или не принимает участие в формировании, управлении и ассоциации ключа возобновления. Точнее, ключ возобновления является серверным понятием.

[0020] Компонент 170 принудительного применения сокрытия принудительно устанавливает период сокрытия на доступ к одному или нескольким файлам или другим ресурсам, который не дает второму клиенту вмешиваться в ресурсы способом, который конфликтовал бы с первым клиентом, возобновляющим соединение с возобновляющим сервером. Компонент 170 может автоматически выбирать период, считающийся достаточно длинным, чтобы избежать большинства конфликтующих операций (например, 15 или 30 секунд), но не настолько длинным, чтобы помешать другим клиентам обращаться к ресурсам, если первый клиент не возобновляет соединение. Этот период дает первому клиенту время на возобновление соединения, если того хочет первый клиент. В некоторых вариантах осуществления система позволяет администратору или другому пользователю конфигурировать длительность периода сокрытия для подстройки системы под специализированные цели. Система также может позволить отдельным клиентам запрашивать период сокрытия в качестве параметра к запросу создания/открытия или другому интерфейсу прикладного программирования (API). В ответ на попытки доступа к скрытому ресурсу компонент 170 может предоставить указание попытаться снова после конкретного периода или просто не выполнять запрос. После периода сокрытия, если никакой клиент не возобновил соединение, то сокрытие завершается, и запросы на доступ к ресурсу будут иметь успех, как обычно.

[0021] Компонент 180 приостановки ресурса позволяет приостановить и возобновить активный в настоящее время ресурс без события отработки отказа, чтобы позволить кластеру перейти на другой узел запланированным способом. Одним примером является балансировка нагрузки. Приостановка делает возможным сценарии, где подмножество состояния переносится на новый узел. Например, если один узел в кластере перегружен, то администратор может захотеть переместить половину клиентов узла на новый узел. Приостановка делает возможным сбор состояния открытых дескрипторов, которые перемещаются, и позволяет клиенту подключиться к новому узлу в виде продолжения того же открытого дескриптора (например, без восстановления состояния сервера). В качестве другого примера SMB поддерживает сценарии кластеризации, в которых типичные узлы вводятся в кластер и могут использоваться взаимозаменяемо для обслуживания запросов клиентов. Иногда существует причина вывести из эксплуатации конкретный узел, например для обслуживания, и желательно аккуратно приостановить текущий узел, активизировать новый узел, дезактивировать старый узел, а затем выполнить любое техническое обслуживание на дезактивированном узле. Это может оказать нежелательное влияние на клиентов, но с использованием описанных в этом документе методик система 100 может организованно приостановить узел и позволить клиентам эффективно возобновить операции с новым узлом.

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

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

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

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

[0026] Продолжая на этапе 220, система определяет идентификатор, который идентифицирует клиентский сеанс, связанный с запросом. Идентификатор в некоторых случаях является ключом возобновления, который клиент предоставляет для долговременных дескрипторов, которые позволяют возобновление сеансов, которые отключились по различным причинам. Запрос доступа может включать в себя один или несколько параметров в четко определенных местоположениях в протоколе, чтобы система могла извлечь ключ путем считывания подходящего местоположения в запросе. В качестве альтернативы или дополнительно сервер может включать в себя автоматизированный процесс для определения идентификатора, который не привлекает информацию, явно предоставленную клиентом. Например, сервер может идентифицировать клиента по IP-адресу (Интернет-протокол) или другим подразумеваемым данным, которые указывают серверу, что клиентское соединение соотносится с предыдущим сеансом.

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

[0028] Продолжая на этапе 240, система принимает файловую операцию от клиента, который запрашивает доступ к файлу, доступному посредством сервера. Файловая операция может быть запросом на открытие файла, закрытие файла, считывание файла, запись файла, печать на совместно используемом принтере или другими операциями файловой системы. Принятая операция привлекает некоторое количество информации о состоянии, создаваемой на сервере. Например, если клиент открывает дескриптор к файлу, то сервер отслеживает тот дескриптор для управления другими запросами клиента, связанными с файлом, и управления временем существования и/или очищающей обработкой для дескриптора.

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

[0030] Продолжая на этапе 260, система выполняет запрошенную файловую операцию. Операция может открывать файл, считывать содержимое файла, записывать данные в файл, изменять права доступа к файлу или может быть любой другой операцией файловой системы. Результат операции может изменить состояние, сохраненное сервером. Например, если клиент пытается закрыть дескриптор, и сервер успешно закрывает дескриптор, то состояние сервера будет обновлено для удаления дескриптора из списка дескрипторов, отслеживаемых сервером.

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

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

[0033] Фиг.3 - логическая блок-схема, которая иллюстрирует обработку в системе состояния соединения для возобновления соединения после отработки отказа в одном варианте осуществления. Начиная на этапе 310, система принимает от клиента запрос на открытие удаленного ресурса, сохраненного на сервере. Запрос доступа может включать в себя один или несколько параметров, включающих в себя ключ возобновления, используемый для идентификации сеанса на нескольких возможных соединениях, если соединение терпит неудачу. В отличие от запроса доступа к ресурсу, рассмотренного со ссылкой на фиг.2, этот запрос является запросом для повторного подключения к ранее подключенному сеансу. Клиент предоставляет такой же ключ возобновления, как предоставлялся изначально, чтобы сервер мог сопоставить текущий запрос сеанса с предыдущим сеансом.

[0034] Продолжая на этапе 320, система определяет идентификатор сеанса, который идентифицирует клиентский сеанс, связанный с запросом. Идентификатор в некоторых случаях является ключом возобновления SMB 2, который клиент предоставляет для долговременных дескрипторов, которые позволяют возобновление сеансов, которые отключились по различным причинам. Запрос доступа может включать в себя один или несколько параметров в четко определенных местоположениях в протоколе, чтобы система могла извлечь ключ путем считывания подходящего местоположения в запросе. В иных случаях сервер может определять идентификатор автоматически на основе информации о клиенте.

[0035] Продолжая на этапе 330, система ищет принятый идентификатор сеанса в хранилище состояний, чтобы идентифицировать запись возобновления, ассоциированную с тем идентификатором сеанса. Любой предыдущий сервер, взаимодействующий с клиентом с использованием возобновляемого сеанса, сохраняет информацию о состоянии на постоянной основе посредством взаимодействия с клиентом. Когда клиент пытается восстановить соединение, информация о состоянии доступна отказоустойчивому серверу, подменяющему исходный сервер. Информация о состоянии может храниться внешне для исходного сервера, так что информация доступна после сбоя исходного сервера.

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

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

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

[0039] Фиг.4 - блок-схема, которая иллюстрирует операционную среду системы состояния соединения в одном варианте осуществления. Среда включает в себя одну или несколько служб или приложений операционной системы, которые взаимодействуют с файловой системой. Например, MICROSOFT™ WINDOWS™ включает в себя серверную службу 420, известную как SRV, и службу 410 сетевой файловой системы, известную как NFS. Служба 410 сетевой файловой системы и серверная служба 420 предоставляют доступ к совместно используемым между компьютерными системами ресурсам, например файлам и принтерам. Серверная служба 420 использует протокол SMB, характерный для сетей WINDOWS™, тогда как служба 410 сетевой файловой системы предоставляет доступ к системам на основе Unix, которые в большинстве случаев используют NFS. Независимо от протокола фильтр 430 ключа возобновления собирает файловые операции и сохраняет в удаленном хранилище данных информацию о состоянии для возобновления операций. Операции проходят на уровне 440 файловой системы (например, NTFS или другой файловой системы) и оказывают воздействие на один или несколько файлов 450 данных пользователя. Между тем фильтр 430 ключа возобновления записывает информацию о состоянии в файл 460 журнала или другое хранилище данных, к которому может обратиться другой сервер для извлечения информации о состоянии и возобновления соединения с клиентом. Система может работать независимо от конкретного протокола или участвующей файловой системы, и различные компоненты могут обновляться для сохранения их конкретной информации о состоянии в хранилище данных состояния.

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

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

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

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

Похожие патенты RU2595482C2

название год авторы номер документа
ПРОЗРАЧНОЕ ВОССТАНОВЛЕНИЕ ПОСЛЕ ОТКАЗА 2012
  • Джордж Мэтью
  • Крус Дэвид М.
  • Пинкертон Джеймс Т.
  • Баттепати Рупеш К.
  • Джолли Том
  • Суон Пол Р.
  • Шан Миндун
  • Ловинджер Дэниел Эдвард
RU2595903C2
БЕЗОПАСНЫЙ ДОСТУП К ДАННЫМ ПОСЛЕ СБОЯ ХРАНИЛИЩА 2015
  • Крус Дэвид
  • Петтер Владимир
  • Копполу Локеш Сринивас
  • Дион Дэвид
  • Джордж Мэтью
RU2683167C2
SMB2-МАСШТАБИРОВАНИЕ 2012
  • Крус Дэвид М.
  • Ловинджер Дэниел Э.
  • Джолли Томас И.
  • Пинкертон Джеймс Т.
  • Джордж Мэтью
  • Баттепати Рупеш К.
  • Шан Миндун
RU2613040C2
ФАЙЛОВАЯ СЛУЖБА, ИСПОЛЬЗУЮЩАЯ ИНТЕРФЕЙС СОВМЕСТНОГО ФАЙЛОВОГО ДОСТУПА И ПЕРЕДАЧИ СОСТОЯНИЯ ПРЕДСТАВЛЕНИЯ 2015
  • Колдер Брэдли Джин
  • Эдвардс Эндрю Джеймс
  • Аройя Исхаи Бен
  • Гебель Дэвид Аллен
  • У Цзешен
  • Харидас Джайден
  • Гангули Шувабрата
  • Хэндел Мэттью Дуглас
  • Дэмир Озан
  • Ганем Жан
RU2686594C2
ОБЕСПЕЧЕНИЕ СЛУЖБЫ-СВИДЕТЕЛЯ 2012
  • Прашантх Прахалад
  • Джордж Мэтью
  • Крус Дэвид М.
  • Пинкертон Джеймс Т.
  • Джолли Томас И.
RU2601863C2
АРЕНДА КАТАЛОГА 2011
  • Крус Дэвид Мэттью
  • Джордж Мэтью
  • Хавевала Сарош Сирус
  • Оллред Кристиан Грегори
  • Кристиансен Нил Роберт
RU2596986C2
СПОСОБ И СИСТЕМА ДЛЯ ТРАНЗАКЦИОННЫХ ФАЙЛОВЫХ ОПЕРАЦИЙ ПО СЕТИ 2004
  • Мадхаварапу Прадеп Джнана
  • Пардикар Шишир П.
  • Раман Балан Сетху
  • Верма Сурендра
  • Карджилл Джон
  • Лакутюр Джейкоб
RU2380749C2
МНОГОКАНАЛЬНЫЕ СОЕДИНЕНИЯ В СЕАНСАХ ФАЙЛОВОЙ СИСТЕМЫ 2011
  • Чжу Цибо
  • Крус Дэвид М.
  • Джордж Мэтью
  • Шан Миндун
RU2595752C2
СПОСОБЫ И УСТРОЙСТВО ДЛЯ КРУПНОМАСШТАБНОГО РАСПРОСТРАНЕНИЯ ЭЛЕКТРОННЫХ КЛИЕНТОВ ДОСТУПА 2013
  • Хаггерти Дэвид
  • Хок Джерролд
  • Дзуанг Бен
  • Ли Ли
  • Матиас Арун
  • Маклафлин Кевин
  • Нарасимхан Авинаш
  • Шарп Крис
  • Ваид Юсуф
  • Ян Сянин
RU2595904C2
АППАРАТНО-ВЫЧИСЛИТЕЛЬНЫЙ КОМПЛЕКС С ПОВЫШЕННЫМИ НАДЕЖНОСТЬЮ И БЕЗОПАСНОСТЬЮ В СРЕДЕ ОБЛАЧНЫХ ВЫЧИСЛЕНИЙ 2013
  • Гаврилов Дмитрий Александрович
  • Щелкунов Николай Николаевич
RU2557476C2

Иллюстрации к изобретению RU 2 595 482 C2

Реферат патента 2016 года ОБЕСПЕЧЕНИЕ ПРОЗРАЧНОЙ ОТРАБОТКИ ОТКАЗА В ФАЙЛОВОЙ СИСТЕМЕ

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

Формула изобретения RU 2 595 482 C2

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

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

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

4. Способ по п. 1, в котором сервер с сетевой файловой системой (NFS) определяет упомянутый идентификатор автоматически без приема ключа возобновления от первого клиента.

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

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

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

8. Способ по п. 1, в котором выполнение запрошенной файловой операции изменяет состояние, сохраненное сервером, при этом при обновлении информации о состоянии возобновления фиксируют это измененное состояние.

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

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

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

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

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

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

15. Система по п. 10, в которой условие, обнаруживаемое компонентом обнаружения возобновления, соответствует тому, что первый клиент соединяется с идентификатором сеанса, прежде сохраненным в хранилище данных состояния.

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

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

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

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

20. Машиночитаемый носитель информации по п. 18, при этом упомянутый идентификатор является ключом возобновления блока сообщений сервера (SMB).

Документы, цитированные в отчете о поиске Патент 2016 года RU2595482C2

Пресс для выдавливания из деревянных дисков заготовок для ниточных катушек 1923
  • Григорьев П.Н.
SU2007A1
Способ обработки целлюлозных материалов, с целью тонкого измельчения или переведения в коллоидальный раствор 1923
  • Петров Г.С.
SU2005A1
US 7475142 B2, 06.01.2009.

RU 2 595 482 C2

Авторы

Суон Пол Р.

Джордж Мэтью

Крус Дэвид М.

Баттепати Рупеш К.

Джонсон Майкл К.

Даты

2016-08-27Публикация

2011-12-06Подача