SMB2-МАСШТАБИРОВАНИЕ
SMB2-SCALING

Уровень техники
[0001] Кластеры серверов обычно используются, чтобы обеспечивать отказоустойчивость и высокий уровень доступности информации клиентам. Традиционно, кластерные окружения разрабатываются согласно клиент-серверному протоколу, в котором клиент соединяется с сервером для того, чтобы осуществлять доступ к ресурсам, доступным серверу. В традиционных кластерных окружениях различные серверы, которые составляют окружение, могут осуществлять доступ к различным файловым системам. Невозможность доступа к общей файловой системе ограничивает функциональность традиционного кластера файловой системы.
[0002] В отношении этих и других соображений были выполнены эти варианты осуществления. Также, хотя обсуждаются относительно специфические проблемы, следует понимать, что варианты осуществления не должны быть ограничены решением специфических проблем, идентифицированных на уровне техники.
Сущность изобретения
[0003] Данное краткое изложение сущности изобретения предусмотрено для того, чтобы в упрощенной форме представить подборку идей, которые дополнительно описываются ниже в подробном описании. Это краткое изложение сущности изобретения не предназначено ни для того, чтобы идентифицировать ключевые признаки или важнейшие признаки заявляемого изобретения, ни для того, чтобы использоваться в качестве помощи при определении объема заявляемого изобретения.
[0004] Варианты осуществления согласно настоящему раскрытию предоставляют масштабируемое кластерное окружение, где файловая система может быть логически кластеризована так, что каждый узел в кластере имеет доступ ко всем ресурсам, которые находятся в кластере. Поскольку файловая система доступна каждому узлу в кластерном окружении, клиент может осуществлять доступ к ресурсам кластера, несмотря на то, с каким узлом клиент соединяется. Такое окружение обеспечивает клиента вариантами при соединении с кластерным окружением. Клиент может максимально использовать гибкость узла масштабируемого кластера, чтобы эффективно соединяться с кластером серверов.
[0005] В других вариантах осуществления, в то время как масштабируемое кластерное окружение предоставляет возможность клиентам осуществлять доступ к ресурсам по всему кластеру, независимо от фактического узла, с которым клиент устанавливает соединение, после того как клиент устанавливает соединение с узлом, он пытается поддерживать это соединение с тем же узлом для того, чтобы уменьшать объем информации о состоянии, которая передается между узлами кластерного окружения.
[0006] Однако, в некоторых случаях клиент может не иметь возможности поддерживать соединение с одним и тем же узлом, а требуется соединяться с другим узлом в масштабируемом кластерном окружении. В дополнительных окружениях масштабируемое кластерное окружение обеспечивает хранение и поддержку информации о сеансе, информации о состоянии и/или обработке для того, чтобы облегчать перемещение клиента от одного узла к другому. Узлы кластера имеют возможность передавать такую информацию друг другу, чтобы обеспечивать перемещение клиентских соединений.
[0007] Варианты осуществления могут быть реализованы как компьютерный процесс, вычислительная система или как промышленное изделие, такое как компьютерный программный продукт или машиночитаемый носитель информации. Компьютерный программный продукт может быть компьютерным носителем информации, читаемым компьютерной системой и кодирующим компьютерную программу инструкций для выполнения компьютерного процесса. Компьютерный программный продукт может также быть распространяющимся сигналом на несущей частоте, читаемым вычислительной системой и кодирующим компьютерную программу инструкций для выполнения компьютерного процесса.
Краткое описание чертежей
[0008] Неограничивающие и неисключительные варианты осуществления описываются со ссылкой на следующие чертежи.
[0009] Фиг.1 иллюстрирует систему, которая может быть использована, чтобы реализовывать варианты осуществления, описанные в данном документе.
[0010] Фиг.2 является вариантом осуществления способа, который клиент может выполнять при соединении с кластером серверов.
[0011] Фиг.3 является вариантом осуществления способа, который клиент может выполнять при переносе соединений между узлами в кластерном окружении.
[0012] Фиг.4 является вариантом осуществления способа, выполняемого узлом в кластерном окружении, чтобы поддерживать и передавать устойчивые дескрипторы.
[0013] Фиг.5 является вариантом осуществления способа, выполняемого узлом в кластерном окружении, чтобы запрашивать право владения ранее установленным сеансом.
[0014] Фиг.6 иллюстрирует блок-схему вычислительного окружения, подходящего для реализации вариантов осуществления.
Подробное описание изобретения
[0015] Различные варианты осуществления описываются более подробно ниже со ссылкой на сопровождающие чертежи, которые формируют часть этого описания и которые показывают конкретные примерные варианты осуществления. Однако варианты осуществления могут быть реализованы во многих различных формах и не должны истолковываться как ограниченные вариантами осуществления, изложенными в данном документе; скорее, эти варианты осуществления предоставляются так, что это раскрытие будет полным и законченным и будет полностью передавать объем вариантов осуществления специалистам в данной области техники. Варианты осуществления могут быть применены на практике как способы, системы или устройства. Соответственно, варианты осуществления могут принимать форму аппаратной реализации, полностью программной реализации или реализации, комбинирующей программные и аппаратные аспекты. Последующее подробное описание, следовательно, не должно восприниматься в ограничивающем смысле.
[0016] Фиг.1 иллюстрирует систему 100, которая может быть использована, чтобы реализовывать некоторые из вариантов осуществления, раскрытых в данном документе. Система 106 может быть примерной кластерной системой, которая содержит один или более узлов. Примером кластерной системы является кластер серверов с одним или более серверами, как иллюстрировано на фиг.1. Система 100 включает в себя клиентов 102 и 104 и кластер 106 серверов. Клиенты 102 и 104 связываются с кластером 106 серверов через сеть 108. В вариантах осуществления сеть 108 может быть Интернетом, WAN, LAN или любым другим типом сети, известным в области техники. Кластер 106 серверов хранит ресурсы, к которым осуществляют доступ приложения на клиентах 102 и 104. Клиенты 102 и 104 устанавливают сеансы с кластером 106, чтобы осуществлять доступ к ресурсам на кластере 106. Хотя на фиг.1 только клиенты 102 и 104 показаны как связывающиеся с кластером 106, в других вариантах осуществления может быть больше двух клиентов, осуществляющих доступ к информации из кластера 106 серверов. В вариантах осуществления клиенты 102 и 104 могут осуществлять доступ или связываться с кластером 106 серверов по протоколу SMB2.
[0017] Как показано на фиг.1, кластер 106 серверов включает в себя один или более узлов, например, серверы 106A, 106B и 106C, которые обеспечивают как высокую доступность, так и резервирование информации, сохраненной в кластере 106. Один или более узлов кластера 106 серверов могут связываться друг с другом через сеть, такую как Интернет, WAN, LAN, или любой другой тип сети, известный в области техники. В вариантах осуществления кластер 106 может иметь файловую систему, базу данных или другую информацию, к которой осуществляют доступ клиенты 102 и 104. Хотя три сервера показаны на фиг.1, в других вариантах осуществления кластер 106 может включать в себя более трех серверов или менее трех серверов.
[0018] В вариантах осуществления кластер 106 серверов является масштабируемым кластером серверов. В вариантах осуществления масштабируемый кластер серверов включает в себя файловую систему 108, которая доступна каждому узлу в кластере серверов (например, серверам 106A, 106B и 106C). В качестве примера, файловая система масштабируемого кластера логически кластеризована так, что один или более дисков, которые составляют файловые системы, являются видимыми с каждого сервера в кластере серверов. В таких вариантах осуществления масштабируемый кластер серверов предоставляет возможность совместного использования ресурсов между узлами в кластере. В одном таком варианте осуществления кластер 106 серверов включает в себя центральный репозиторий данных, который включает в себя одно или более хранилищ данных, к которым каждый сервер в кластере 106 серверов имеет доступ. В таком варианте осуществления хранение ресурсов в центральном репозитории предоставляет возможность каждому серверу осуществлять доступ к файловой системе. В другом варианте осуществления совместно используемая файловая система может быть предоставлена посредством репликации ресурсов между локальными файловыми системами каждого сервера в кластере 106 серверов. В таких вариантах осуществления любой способ репликации данных, известный в области техники, может быть применен, чтобы реплицировать ресурсы кластера между серверами, которые составляют кластер.
[0019] Включение логически кластеризованной файловой системы в масштабируемый кластер серверов, такой как кластер 106 серверов, предоставляет дополнительную функциональность, которая не доступна в традиционном кластере серверов. В одном варианте осуществления логически кластеризованная файловая система гарантирует, что каждый узел, который является частью кластерного окружения, может осуществлять доступ к любому ресурсу в окружении. В вариантах осуществления ресурс может быть приложением, файлом, объектом, данными или любым другим типом ресурса, предусмотренным в кластерном окружении. Это предоставляет возможность клиенту осуществлять доступ и/или иначе манипулировать любым ресурсом в файловой системе, независимо от того, с каким узлом (например, серверами 106A, 106B и/или 106C) клиент устанавливает соединение. В вариантах осуществления файловый сервер 106 может регистрировать каждый узел под общим именем с помощью механизма разрешения имен. Неограничивающим примером механизма разрешения имен является система доменных имен (DNS). Например, кластер 106 серверов может регистрировать серверы 106A, 106B и 106C под общим именем в DNS-сервере (не показан на фиг.1). DNS-сервер может быть частью кластера 106 серверов, или он может быть внешним по отношению к кластеру 106 серверов.
[0020] Когда клиент пытается осуществлять доступ к серверу в кластере 106 серверов, клиент может осуществлять доступ к механизму разрешения имен, чтобы получать адрес сервера. Например, клиент может контактировать с DNS-сервером, чтобы получать адрес для сервера в кластере 106 серверов. Поскольку серверная система зарегистрировала все серверы под общим именем, DNS-сервер может возвращать список адресов для каждого сервера (например, серверы 106A, 106B и 106C), которые составляют кластер 106 серверов. В вариантах осуществления адрес может быть IP-адресом, URL, URI или любым другим типом адреса, известным в области техники. Поскольку возвращается множество адресов, клиенту предоставляется выбор, с каким сервером соединяться. В вариантах осуществления клиент может выбирать соединение по первому адресу в списке, который он принимает от сервера. В некоторых случаях у клиента может возникнуть проблема соединения с первым сервером, идентифицированным посредством первого адреса (например, сервер 106A). Поскольку каждый сервер в кластере 106 серверов способен обеспечивать клиента аналогичной функциональностью, клиент может решить присоединиться к другому серверу в кластере 106 серверов. Если клиент не может успешно соединиться с первым сервером, после ожидания предварительно определенного периода времени, клиент может выдавать один или более запросов на соединение с подмножеством адресов, которые он принял от механизма разрешения имен (например, сервер 106B и сервер 106C), и выбирать соединение, которое удается. Один или более запросов могут быть выполнены параллельно, в таком случае клиент может соединяться с первым сервером, с которым установлено успешное соединение.
[0021] Хотя конкретное упорядочивание списка адресов было предоставлено выше (например, сервер 106A в качестве первого перечисленного адреса), специалист в данной области техники поймет, что список адресов может быть составлен в любом порядке. В вариантах осуществления карусельный способ, который может быть использован посредством механизма разрешения имен, такой как карусель DNS, может быть привлечен, чтобы обеспечивать балансировку нагрузки в сети. Поскольку множество клиентов (например, клиент 102 и 104) могут одновременно соединяться с кластером 106 серверов, карусельный способ гарантирует, что первый адрес, предоставляемый различным клиентам, изменяется. Таким образом, первоначальные запросы соединения распределяются между всеми узлами в кластерном окружении. Кроме того, клиенты могут случайным образом выбирать подмножество адресов, которое он выдает при дополнительном запросе корректировки после неудачной попытки соединения с первым сервером, тем самым предоставляя дополнительный механизм балансировки нагрузки.
[0022] В вариантах осуществления, после того как клиент соединился с сервером в кластере 106 серверов, клиент может гарантировать, что он остается соединенным с одним и тем же сервером. Хотя каждый сервер (например, серверы 106A, 106B и 106C) совместно использует логически кластеризованную файловую систему, состояние сеанса клиента может управляться посредством сервера, с которым он соединен. Таким образом, для того чтобы минимизировать трафик для синхронизации состояний между серверами, клиент может гарантировать, что он остается соединенным с одним и тем же сервером. Например, если клиент 102 соединяется с сервером 106A, клиент 102 может пытаться гарантировать, что все его соединения и использование ресурсов (например, открытые файлы) находятся на сервере 106A. В таких вариантах осуществления, если клиент 102 теряет свое соединение с сервером 106A, он будет пытаться повторно соединяться с сервером 106A вместо серверов 106B или 106C, когда он повторно соединяется с кластером 106 серверов, тем самым уменьшая необходимость передачи состояния сеанса между различными серверами в кластере 106 серверов. В вариантах осуществления, поскольку клиент пытается повторно соединиться с одним и тем же сервером при потере соединения, сервер может сохранять состояние клиентского сеанса, даже после того как он теряет связь с клиентом. Например, если клиент 102 теряет соединение с сервером 106A, сервер 106A может сохранять состояние сеанса для клиента 102. Когда клиент 102 повторно устанавливает свое соединение, устойчивость состояния соединения предоставляет возможность клиенту 102 повторно использовать свою информацию о сеансе (например, информацию о состоянии) при повторном соединении с сервером 106A.
[0023] Однако, в некоторых обстоятельствах, может быть неэффективным или невозможным для клиента поддерживать свое соединение с одним сервером в кластере 106 серверов. Например, отказ серверного узла, потерянная возможность подключения к данному серверу или административное действие, такое как балансировка нагрузки, установка исправлений сервера или любой другой тип административного действия, могут делать невозможным для клиента повторное соединение с тем же узлом. Чтобы облегчать изменение узлов, кластер 106 серверов может поддерживать устойчивые дескрипторы ресурсов, к которым клиент осуществляет доступ. Устойчивые дескрипторы предоставляют возможность клиенту вновь получать дескрипторы, которые он установил на первом узле, при соединении со вторым узлом. Например, если клиент 102 изменяет свое первоначальное соединение с сервера 106A на сервер 106C, дескрипторы, использованные клиентом 102 на сервере 106A, могут быть перенесены на сервер 106C.
[0024] В вариантах осуществления кластер 106 серверов может применять устойчивое хранение состояния, чтобы предоставлять устойчивые дескрипторы. Примерным хранилищем устойчивого состояния является менеджер возобновления ключей, который может присутствовать в одном или более узлах кластера 106 серверов. Однако специалист в данной области техники поймет, что любой тип кэша или хранилища данных может быть использован кластером 106 серверов, чтобы обеспечивать устойчивые дескрипторы. В одном варианте осуществления кластер 106 серверов предоставляет централизованное хранилище устойчивого состояния. В таких вариантах осуществления один узел (например, сервер 106B) в кластере 106 серверов поддерживает устойчивое состояние открытых дескрипторов для клиентского сеанса. В таких вариантах осуществления, каждый раз, когда клиент переключается с одного узла на другой (например, переключается с сервера 106A на 106C), право владения дескрипторами, которые являются частью клиентского сеанса, может быть перенесено между узлами (например, право владения передается от сервера 106A к серверу 106C) посредством применения логики признания недействительности предыдущего сеанса, такой как способ признания недействительности, описанный в переуступленной заявителю по приоритетной заявке и находящейся одновременно с ней на рассмотрении патентной заявке США № 13/228732, озаглавленной "Clustered Client Failover" (номер в реестре поверенного № 14917.1840US01), поданной 9 сентября 2011 года, которая, таким образом, включена сюда по ссылке во всей своей полноте. В других вариантах осуществления право владения дескрипторами может быть передано явно клиентом на основе от дескриптора к дескриптору.
[0025] В другом варианте осуществления хранилище устойчивого состояния может быть распределенным хранилищем состояния. В таких вариантах осуществления хранилище устойчивого состояния может быть распределено между узлами кластера 106 серверов. В таком варианте осуществления каждый узел может хранить хранилище устойчивого состояния. Алгоритм внутрикластерной репликации состояния может быть использован, чтобы реплицировать состояние между распределенным хранилищем состояния. В таких вариантах осуществления кластер 106 серверов поддерживает информацию о состоянии в случаях, когда подмножество узлов отказывает.
[0026] Как обсуждалось, каждый узел масштабируемого кластера соединяется с логически кластеризованной файловой системой. Для того чтобы избегать конфликтов, когда множество клиентов осуществляют доступ к одному и тому же ресурсу, кластер 106 серверов может выполнять распределенное разрешение состояния, предоставляя возможность для одного или более узлов (например, 106A, 106B и/или 106C) получать уступающие блокировки или аренду ресурса. В вариантах осуществления совместно используемые считыватели могут поддерживаться с помощью RH-уступающих блокировок, которые предоставляют возможность множественным считывателям получать доступ к одному и тому же файлу на множестве узлов кластера. В дополнительных вариантах осуществления блокировки записи могут также поддерживаться кластером 106 серверов.
[0027] Как описано в данном документе, специалист в данной области техники поймет, что масштабируемые кластеры серверов предоставляют дополнительную функциональность, которая недоступна в немасштабируемом кластере серверов. Хотя конкретные примеры дополнительной функциональности были предоставлены относительно фиг.1, специалист в данной области техники поймет, что они являются неограничивающими примерами преимуществ и функциональности, предоставляемых масштабируемым кластером серверов.
[0028] Фиг.2 является вариантом осуществления способа 200, который клиент может выполнять при соединении с кластерным окружением. Например, клиент, такой как клиент 102 (фиг.1), может применять способ 200, чтобы определять, с каким узлом (например, 106A, 106B и/или 106C) устанавливать соединение при подключении к кластерному окружению. Процесс начинается на этапе 202, когда клиент принимает список адресов от механизма разрешения имен, такого как DNS-сервер. Как обсуждалось относительно фиг.1, в вариантах осуществления каждый узел в кластерном окружении может иметь возможность предоставлять аналогичную функциональность клиенту. Таким образом, клиент может успешно выполнять желаемую операцию или осуществлять доступ к желаемому ресурсу в кластерном окружении, независимо от того, с каким узлом клиент соединяется.
[0029] Процесс продолжается на этапе 204, где клиент пытается соединиться с первым узлом, идентифицированным посредством первого адреса в списке адресов, принятом на этапе 202. Клиент может пытаться соединиться с первым узлом, отправляя запрос первоначального соединения узлу, идентифицированному посредством первого адреса на этапе 204. Однако специалист в данной области техники поймет, что может быть любой способ попытки соединения с узлом (например, сервером) на этапе 203. В вариантах осуществления клиент может ожидать в течение предварительно определенного периода времени, как указано посредством этапа 206, чтобы первая попытка была успешной. Однако, поскольку любой узел в кластерном окружении способен осуществлять доступ к любому ресурсу в пользу клиента, клиент может выдавать запросы попыток соединения с другими кластерами серверов, если первая попытка заканчивается неудачей или занимает длительное время. В то время как операция 206 описывает ожидание клиентом в течение предварительно определенного периода времени, время может также динамически определяться клиентом.
[0030] В другом варианте осуществления первая попытка соединения с сервером может быть успешной, однако узел может не иметь доступа к ресурсам кластерного окружения. Например, список адресов может содержать некорректный адрес или адрес узла, который больше не является частью кластерного окружения. В дополнительном варианте осуществления ошибка может запрещать узлу доступ к ресурсам кластерного окружения. Клиент может использовать необходимую логику, чтобы идентифицировать такие ситуации. В таких ситуациях клиент может интерпретировать успешную попытку как неудачную и продолжать выполнять способ 200.
[0031] При неудаче первой попытки или после истечения периода времени процесс продолжается на этапе 208, где клиент случайным образом выбирает подмножество адресов из списка адресов. В вариантах осуществления случайный выбор подмножества адресов предоставляет преимущества балансировки нагрузки кластерному окружению, которое может иметь множество клиентов, пытающихся соединиться с его узлами в одно время. Если каждый клиент случайным образом выбирает подмножество узлов для соединения, более хороший баланс соединений может быть установлен в кластерном окружении. В других вариантах осуществления, однако, клиент может не выбирать случайное подмножество, а может выбирать адреса в порядке, в котором они появляются в списке. В дополнительных вариантах осуществления вместо выбора подмножества списка адресов на этапе 208 клиент может выбирать все адреса в списке.
[0032] Процесс продолжается на этапе 210, где клиент пытается соединиться с одним или более узлами, идентифицированными посредством адресов в выбранном подмножестве. В одном варианте осуществления клиент может пытаться соединиться с множеством узлов параллельно на этапе 210, тем самым ускоряя процесс соединения. В вариантах осуществления клиент может отправлять один или более дополнительных запросов соединения различным узлам на этапе 210, однако, как описано относительно этапа 204, любой способ попытки соединения может быть использован с вариантами осуществления, описанными в данном документе.
[0033] Процесс продолжается на этапе 212, где клиент принимает указание успешного соединения. В вариантах осуществления указание может быть сообщением, которое клиент принимает от узла, указывающим, что клиент имеет возможность соединиться с узлом. В вариантах осуществления, если клиент выполняет параллельные попытки на этапе 210, клиент может решить присоединиться к первому узлу, который успешно отвечает клиенту на этапе 212. В других вариантах осуществления клиент может принимать множественные указания успешных попыток от различных узлов в кластерном окружении. В таких вариантах осуществления клиент может выбирать, с каким узлом соединяться. В дополнительных вариантах осуществления указания могут предоставлять характеристики производительности узла, такие как текущая нагрузка узла. Клиент может использовать такую информацию, чтобы определять, с каким узлом устанавливать соединение. Например, клиент может выбирать соединение с узлом с более легкой нагрузкой, конкретной конфигурацией аппаратных средств и т.д. После того как клиент выбрал узел, процесс переходит к этапу 214, и клиент соединяется с узлом.
[0034] После того как клиент соединяется с узлом, клиент устанавливает сеанс с узлом и способен осуществлять доступ к ресурсам в кластерном окружении. Как описано относительно фиг.1, после того как клиент устанавливает соединение с узлом, клиент пытается поддерживать свое соединение с одним и тем же узлом. Это уменьшает передачу информации о состоянии, которая может иметь место, когда клиент переносит соединения с одного узла на другой. В таких вариантах осуществления, если клиент отсоединяется от узла, например, вследствие ошибки, такой как ошибка сети или авария клиента, клиент может пытаться повторно соединиться с тем же самым узлом после восстановления от ошибки.
[0035] Однако, не всегда может быть возможно для клиента повторно соединяться с тем же самым узлом. Например, если узел отказывает, если клиент теряет связь с узлом или если узел недоступен в административных целях (например, вследствие требований балансировки нагрузки, ремонта узла или т.п.), клиент может повторно устанавливать свое соединение с кластерным окружением через другой узел. Фиг.3 является вариантом осуществления способа 300, который клиент может выполнять при переносе соединений между узлами в кластерном окружении.
[0036] Процесс начинается с этапа 302, где клиент определяет, что требуется соединение с новым узлом. Например, при потере соединения с узлом, вследствие отказа сети или узла, клиент может определять, что он не может повторно соединиться с тем же узлом в кластерном окружении. В другом варианте осуществления клиент может принимать информацию о производительности от узла. На основе информации о производительности клиент может решить перенести соединение на другой узел, который может предоставлять лучшее обслуживание клиенту. Например, клиент может принимать информацию, указывающую, что узел испытывает интенсивный трафик. В таких ситуациях клиенту может не требоваться повторно соединяться с другим узлом, но он может необязательно решить сделать это по причинам производительности. Аналогично, клиент может определять эту информацию у самого себя без приема информации о производительности от узла, например, наблюдая, сколько времени занимает у узла выполнение запроса.
[0037] В другом варианте осуществления узел может требовать, чтобы клиент переносил свое соединение на другой узел в кластере. Например, если планируется перевод узла в оффлайн-режим в целях установки исправлений или для балансировки нагрузки, узел может требовать, чтобы клиент переносил свое соединение на другой узел. В таких вариантах осуществления узел может передавать сообщение клиенту, которое указывает, что клиент должен перенести свое соединение. Варианты осуществления выполнения таких передач данных описываются в переуступленной и находящейся одновременно на рассмотрении патентной заявке, озаглавленной "Providing a Witness Service" (патентная заявка США порядковый № 13/074920), поданной 29 марта 2011 года, которая, таким образом, включена сюда по ссылке во всей своей полноте.
[0038] После определения, что требуется перенос соединения между узлами, процесс продолжается на этапе 304. На этапе 304 клиент пытается соединиться с другим узлом в кластерном окружении. Например, клиент может отправлять запрос соединения одному или более узлам в кластерном окружении. В вариантах осуществления клиент может соединяться со вторым узлом в кластерном окружении, выполняя все или подмножество этапов, описанных относительно способа 200. В другом варианте осуществления клиент может направляться, чтобы соединяться с конкретным узлом посредством кластерного окружения. При успешной попытке процесс продолжается на этапе 306, и клиент соединяется со вторым узлом в кластерном окружении.
[0039] Однако, поскольку клиент ранее установил сеанс, сеанс может быть перенесен на другой узел. На этапе 308 клиент отправляет запрос установки сеанса второму узлу. В вариантах осуществления запрос установки сеанса может быть сообщением, содержащим идентификатор сеанса, который идентифицирует клиентов, ранее установивших соединение. Как будет обсуждено дополнительно со ссылкой на фиг.5, в ответ на прием запроса установки сеанса второй узел может принимать право владения ранее установленным соединением. В то время как способ 300 описывает отправку запроса установки сеанса как отдельный этап, специалист в данной области техники поймет, что клиент может отправлять запрос установки сеанса или идентификатор сеанса с запросом на соединение со вторым узлом на этапе 304.
[0040] Имея теперь описанные способы, которые клиент может применять при соединении с масштабируемым кластерным окружением, настоящее раскрытие теперь будет описывать функциональность, которая может быть использована одним или более узлами в таком окружении. Фиг.4 является вариантом осуществления способа 400, выполняемого узлом в кластерном окружении, чтобы поддерживать и переносить устойчивые дескрипторы в кластерном серверном окружении. Например, способ 400 может выполняться посредством сервера, такого как серверы 106A, 106B и 106C, который является частью кластерного серверного окружения (например, кластера 106 серверов). Процесс начинается с этапа 402, где принимается запрос соединения от клиента, таким образом устанавливая соединение между узлом и клиентом. Первоначальное соединение указывает, что клиент ранее не устанавливал соединения с узлом или с другим узлом в кластерном окружении. В вариантах осуществления узел может определять, что он устанавливает соединение с клиентом, когда он не принимает запрос установки сеанса от клиента как часть клиентского запроса соединения или вскоре после установления соединения с клиентом.
[0041] Процесс продолжается на этапе 404, где узел создает сеанс с клиентом. На этапе 404 узел может назначать идентификатор сеанса сеансу. Идентификатор сеанса может быть глобально уникальным идентификатором (GUID) между всеми узлами в кластерном окружении. После создания сеанса узел может распределять ресурсы и/или выполнять операцию над ресурсами в интересах клиента. При этом может быть создана информация о сеансе, такая как, например, информация о состоянии. Узел может хранить информацию о сеансе. В дополнение к информации о состоянии узел может хранить один или более дескрипторов. Например, если клиент открывает файл, дескриптор файла может быть предоставлен клиенту. Узел может хранить дескрипторы вместе с или в дополнение к информации о сеансе.
[0042] Процесс продолжается на этапе 406, где узел теряет свое соединение с клиентом. Например, клиент может подвергаться ошибке (например, аварии или потере сетевого соединения). В предвидении того, что клиент может соединяться повторно, сервер будет поддерживать сеанс и/или информацию на этапе 408. Например, узел может записывать информацию о сеансе и/или состоянии в локальную память, централизованное устойчивое хранилище или в распределенное хранилище состояния. Как описано ранее, клиент будет пытаться поддерживать соединение с одним узлом. В вариантах осуществления, после того как клиент восстанавливается после ошибки, клиент может повторно соединяться с узлом. После повторного соединения узел может идентифицировать, что клиент имеет ранее установленное состояние, например, принимая идентификатор сеанса от клиента. В таких вариантах осуществления поддерживаемое состояние сеанса предоставляет возможность клиенту продолжать его ранее установленный сеанс.
[0043] Однако, в определенных обстоятельствах, клиент может не иметь возможности повторно соединяться с узлом. Вместо этого, клиент может повторно соединяться с другим узлом в кластерном окружении. В таких обстоятельствах процесс продолжается на этапе 410, где узел принимает запрос на передачу информации о сеансе от другого узла в кластерном окружении. В вариантах осуществления другой узел запрашивает право владения информацией о сеансе для того, чтобы повторно устанавливать сеанс для клиента, который теперь соединяется с узлом, запросившим право владения. Запрос права владения сеансом может включать в себя идентификатор сеанса, который узел, выполняющий способ 400, может использовать, чтобы идентифицировать ранее установленный сеанс, которым он владеет и/или поддерживает.
[0044] При приеме запроса права владения сеансом процесс продолжается на этапе 412, где узел гарантирует, что не существуют ожидающие выполнения операции ввода/вывода (I/O), выполняемые по ресурсам, ассоциированным с ранее установленным сеансом. В вариантах осуществления, если существуют ожидающие выполнения I/O-операции, узел ожидает завершения операций перед переходом к этапу 414. В других вариантах осуществления узел может отменять незаконченные I/O-операции по ресурсам сеанса на этапе 410. Узел, который может ожидать и/или отменять незаконченные I/O-операции, поддерживает целостность ресурса.
[0045] После того как узел гарантирует, что все I/O-операции завершены (или отменены), процесс продолжается на этапе 414. На этапе 414 узел признает недействительным предыдущий установленный сеанс. Признание недействительности сеанса может содержать закрытие любых открытых дескрипторов, которые являются частью сеанса. В других вариантах осуществления признание недействительным сеанса может включать в себя освобождение любых блокировок, которые могут быть на ресурсе. В вариантах осуществления признание недействительности сеанса может также включать в себя логику признания недействительности, описанную относительно фиг.1. Кроме того, в вариантах осуществления может выполняться один этап признания недействительности, в котором узел признает недействительными все дескрипторы и/или блокировки для ранее установленного сеанса, чтобы устранять необходимость для узла индивидуально признавать недействительными каждый дескриптор файла.
[0046] После того как ранее установленный сеанс признан недействительным, процесс продолжается на этапе 416, где узел передает право владения сеансом запрашивающему узлу. В вариантах осуществления передача права владения сеансом может включать в себя передачу права владения всех ассоциированных ресурсов, связанных с сеансом. Примерным ресурсом, который может быть передан на этапе 416, является дескриптор файла; однако, право владения другими ресурсами также может быть передано на этапе 416. В дополнительных вариантах осуществления передача права владения ресурсами, связанными с сеансом, может включать в себя передачу ресурса от одного узла другому. Для лучшей эффективности вся информация о сеансе может передаваться целиком на этапе 416, таким образом уменьшая число передач данных, требуемых между узлами.
[0047] Фиг.5 является вариантом осуществления способа 500, выполняемого узлом в кластерном окружении, чтобы запрашивать право владения ранее установленным сеансом. Например, способ 400 может выполняться посредством сервера, такого как серверы 106A, 106B и 106C, который является частью кластерного серверного окружения (например, кластера 106 серверов). Процесс начинается с этапа 502, где узел устанавливает соединение с клиентом. Например, узел может принимать запрос для запроса соединения от клиента на этапе 502. Узел может одобрять запрос соединения и соединяться с клиентом.
[0048] Процесс продолжается на этапе 504, где узел идентифицирует, что клиент ранее установил сеанс с другим узлом в кластерном окружении. В вариантах осуществления узел может принимать запрос установки сеанса от клиента. Запрос установки сеанса может быть принят с запросом соединения или после соединения с клиентом. В вариантах осуществления запрос установки соединения содержит идентификатор сеанса, который идентифицирует ранее установленное соединение.
[0049] Процесс продолжается на этапе 506, где узел отправляет запрос права владения второму узлу в кластерном окружении, который в настоящий момент владеет клиентским ранее установленным сеансом. Запрос права владения может содержать инструкции, чтобы признавать недействительными дескрипторы, ассоциированные с предыдущим сеансом, и передавать информацию о сеансе узлу. В вариантах осуществления запрос права владения может включать в себя запрос установки сеанса и/или id сеанса, принятый на этапе 504.
[0050] Процесс продолжается на этапе 508, где узел принимает информацию о сеансе и/или состоянии для ранее установленного сеанса. В вариантах осуществления информация о сеансе и/или состоянии может быть принята от второго узла, из центрального репозитория или из другого местоположения в кластерном окружении. В другом варианте осуществления, вместо приема информации о сеансе и/или состоянии на этапе 508, узлу может быть разрешен доступ к информации о сеансе и/или состоянии, которая находится в централизованном репозитории на этапе 508. Процесс затем продолжается на этапе 510, где узел использует принятую, и/или к которой осуществлен доступ, информацию о сеансе или состоянии, чтобы повторно устанавливать клиентский сеанс и предоставлять возможность клиенту продолжать осуществлять доступ к ресурсам в кластерном окружении.
[0051] Способы 300-500 являются просто некоторыми примерами рабочих процессов, которые могут быть выполнены в соответствии с вариантами осуществления. Варианты осуществления не ограничиваются конкретным описанием, предоставленным выше относительно фиг.3-5, и могут включать в себя дополнительные этапы. Дополнительно, показанные рабочие этапы могут быть объединены в другие этапы и/или переупорядочены. Дополнительно, меньшее количество или дополнительные этапы могут быть использованы, применены со способами, описанными на фиг.3-5.
[0052] Фиг.6 иллюстрирует систему 600 компьютера общего назначения, которая может быть использована, чтобы реализовывать варианты осуществления, описанные в данном документе. Компьютерная система 600 является только одним примером вычислительного окружения и не имеет намерением накладывать какое-либо ограничение в отношении рамок использования или функциональности компьютерной и сетевой архитектур. Компьютерная система 600 не должна интерпретироваться в качестве имеющей какую бы то ни было зависимость или требование, относящееся к любому одному или сочетанию компонентов, проиллюстрированных в примерной компьютерной системе 600. В вариантах осуществления система 600 может быть использована в качестве клиентов и/или серверов, описанных выше относительно фиг.1.
[0053] В своей наиболее обобщенной конфигурации система 600 типично включает в себя по меньшей мере один процессор 602 и память 604. В зависимости от точной конфигурации и типа вычислительного устройства память 604 может быть энергозависимой (такой как RAM), энергонезависимой (такой как ROM, флеш-память и т.д.) или некоторой комбинацией. Эта наиболее обобщенная конфигурация иллюстрирована на фиг.6 прерывистой линией 606. Системная память 604 хранит инструкции 620, такие как инструкции, чтобы соединяться с масштабируемым кластерным окружением, способы, раскрытые в данном документе, и данные 622, такие как информация о состоянии сеанса, которая может храниться в файловой системе хранения с помощью хранилища, такого как хранилище 608.
[0054] Термин "машиночитаемый носитель" при использовании в данном документе может включать в себя компьютерные носители данных. Компьютерные носители данных могут включать в себя как энергозависимые, так и энергонезависимые, как съемные, так и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Системная память 604, съемное запоминающее устройство и несъемное запоминающее устройство 608 являются примерами компьютерных носителей данных (т.е. запоминающего устройства). Компьютерные носители данных могут включать в себя, но не только, RAM, ROM, электрически-стираемое постоянное запоминающее устройство (EEPROM), флэш-память или другую технологию памяти, CD-ROM, цифровые многофункциональные диски (DVD) или другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, накопитель на магнитных дисках или другие магнитные запоминающие устройства, или любой другой носитель, который может быть использован, чтобы хранить информацию, и к которому может быть осуществлен доступ посредством вычислительного устройства 600. Любые такие компьютерные носители для хранения данных могут быть частью устройства 600. Вычислительное устройство 600 может также иметь устройство(а) 614 ввода, такое как клавиатура, мышь, перо, устройство звукового ввода, сенсорное устройство ввода и т.д. Устройство(а) 616 вывода, такое как дисплей, динамики, принтер и т.д., может также быть включено. Вышеуказанные устройства являются примерами, и могут использоваться другие устройства.
[0055] Термин "машиночитаемый носитель" при использовании в данном документе также может включать в себя среды связи. Среды связи могут в типичном варианте воплощать машиночитаемые команды, структуры данных, программные модули или другие данные в модулированном информационном сигнале, таком как несущее колебание или другой механизм распространения, и включают в себя любые среды для доставки информации. Термин "модулированный информационный сигнал" может описывать сигнал, который имеет одну или более своих характеристик, задаваемых или изменяемых таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, среды связи включают в себя проводные среды, такие как проводная сеть или непосредственное проводное соединение, и беспроводные среды, такие как акустические, радиочастотные (RF), инфракрасные и другие беспроводные среды.
[0056] Варианты осуществления изобретения могут быть применены на практике посредством интегральной системы (SOC), где каждый или множество компонентов, иллюстрированных на фиг.6, могут быть интегрированы в одну интегральную схему. Такое SOC-устройство может включать в себя один или более процессоров, графических модулей, модулей связи, модулей виртуализации систем и функциональность различных приложений, все из которых интегрируются (или "записываются") на подложку кристалла в качестве одной интегральной схемы. Когда работает посредством SOC, функциональность, описанная в данном документе, в отношении предоставления непрерывного доступа к ресурсу, может работать через логику специализированного применения, интегрированную с другими компонентами вычислительного устройства/системы 600 на одной интегральной схеме (кристалле).
[0057] На всем протяжении этого описания делалась ссылка на "один вариант осуществления" или "вариант осуществления", означающая, что конкретный описанный признак, структура или характеристика включены по меньшей мере в один вариант осуществления. Таким образом, использование таких фраз может относиться более чем только к одному варианту осуществления. Помимо этого, описанные признаки, структуры или характеристики могут быть комбинированы любым надлежащим образом в одном или более вариантах осуществления.
[0058] Тем не менее, специалисты в данной области техники могут признавать, что варианты осуществления могут быть использованы на практике без одной или более конкретных подробностей или с другими способами, ресурсами, материалами и т.д. В других случаях, широко распространенные структуры, ресурсы или операции не показаны или описаны подробно просто для того, чтобы избежать затруднений в понимании аспектов вариантов осуществления.
[0059] Хотя проиллюстрированы и описаны примерные варианты осуществления и применения, следует понимать, что варианты осуществления не ограничены точной конфигурацией и ресурсами, описанными выше. Различные модификации, изменения и вариации, очевидные специалистам в данной области техники, могут быть выполнены в структуре, работе и деталях способов и систем, раскрытых в данном документе, без отклонения от объема заявленных вариантов осуществления.