БЕЗОПАСНЫЙ ДОСТУП К ДАННЫМ ПОСЛЕ СБОЯ ХРАНИЛИЩА
SAFE DATA ACCESS FOLLOWING STORAGE FAILURE

УРОВЕНЬ ТЕХНИКИ
В клиентском или серверном кластере
[0001] Кластерные окружения, например, окружения, где рабочие нагрузки распределяются среди многочисленных машин, широко используются для обеспечения восстановления после сбоя и высокой доступности информации для клиентов. Кластерные окружения обеспечивают клиентам возможность осуществления доступа к ресурсам посредством одного или более узлов, которые являются частью окружения. Кластерное окружение может действовать как клиент, сервер, или как и то и другое. , приложение может находиться на любом из узлов, которые составляют кластер. Приложение может выдавать запросы доступа для целевых данных, которые хранятся системой хранения. Если ошибка возникает во время запроса доступа, приложение может испытать задержки, которые влияют на исполнение.
[0002] Именно в отношении этих и других моментов и были приведены примеры. Также, хотя были рассмотрены достаточно конкретные проблемы, следует понимать, что примеры не должны ограничиваться решением этих конкретных проблем, выявленных в уровне техники.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] Это краткое изложение сущности изобретения предоставлено для введения подборки концепций в упрощенной форме, которые дополнительно описаны ниже в секции "Подробное описание". Это краткое изложение сущности изобретения не предназначено для идентификации ключевых признаков или существенных признаков заявленного изобретения, также не предназначено для использования в качестве помощи в определении объема заявленного изобретения.
[0004] В настоящем документе раскрыты системы и способы, которые обеспечивают приложению возможность приостановки исполнения во время сбоя и впоследствии возобновления исполнения и связи с системой хранения, как только сбой урегулирован. Согласно некоторым аспектам, приложение, находящееся на узле в клиентском кластере, отправляет запрос доступа узлу в серверном кластере для осуществления доступа к целевым данным. В примерах, идентификатор запроса используется для идентификации приложения и/или соответствующей рабочей нагрузки, запрашивающих ресурс. Идентификатор запроса может быть предоставлен с помощью запроса. Когда клиент осуществляет доступ к целевым данным, идентификатор запроса хранится в постоянном хранилище и ассоциируется с запрошенными целевыми данными.
[0005] До того, как приложение завершит свои операции в отношении целевых данных, может произойти сбой, который вызывает потерю связи приложением с системой хранения. Например, сервер в системе хранения может перезагрузиться, соответствующая файловая система может быть размонтирована, может дать сбой линия связи, и т.д. При таких обстоятельствах, запросы доступа, выдаваемые приложением для целевых данных, хранящихся системой хранения, будут испытывать задержки или давать сбой в целом. Однако, сохраненный идентификатор не может быть удален из постоянного хранилища, даже если срок действия блокировки приложения в отношении целевых данных истекает во время сбоя. Во время сбоя, приложение может принять уведомление, оно потеряло связь с системой хранения и может приостановить исполнение. После повторного установления связи с системой хранения, приложение может принять уведомление об урегулировании и попытаться возобновить исполнение. К тому же, приложение может отправить запрос возобновления системе хранения для восстановления доступа к целевым данным. Запрос возобновления может включать в себя, или ссылаться на, идентификатор запроса. Идентификатор запроса позволяет системе хранения, управляющей запросом, определить, что запрос возобновления принадлежит тому же приложению, которое ранее осуществило доступ к ресурсу. Это обеспечивает серверу возможность предоставления разрешения по запросу возобновления от приложения для осуществления доступа к целевым данным. При событии, когда целевые данные модифицируются до запроса возобновления, система хранения устраняет ассоциацию идентификатора запроса с целевыми данными (например, посредством удаления сохраненного идентификатора из постоянного хранилища), так что приложение может не возобновить свою предыдущую связь с системой хранения. В результате, приложению гарантируется, что если оно имеет возможность повторного установления связи с использованием запроса возобновления и первоначального идентификатора запроса, целевые данные не были модифицированы с момента сбоя связи. Иначе, приложение предупреждается, что целевые данные изменялись, и приложение может принять решение, предпринять ли другие действия.
[0006] Примеры могут быть реализованы как компьютерный процесс, вычислительная система, или как промышленное изделие, такое как компьютерный программный продукт или считываемые компьютером носители. Компьютерным программным продуктом может быть компьютерные носители информации, считываемые компьютерной системой и кодирующие компьютерную программу из инструкций для исполнения компьютерного процесса.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0007] Неограничивающие и неисчерпывающие примеры описаны со ссылкой на нижеследующие Фигуры.
[0008] Фиг. 1 иллюстрирует систему, которая может быть использована для реализации примеров, описанных в настоящем документе.
[0009] Фиг. 2 иллюстрирует систему, которая может быть использована для реализации примеров, описанных в настоящем документе.
[0010] Фиг. 3 является последовательностью операций для приложения, осуществляющего связь с системой хранения.
[0011] Фиг. 4 является последовательностью операций для системы хранения, осуществляющей связь с приложением.
[0012] Фиг. 5 является блок-схемой, иллюстрирующей пример вычислительного устройства, с помощью которого аспекты данного изобретения могут быть применены на практике.
[0013] Фиг. 6A и 6B являются упрощенными блок-схемами мобильного вычислительного устройства, с помощью которого аспекты настоящего изобретения могут быть применены на практике.
[0014] Фиг. 7 является упрощенной блок-схемой распределенной вычислительной системы, в которой аспекты настоящего изобретения могут быть применены на практике.
ПОДРОБНОЕ ОПИСАНИЕ
[0015] Различные аспекты описаны более подробно ниже со ссылкой на прилагаемые чертежи, которые образуют их часть, и которые показывают конкретные примерные аспекты. Однако, примеры могут быть реализованы во многих разных формах и не должны толковаться как ограниченные примерами, изложенными в настоящем документе. Соответственно, примеры могут принять форму аппаратной реализации, или полностью программной реализации, или реализации, объединяющей программные и аппаратные аспекты. Вследствие этого, нижеследующее подробное описание не следует брать в ограничивающем смысле.
[0016] Примеры настоящего раскрытия относятся к обеспечению приложений механизмами для надежного доступа к целевым данным в системе хранения и чтобы справляться со сбоями связи. В примерах, системой хранения может быть локальное устройство, прикрепленное к сети устройство хранения, распределенный файловый сервер, или любой другой тип системы хранения в вычислительном окружении. Целевые данные могут находиться на автономном сервере, или они могут находиться в кластерном окружении. В примерах, раскрытых в настоящем документе, кластерное окружение может включать в себя один или более узлов (например, клиентские и/или серверные устройства).
[0017] В примере, приложение может запросить доступ к целевым данным. Целевые данные могут храниться локально (например, на клиентском узле), на удаленном устройстве (например, удаленном сервере или другом узле в клиентском кластерном окружении), или в кластерном окружении (например, окружении, содержащем многочисленные узлы), которое отличается от клиентского кластерного окружения. Например, в примерах кластерным окружением может быть клиентский или серверный кластер; однако, специалист в данной области техники поймет, что системы и способы, раскрытые в настоящем документе, могут быть использованы в любом другом типе окружения, таком как, но не ограниченном этим, виртуальная сеть.
[0018] Данные могут совместно использоваться среди множество запрашивающих сторон. как используется в настоящем документе, запрашивающая сторона может содержать любое приложение, рабочую нагрузку, поток, или другой процесс или объект, запрашивающий доступ к целевым данным. Хотя примеры, описанные в настоящем документе могут быть описаны по отношению к "приложению" или "клиенту" или "процессу" или "рабочей нагрузке", действующим в качестве запрашивающей стороны, настоящее раскрытие так не ограничивается. Когда запрашивающая сторона осуществляет доступ к целевым данным, целевые данные могут быть заблокированы, тем самым препятствуя другим запрашивающим сторонам в осуществлении доступа, пока блокировка не будет снята. Блокировка целевых данных может быть использована для защиты от конфликта - то есть, для защиты от модификации целевых данных другой запрашивающей стороной до того, как осуществляющая доступ запрашивающая сторона выполнит свои операции. Обычно, когда блокировка снята, система хранения более не оставляет какую-либо ассоциацию между целевыми данными и запрашивающей стороной.
[0019] В некоторых случаях, когда происходит сбой, влияющий на связь запрашивающей стороны с системой хранения, запрашивающая сторона может не иметь возможности повторного соединения с системой хранения до того как будет снята блокировка в отношении целевых данных. В результате, запрашивающая сторона становится неассоциированной с целевыми данными. Например, если система хранения сохраняет блокировку с использованием идентификатора экземпляра рабочей нагрузки, представляемого, или на который ссылается, запрашивающей стороной в запросе доступа, когда блокировка снята, идентификатор экземпляра рабочей нагрузки может обычно быть удален и/или может быть устранена ассоциация с целевыми данными. К тому же, так как блокировка была снята, после установления нового соединения, запрашивающая сторона не может предположить, что целевые данные не были модифицированы с момента последнего доступа запрашивающей стороной. Таким образом, вместо возобновления исполнения и связи с системой хранения, запрашивающая сторона должна установить новый сеанс связи и предположить, что целевые данные находятся в неизвестном состоянии.
[0020] К тому же, когда запрашивающая сторона осуществляет связь с системой хранения, запрашивающая сторона может ожидать отсутствие приема указания о задержках или сбоях связи, и может вместо этого предположить, что ее контракт с системой хранения (и/или менеджером ввода/вывода (IO) на клиенте, размещающем запрашивающую сторону) гарантирует, что запросы доступа будут повторятся до успешной попытки. В результате, сбой связи будет предписывать запрашивающей стороне продолжать ожидать ответ от системы хранения. Это может влиять на поведение запрашивающей стороны и вызывать задержки исполнения. Например, запрашивающая сторона может быть "заморожена" и не иметь возможности выполнения какой-либо обработки, пока не будет урегулирован сбой. Системы и способы, раскрытые в настоящем документе, предоставляют механизмы для выявления ситуаций, когда запрашивающая сторона пытается возобновить связь с системой хранения, также как и механизмы для уведомления запрашивающей стороны о задержках или сбоях связи, тем самым уменьшая влияние на исполнение и обеспечение запрашивающей стороне возможности возобновления исполнения и связи после сбоя.
[0021] Фиг. 1 иллюстрирует систему 100, которая может быть использована для реализации некоторых примеров. Система 100 включает в себя клиент 102 и систему 108 хранения. В проиллюстрированном примере, клиент 102 содержит запрашивающую сторону, такую как приложение 104 и менеджер 106 ввода/вывода (IO), вмещаемый физическим или виртуальным вычислительным устройством. Менеджер 106 IO ретранслирует и управляет связью между приложением 104 и системой 108 хранения. Система 108 хранения хранит информацию, к которой осуществляет доступ приложение 104. Хотя на Фиг. 1 показано только приложение 104 на клиенте 102, осуществляющем связь с системой 108 хранения, в других примерах может быть более, чем одно приложение, и более, чем один клиент, осуществляющий доступ к информации из системы 108 хранения. В некоторых примерах, система 108 хранения может содержать хранилище, соединенное локально с клиентом 102, хранилище удаленное от клиента 102, доступ к которому осуществляется через сеть, или хранилище, совместно используемое среди кластерных файловых серверов.
[0022] В соответствии с одним примером, система 108 хранения используется для обеспечения систематической доступности приложению 104. Это делается посредством использования компонентов на клиенте 102 и системе 108 хранения для хранения информации, которая может быть использована для повторного установления связи между клиентом 102 и системой 108 хранения при возникновении сбоя связи, размонтирования файловой системы, перезагрузки или любого другого типа сбоя. Как описано более подробно ниже, сохраненная информация и уведомления о сбоях связи обеспечивают клиенту 102 возможность иметь систематический доступ к файлам и обеспечивают приложениям возможность выполнения на клиенте 102, чтобы справляться со сбоями связи, которые могут произойти. В примерах, клиент 102 может осуществлять связь с системой 108 хранения с использованием протокола блока сообщений сервера (SMB) версии 2.0/3.0.
[0023] Чтобы проиллюстрировать один пример, приложение 104 может указывать менеджеру 106 IO, что следует сообщить о сбоях связи во время сеанса связи с системой 108 хранения. В некоторых примерах, указание может точно определять обозначенный период времени для ожидания успешного осуществления запроса, после которого запрос должен быть сообщен как имеющий сбой. В примерах, не имеющих такое указание, приложение 104 может полагаться на менеджер 106 IO для повторения запросов доступа к системе 108 хранения. Это может привести к бесконечному ожиданию приложением 104, без информации, касающейся природы или продолжительности задержки.
[0024] Приложение 104 может отправить запрос доступа для целевых данных системе 108 хранения. Запрос доступа для целевых данных может включать в себя число файловых операций для выполнения в отношении целевых данных. Операциями могут быть, например, открытия для чтения/записи данных, подсчет атрибутов, аренда запросов для обеспечения возможности локального кэширования данных, или другие операции доступа к файлу. В некоторых примерах, запрос доступа может включать в себя или ссылаться на идентификатор запроса, такой как идентификатор экземпляра рабочей нагрузки.
[0025] Система 108 хранения принимает запрос доступа для целевых данных. В некоторых примерах, система 108 хранения может определить, заблокированы ли целевые данные и вследствие этого ассоциированы с другим идентификатором запроса, например, для другой запрашивающей стороны, такой как другое приложение, выполняющееся на клиенте 102 или другом клиенте. Если целевые данные заблокированы, система 108 хранения может отклонить запрос доступа к файлу, может прекратить блокировку или может предпринять другое действие в зависимости от используемого протокола.
[0026] После определения, что должно быть предоставлено разрешение по запросу доступа, система 108 хранения отправляет клиенту 102 ответ, предоставляющий разрешение на доступ к целевым данным. Идентификатор запроса может быть сохранен системой 108 хранения в постоянном хранилище. Когда идентификатор запроса сохранен системой 108 хранения, здесь он может называться сохраненный идентификатор. В некоторых примерах, целевые данные могут быть заблокированы до, или после, предоставления разрешения по запросу доступа. В некоторых примерах, блокировка может быть выполнена с возможностью снятия (тем самым обеспечивая другим вызывающим сторонам возможность иметь доступ к целевым данным) после того, как все операции в запросе были завершены. К тому же, срок действия блокировки может истечь после точно определенного периода времени или после более короткого из точно определенного периода времени и времени, в которое все операции в запросе завершаются. В еще одних примерах, блокировка может предоставить клиенту эксклюзивный доступ к целевым данным, пока клиент не снимет блокировку, или пока не произойдет событие, прекращающее блокировку. Например, согласно протоколу SMB, эксклюзивная уступающая блокировка от системы 108 хранения может быть предоставлена клиенту 102. Клиент 102 может предположить, что это единственный процесс с доступом к целевым данным, и клиент 102 может кэшировать все изменения в целевых данных до подтверждения изменений системе 108 хранения. Если другой клиент/процесс пробует открыть те же целевые данные, система 108 хранения отправляет сообщение клиенту 102 (называемое прекращением или аннулированием), которое объявляет недействительным эксклюзивную уступающую блокировку, ранее данную клиенту 102. Клиент 102 затем сбрасывает все изменения в целевых данных и подтверждает их системе 108 хранения.
[0027] В какой-то момент, клиент 102 может испытать сбой связи с системой 108 хранения. Сбой, в некоторых примерах, может быть результатом разъединения, размонтирования файловой системы или перезагрузки. В результате сбоя связи, менеджер 106 IO предоставляет приложению 104 уведомление о сбое. В примерах, такое уведомление возникает, только если приложение 104 "согласилось" и предоставило указание менеджеру 106 IO, что приложение 104 должно быть уведомлено в случае сбоя связи с системой 108 хранения. В примерах, уведомление о сбое может включать в себя дополнительную информацию о сбое, описывающую природу и/или ожидаемую продолжительность сбоя. Приложение 104 может использовать дополнительную информацию о сбое для определения, какое действие предпринять, в том числе продолжать ожидать, отказаться от конкретного запроса, повторить запрос, перезапустить приложение 104, и т.д. Среди других вариантов, после приема уведомления, приложение 104 может приостановить исполнение. В других примерах, приложение 104 может также (или вместо) приостановить операции IO или соответствующую обработку. В примерах, сбой может также предписывать системе 108 хранения снять блокировку приложения 104 в отношении целевых данных; или срок действия блокировки может истечь во время сбоя.
[0028] В итоге, сбой может быть урегулирован, и соединение между клиентом 102 и системой 108 хранения может быть повторно установлено. Менеджер 106 IO определяет, был ли урегулирован сбой и, если так, предоставляет приложению 104 уведомление об урегулировании. В примерах, приложение 104 может также определить, был ли урегулирован сбой, например, посредством повторения запросов доступа. После приема уведомления об урегулировании, приложение 104 может возобновить исполнение. В некоторых примерах, где были приостановлены только операции IO, приложение 104 может также возобновить операции IO или соответствующую обработку. Приложение 104 отправляет запрос возобновления для возобновления связи с системой 108 хранения для целевых данных. В примерах, запрос возобновления может быть отправлен менеджером 106 IO или через него. Запрос возобновления может содержать запрос доступа, который включает в себя идентификатор запроса (или ссылается на него), использованный до сбоя, и может включать в себя флаг, указывающий системе хранения, что запрос доступа является запросом возобновления. Система 108 хранения принимает запрос возобновления. Система 108 хранения определяет, изменились ли целевые данные с момента сбоя. Определение, изменялись ли целевые данные, может также быть сделано, частично, до приема запроса возобновления.
[0029] Если система 108 хранения определяет, что целевые данные не изменились, система 108 хранения предоставляет разрешение по запросу возобновления. В примерах, система 108 хранения определяет, изменялись ли целевые данные, посредством сравнения идентификатора запроса в запросе возобновления с сохраненным идентификатором из самого последнего запроса доступа клиента для целевых данных. Если другой процесс или приложение изменили целевые данные между временем сбоя и временем запроса возобновления, система 108 хранения будет должна удалить сохраненный идентификатор из самого последнего запроса доступа клиента 102. В этой связи, если сохраненный идентификатор совпадает с идентификатором, включенным в запрос возобновления, или иным образом ассоциированным с ним, система хранения предоставляет разрешение по запросу возобновления. Предоставление разрешения по запросу возобновления эффективно гарантирует приложению, что целевые данные не изменились с момента запроса доступа, для которого сохраненный идентификатор был первоначально сохранен. Следовательно, клиенту 102 гарантируется целостность данных при продолжении своих предыдущих операций. Например, если клиент 102 кэшировал записи в целевые данные, которые не были завершены до сбоя, такие записи могут быть теперь завершены. Если система 108 хранения определяет, что целевые данные изменялись (например, идентификатор запроса в запросе возобновления не совпадает с идентификатором, хранящимся в постоянном хранилище), система 108 хранения отклоняет запрос возобновления. Как используется в этом документе, "совпадение" не должно содержать точную копию. Скорее, совпадение идентификаторов лишь требует, чтобы объект, сравнивающий идентификаторы, был в достаточной степени удовлетворен заданным уровнем конкретности, что два идентификатора ссылаются на один и тот же запрос и/или запрашивающую сторону.
[0030] В примерах, клиент 102 может вмещать одну или более виртуальных машин, использующих один или более виртуальных накопителей на жестких дисках в системе 108 хранения. Когда система 108 хранения дает сбой, уровни надежности (такие как непрерывная доступность SMB) могут прекратить попытки для восстановления. Это предписывает приложению 104 принять сбои IO, которые приводят к эффективной "заморозке" виртуальных машин, которые имеют открытые целевые данные в системе 108 хранения. Обычно, виртуальные машины требуются для прохождения процесса перезагрузки, чтобы справиться со сбоем. Однако настоящее раскрытие обеспечивает виртуальным машинам возможность приостановления и, как только сбой урегулирован, возобновления. Таким образом, можно избежать перезагрузки операционной системы в виртуальных машинах. Однако, для того, чтобы это осуществить, должна быть обеспечена целостность данных.
[0031] Хотя виртуальные машины приостановлены, со всем справляется система 108 хранения, для этого виртуальная машина может быть закрыта, но состояние операционной системы в виртуальной машине может быть сохранено. Например, файловая система новой технологии (NTFS), примонтированная на виртуальном накопителе на жестких дисках, делает предположение, что при возобновлении виртуальной машины, весь контент виртуального накопителя на жестких дисках является таким же. Если контент виртуального накопителя на жестких дисках изменился, пока виртуальная машина была приостановлена, виртуальный накопитель на жестких дисках может быть поврежден. Настоящее раскрытие позволяет эффективно определить, одинаково ли это возобновить виртуальную машину, после того, как она была приостановлена.
[0032] Вышеприведенное описание является лишь одним примером того, как пример, показанный на Фиг. 1, может функционировать. Как описано более подробно ниже, примеры могут предусматривать разные этапы или операции. Они могут быть реализована с использованием любого соответствующего программного или аппаратного компонента или модуля.
[0033] Фиг. 2 иллюстрирует систему 200, которая может быть использована для реализации некоторых примеров. Система 200 включает в себя узлы 202 и 208. Узел 202 содержит приложение 204 и менеджер 206 IO, вмещаемые физическим или виртуальном вычислительным устройством. Приложение 204 может быть приложением виртуализации. Узел 208 содержит другую утилиту 210 и может также включать в себя одно или более приложений и менеджер IO (не показано). Узлы 202 и 208 могут быть частью клиентского кластера физических и/или виртуальных вычислительных устройств. Узлы 202 и 208 осуществляют связь с системой 214 хранения через сеть 212 с использованием, например, протокола SMB. Система 214 хранения хранит информацию, к которой осуществляет доступ одно или более приложений на узлах 202 и 208. В примерах, узлы 202 и 208 могут считаться запрашивающие стороны, как описано в настоящем документе. Узлы 202 и 208 устанавливают соединения с системой 214 хранения для осуществления доступа к масштабируемому файловому серверу 216. Хотя на Фиг. 2 показаны только клиенты 202 и 208 как осуществляющие связь с системой 214 хранения, в других примерах может быть больше (или меньше), чем два клиента, осуществляющих доступ к информации из системы 214 хранения.
[0034] Как показано на Фиг. 2, система 214 хранения включает в себя узлы 214A и 214B, которые предоставляют как высокую доступность, так и избыточность для масштабируемого файлового сервера 216. В примерах, система 214 хранения предусматривает масштабируемый файловый сервер 216, к которому осуществляют доступ клиенты 202 и 208. Масштабируемый файловый сервер 216 может содержать многочисленные кластерные серверы, которые могут взаимодействовать для предоставления информации файла из распределенной файловой системы 218. Распределенная файловая система 218 содержит информацию файла, которая хранится в физическом хранилище 226. Файловая система 222 физического хранилища 226 примонтирована на узле 214B. В некоторых примерах, форматом файловой системы 222 может быть файловая система новой технологии (NTFS) или отказоустойчивая файловая система (ReFS). Узел 214B действует как координатор распределенной файловой системы 218 и ретранслирует файловые операции, например, чтение, запись и операции метаданных, из распределенной файловой системы 218 файловой системе 222. В некоторых примерах, узел 214A может выполнить файловые операции непосредственно на физическом хранилище 226, хотя узел 214B может иметь эксклюзивный доступ на запись, такой что запросы записи пересылаются узлом 214A узлу 214B вместо того, чтобы напрямую отправляться в физическое хранилище 226. Дополнительно, фильтр 220 идентификаторов запросов ассоциирует запросы доступа с идентификаторами, которые затем сохраняются в постоянном хранилище 224. Например, постоянное хранилище 224 может содержать базу данных фильтров ключей возобновления, используемую фильтром ключей возобновления, прикрепленным к файловой системе NTFS. Хотя на Фиг. 2 показаны два узла, в других примерах система 214 хранения может включать в себя более, чем два узла, или менее, чем два узла.
[0035] В соответствии с примерами, узлы 214A и 214B используются для предоставления систематической доступности масштабируемого файлового сервера 216. Это осуществляется посредством использования компонентов на узлах 202, 208, 214A и 214B для сохранения информации, которая может быть использована для повторного установления связи между приложениями на узлах 202 и 208 и масштабируемым файловым сервером 216 на узлах 214A и 214B при возникновении сбоя, такого как сбой сети 212, размонтирование распределенной файловой системы 218 или файловой системы 222, или сбой или перезагрузка одного из узлов 214A и 214B. К тому же, приложение 204 может указывать менеджеру 206 IO, что приложение 204 должно быть уведомлено о сбоях, влияющих на связь с системой 214 хранения. Как описано более подробно ниже, сохраненная информация и уведомления о сбоях связи обеспечивают узлам 202 и 208 возможность иметь систематический доступ к файлам и обеспечивают приложениям возможность выполнения на узлах 202 и 208, чтобы справляться со сбоями связи, которые могут произойти.
[0036] В примерах, каждый из узлов, например 214A и 214B, предоставляет доступ к данным файла для клиентов и выполнен с возможностью предоставления систематической доступности данных файла клиентам. Чтобы проиллюстрировать один пример, приложение 204 может указывать менеджеру 206 IO, что следует сообщить приложению 204 о сбоях во время сеанса связи с системой 214 хранения. В примерах, приложение может быть должно "дать согласие" на прием указаний о сбоях. В некоторых примерах, указание может точно определять период времени для ожидания успешного осуществления запроса, после которого запрос должен быть сообщен как имеющий сбой. Приложение 204 может отправить запрос доступа для целевых данных узлу 214A. Запрос доступа может быть ассоциирован с идентификатором запроса или может включать его в себя, такой как идентификатор экземпляра рабочей нагрузки. Например, когда запущена новая рабочая нагрузка, может быть создан кортеж, содержащий: <WorkoadPlacementId, WorkloadId, WorkloadInstanceId>. Запрос доступа для целевых данных может включать в себя число файловых операций для выполнения в отношении целевых данных. Операциями могут быть, например, открытия для чтения/записи данных, подсчет атрибутов, аренда запросов для обеспечения возможности локального кэширования данных, или другие операции доступа к файлу. В примерах, запрошенные целевые данные могут содержать образ виртуального накопителя на жестких дисках, содержащий гостевую виртуальную машину.
[0037] Узел 214A принимает запрос доступа для целевых данных. В некоторых примерах, масштабируемый файловый сервер 216 может определить, заблокированы ли целевые данные (например, к ним осуществляется доступ другим приложением или процессом). Если целевые данные заблокированы, масштабируемый файловый сервер 108 может отклонить запрос доступа к файлу или предпринять другое действие, продиктованное используемым конкретным протоколом.
[0038] После определения, что должно быть предоставлено разрешение по запросу, узел 214A отправляет ответ узлу 202, предоставляющий разрешение на доступ к целевым данным. Фильтр 220 идентификаторов запросов хранит идентификатор запроса включенный, или ассоциированный, в запрос доступа из узла 202 в постоянном хранилище 224. В некоторых примерах, целевые данные могут быть затем заблокированы. Блокировка в отношении целевых данных может в итоге быть снята до завершения всех операций из приложения 204 (например, из-за сбоя), но сохраненный идентификатор может продолжать оставаться в постоянном хранилище 224. К тому же, срок действия блокировки может истечь после точно определенного периода времени.
[0039] В какой-то момент, узел 202 может испытать сбой связи с системой 214 хранения. Сбой может возникнуть из-за, например, разъединения, размонтирования файловой системы или перезагрузки. В результате сбоя связи, менеджер 206 IO предоставляет уведомление о сбое приложению 204. После приема уведомления, приложение 204 может приостановить исполнение одной или более гостевых виртуальных машин. В дополнение к или вместо приостановки гостевых виртуальных машин, приложение 204 может также приостановить операции IO или соответствующую обработку.
[0040] В итоге, соединение между узлом 202 и системой 214 хранения может быть восстановлено. Когда менеджер 206 IO определяет, что сбой урегулирован, он предоставляет уведомление об урегулировании приложению 204. В примерах, приложение 204 может определить, что сбой был урегулирован другими способами. После приема уведомления об урегулировании, приложение 204 может возобновить исполнение, в том числе возобновление исполнения одной или более гостевых виртуальных машин. В примерах, приложение 204 может также возобновить операции IO или соответствующую обработку. Приложение 204 отправляет запрос возобновления для возобновления связи с системой 214 хранения и для обращения за доступом к целевым данным. Запрос возобновления от приложения 204 включает в себя идентификатор запроса возобновления, или ассоциирован с ним, который может быть тем же идентификатором, использованным в первом запросе доступа до сбоя. В дополнение, запрос возобновления может включать в себя флаг, указывающий системе 214 хранения, что запрос является запросом возобновления. В этом примере, узел 214B принимает запрос возобновления, и узел 214B определяет, изменились ли целевые данные с момента сбоя.
[0041] Если узел 214B определяет, что целевые данные не изменились, узел 214B предоставляет разрешение по запросу возобновления и предоставляет приложению 204 доступ к целевым данным. В некоторых примерах, и как дополнительно разъясняется ниже, определение, что целевые данные не изменились с момента предыдущего запроса доступа приложения 204, может быть сделано посредством определения, что идентификатор, включенный в запрос возобновления (или ассоциированный с ним), продолжает храниться в постоянном хранилище 224 (и не был удален из него). Когда предоставляется разрешение по запросу возобновления, приложение 204 и узел 214B могут завершить любые операции, которые были прерваны и не завершены до сбоя. Когда предоставляется разрешение по запросу возобновления, целевые данные могут быть снова заблокированы узлом 214B от имени приложения 204. В итоге, блокировка в отношении целевых данных может быть снова снята (например, из-за дополнительного сбоя, завершения операций приложением 204 и т.д.), но сохраненный идентификатор может продолжать оставаться в постоянном хранилище 224. К тому же, срок действия блокировки может истечь после точно определенного периода времени.
[0042] В некоторых примерах, узел 214B может определить, что целевые данные изменялись между самым последним запросом доступа приложения 204 и запросом возобновления. Например, в какой-то момент, другая утилита 210 на узле 208 может изменить целевые данные до того, как приложение 204 на узле 202 повторно установит свое соединение с системой 214 хранения. Это может произойти, например, если приложение 204 имеет блокировку в отношении целевых данных в результате своего самого последнего запроса доступа; однако, срок действия блокировки истек или она была снята после того, как произошел сбой, но до того, как все операции приложения 204 в отношении целевых данных были завершены. Прекращение блокировки может обеспечить другой утилите 210 возможность изменения целевых данных до приема запроса возобновления от приложения 204. Если целевые данные изменялись, узел 214B может удалить идентификатор запроса из постоянного хранилища 224. В примерах, сохраненный идентификатор из самого последнего запроса доступа приложения 204 для целевых данных может быть удален из постоянного хранилища, когда другая утилита 210 изменяет целевые данные (даже до возникновения запроса возобновления). Например, система 214 хранения может непрерывно или периодически контролировать изменения в целевых данных, для чего система 214 хранения в настоящее время хранит сохраненный идентификатор в постоянном хранилище 224, и удалять такие сохраненные идентификаторы, когда изменения были сделаны. В этом случае, определение, изменялись ли целевые данные, требует простой проверки, совпадает ли идентификатор, включенный в запрос возобновления (или ассоциированный с ним), с сохраненным идентификатором для целевых данных в постоянном хранилище 224. В примерах, операции, которые не составляют перемену или изменения в целевых данных, могут включать в себя чтение, дефляцию, сжатие, дедупликацию или операции получения снимков, и такие операции от имени другого приложения или другой утилиты 210 не приведут к удалению сохраненного идентификатора приложения 204 для целевых данных из постоянного хранилища 224. Если целевые данные изменялись, система 214 хранения может отклонить запрос возобновления, и приложение может предпринять дополнительное действие. Например, если виртуальная машина была приостановлена во время сбоя, и запрос возобновления после сбоя отклонен системой 214 хранения, операционная система внутри виртуальной машины может быть снова приостановлена, в момент чего может быть сделано определение перезагрузить виртуальную машину.
[0043] Как может быть понятно, вышеуказанное описание системы 200 не предназначено для ограничения примеров, описанных в настоящем документе. Фиг. 2 и ее описание предназначены лишь для иллюстрации реализации некоторых примеров. В других примерах, разные типы информации могут быть сохранены в разных компонентах в системе 200. Таким образом, примеры не ограничены тем, что показано и описано на Фиг. 2.
[0044] Фиг. 3 и 4 иллюстрируют последовательности 300 и 400 операций согласно примерам. Последовательности 300 и 400 операций могут быть выполнены в любом подходящем вычислительном окружении. Например, последовательности операций могут быть исполнены посредством окружений, таких которые проиллюстрированы на Фиг. 1 и 2. Вследствие этого, описание последовательностей 300 и 400 операций, может обращаться по меньшей мере к одному из компонентов по Фиг. 1 и 2. Однако, следует понимать, что реализации по Фиг. 1 и 2 не ограничивают окружения для последовательностей 300 и 400 операций.
[0045] Кроме того, хотя последовательности 300 и 400 операций проиллюстрированы и описаны последовательно в конкретном порядке, в других примерах, операции могут быть выполнены в других порядках, много раз и/или параллельно. К тому же, одна или более операций могут быть опущены или объединены в некоторых примерах. В дополнение, следует понимать, что порядковые числительные, такие как "первый", не предназначены для предположения порядка или последовательности, пока точно не определено иначе, и используются, чтобы делать различие между аналогичными элементами. Например, "первый запрос доступа" не должен быть первоначальным запросом доступа, но его следует читать как отличный от "второго запроса доступа" или "запроса возобновления".
[0046] Последовательность 300 операций иллюстрирует операции для приложения, осуществляющего связь с системой хранения. В примерах, последовательность 300 операций, проиллюстрированная на Фиг. 3, может быть выполнена приложением, который выполняется на клиенте, например, приложение 204 на узле 202 (Фиг. 2).
[0047] Последовательность 300 операций начинается с операции 302, где передается указание, что приложению должно быть сообщено о сбоях системы хранения. Указание может быть сделано менеджеру IO, такому как менеджер 206 IO (Фиг. 2). В некоторых примерах, указание может точно определять обозначенный период времени для ожидания успешного осуществления запроса доступа, после которого запрос доступа должен быть сообщен как имеющий сбой.
[0048] Последовательность операций переходит от операции 302 к операции 304, где отправляется первый запрос доступа для целевых данных. Первый запрос доступа ассоциирован с первым идентификатором. В некоторых примерах, первый идентификатор может быть включен как часть первого запроса доступа. Запрос доступа для целевых данных может включать в себя число файловых операций для выполнения в отношении целевых данных. Операциями могут быть, например, открытия для чтения/записи данных, подсчет атрибутов, аренда запросов для обеспечения возможности локального кэширования данных, или другие операции доступа к файлу.
[0049] В операции 306, принимается ответ, предоставляющий разрешение на доступ к запрошенным целевым данным. Переходим к операции 308, принимается уведомление о первом сбое. Сбой может возникнуть из-за, например, сбоя связи, размонтирования файловой системы или перезагрузки. Последовательность 300 операций затем переходит к операции 310, где после приема уведомления о сбое делается определение приостановить приложение. В других примерах, операция 310 может также включать в себя приостановку операций IO и соответствующей обработки. Например, приложение 204, после приема уведомления о сбое, может приостановить гостевую виртуальную машину (Фиг. 2). В некоторых примерах, уведомление о сбое может включать в себя указание, ожидается ли урегулирование сбоя в пределах конкретного периода времени. Такая информация позволяет приложению решить, приостановить ли операции IO, перезагрузить или предпринять другое действие.
[0050] В операции 312, принимается указание, что первый сбой был урегулирован. Переходим к операции 314, приложение возобновляется. В других примерах, операция 314 может также включать в себя возобновление операций IO и соответствующей обработки. Например, приложение 204, после приема указания, что первый сбой был урегулирован, может возобновить гостевую виртуальную машину (Фиг. 2). В примерах, операция 314 может проходить без приема сначала указания, что сбой был урегулирован.
[0051] Последовательность 300 операций затем переходит к операции 316, где отправляется запрос возобновления для целевых данных. Запрос возобновления ассоциирован с первым идентификатором и включает в себя указание (такое как флаг), что запрос является запросом возобновления. В некоторых примерах, первый идентификатор может быть включен как часть запроса возобновления. После операции 316, последовательность 300 операций переходит к операции 318, где определяется, было ли предоставлено разрешение по запросу возобновления. Если разрешение по запросу возобновления предоставлено, принимается 320 ответ, предоставляющий разрешение на доступ к запрошенным целевым данным. Приложение, принимающее ответ, предоставляющий разрешение по запросу возобновления, может рассматривать предоставление разрешения по запросу как подтверждение, что целевые данные не изменились между самым последним запросом доступа приложения для целевых данных и запросом возобновления. Приложение может затем продолжить любые незаконченные операции в отношении целевых данных. Если запрос возобновления отклонен, предпринимается 322 дополнительное действие. Например, приложение, принимающее отклонение запроса возобновления, может выбрать перезагрузиться. В примерах, приложение может также предоставить указание о сбое пользователю посредством пользовательского интерфейса и предоставить пользователю варианты, чтобы предпринять дополнительное действие.
[0052] Последовательность 400 операций иллюстрирует этапы для системы хранения, осуществляющей связь с приложением. В примерах, последовательность 400 операций может быть выполнена системой хранения, такой как один или более файловых серверов, например, узел 214A и/или узел 214B (Фиг. 2).
[0053] Последовательность 400 операций начинается с операции 402, где принимается первый запрос доступа для целевых данных. Первый запрос доступа ассоциирован с идентификатором запроса. В некоторых примерах, идентификатор запроса может быть включен как часть первого запроса доступа. Запрос доступа для целевых данных может включать в себя число файловых операций для выполнения в отношении целевых данных. Операциями могут быть, например, открытия для чтения/записи данных, подсчет атрибутов, аренда запросов для обеспечения возможности локального кэширования данных, или другие операции доступа к файлу. После операции 402, последовательность 400 операций переходит к решению 404, где принимается решение относительно того, заблокированы ли целевые данные.
[0054] Если, при решении 404, определяется, что целевые данные заблокированы, последовательность операций переходит к операции 406, где первый запрос доступа отклоняется. В других примерах, операция 406 может содержать прекращение блокировки, в случае чего последовательность операций перейдет к операции 408.
[0055] Если, при решении 404, определяется, что целевые данные не заблокированы, последовательность операций переходит к операции 408, где блокировка ставится в отношении целевых данных для запрашивающей стороны. Срок действия блокировки может истечь после точно определенного периода времени, или она может быть прекращена согласно конкретным протоколам. Переходим к операции 410, предоставляется разрешение на доступ к запрошенным целевым данным. Последовательность операций тогда переходит к операции 412, где идентификатор запроса сохраняется в постоянном хранилище.
[0056] Последовательность операций переходит к операции 414, на которой происходит сбой. Сбой может произойти, например, в результате прерывания соединения, размонтирования файловой системы, ассоциированной с системой хранения, или перезагрузки системы хранения, и т.д. В примерах, последовательность 400 операций включает в себя операцию 416, в которой снимается блокировка, созданная в операции 408, и идентификатор запроса остается в постоянном хранилище. Например, запрашивающая сторона может не завершить все операции в отношении целевых данных до сбоя; однако, блокировка снимается из-за истечения периода времени, из-за самого сбоя или из-за других факторов. Последовательность операций затем переходит к решению 418, где принимается решение относительно того, были ли модифицированы целевые данные с момента, когда к ним был осуществлен доступ в последний раз в операции 410.
[0057] Если, при решении 418, определяется, что целевые данные были модифицированы, последовательность операций переходит к операции 420, где сохраненный идентификатор запроса удаляется из постоянного хранилища. Например, если целевые данные были изменены другим процессом после снятия блокировки в операции 416, сохраненный идентификатор, ассоциирующий целевые данные с запрашивающей стороной, может быть удален из постоянного хранилища.
[0058] Последовательность 400 операций затем переходит (от операции 418 решения или операции 420) к операции 422, где принимается запрос возобновления. Запрос возобновления ассоциирован с идентификатором запроса возобновления, который может быть таким же как идентификатор запроса, принятый в операции 402. В некоторых примерах, идентификатор запроса возобновления может быть включен как часть запроса возобновления. К тому же, в примерах, решение 418 может возникнуть после приема запроса возобновления. После операции 422, последовательность 400 операций переходит к решению 424, где делается определение, совпадает ли идентификатор запроса с идентификатором, хранящимся в постоянном хранилище.
[0059] Если, при решении 424, определяется, что идентификатор запроса не совпадает, последовательность операций переходит к операции 426, где запрос возобновления отклоняется.
[0060] Если, при решении 424, определяется, что идентификатор запроса совпадает, в некоторых примерах последовательность операций переходит к операции 428, где блокировка ставится в отношении целевых данных для запрашивающей стороны. Срок действия блокировки может истечь после точно определенного периода времени, или она может быть прекращена согласно конкретным протоколам. Переходим к операции 430, предоставляется разрешение на доступ к запрошенным целевым данным. В других примерах, последовательность 400 операций включает в себя операцию 432, в которой в итоге снимается блокировка, созданная в операции 428, и идентификатор запроса остается в постоянном хранилище. После операции 430, или 432 в других примерах, последовательность операций заканчивается.
[0061] Фиг. 5-7 и ассоциированные описания предусматривают рассмотрение многообразия операционных окружений, в которых примеры данного изобретения могут быть применены на практике. Однако, устройства и системы, проиллюстрированные и рассмотренные по отношению к Фиг. 5-7, служат в целях примера и иллюстрации и не ограничивают огромное число конфигураций вычислительных устройств, которые могут быть использованы для применения на практике примеров данного изобретения, описанных в настоящем документе.
[0062] Фиг. 5 является блок-схемой, иллюстрирующей физические компоненты вычислительного устройства 502, например, узлы 202, 208, 214A и 214B, с помощью которых примеры настоящего раскрытия могут быть применены на практике. Компоненты вычислительного устройства, описанные ниже, могут подходить для вычислительных устройств, описанных выше. В базовой конфигурации, вычислительное устройство 502 может включать в себя по меньшей мере один блок 504 обработки и системную память 506. В зависимости от конфигурации и типа вычислительного устройства, системная память 506 может содержать, но не ограничена этим, энергозависимое хранилище (например, оперативную память), энергонезависимое хранилище (например, постоянную память), flash-память или любую комбинацию такой памяти. Системная память 506 может включать в себя операционную систему 507 и один или более программных модулей 508, подходящих для выполнения программных приложений 520, таких как приложение 204, менеджер 206 IO и другая утилита 210. Операционная система 507, например, может подходить для управления функционированием вычислительного устройства 502. К тому же, примеры данного изобретения могут быть применены на практике совместно с графической библиотекой, другими операционными системами, или любой другой прикладной программой и не ограничены конкретным приложением или системой. Это базовая конфигурация проиллюстрирована на Фиг. 5 посредством этих компонентов внутри пунктирной линии 522. Вычислительное устройство 502 может иметь дополнительные признаки или функциональность. Например, вычислительное устройство 502 может также включать в себя дополнительные устройства хранения данных (съемные и/или несъемные), такие как, например, магнитные диски, оптические диски или лента. Такое дополнительное хранилище проиллюстрировано на Фиг. 5 посредством съемного устройства 509 хранения и несъемного устройства 510 хранения.
[0063] Как указано выше, некоторое число программных модулей и файлов данных может храниться в системной памяти 506. При исполнении в блоке обработки 504, программные модули 508 (например, приложение 204, менеджер 206 IO, и другая утилита 210) могут выполнять процессы, включающие в себя, но не ограниченные этим, один или более из этапов последовательностей 300 и 400 операций, проиллюстрированных на Фигурах 3 и 4. Другие программные модули, которые могут быть использованы в соответствии с примерами настоящего изобретения, могут включать в себя электронную почту и приложения контактов, приложения обработки текста, приложения электронных таблиц, приложения баз данных, приложения слайдовых презентаций, приложения для рисования или выполняемые с помощью компьютера прикладные программы, и т.д.
[0064] К тому же, примеры данного изобретения могут быть применены на практике в электрической схеме, содержащей дискретные электронные элементы, объединенных или интегрированных кристаллах интегральной схемы, содержащих логические вентили, схеме, использующей микропроцессор, или на одиночном кристалле, содержащем электронные элементы или микропроцессоры. Например, примеры данного изобретения могут быть применены на практике посредством системы на кристалле (SOC), где каждый или многие из компонентов, проиллюстрированных на Фиг. 5, могут быть интегрированы в единую интегральную схему. Такое SOC-устройство может включать в себя один или более блоков обработки, графических блоков, блоков связи, блоков виртуализации системы и функциональность различных приложений, все из которых интегрированы (или "выжжены") на подложке кристалла, как единую интегральную схему. При функционировании посредством SOC, функциональностью, описанной в настоящем документе, можно оперировать посредством специализированной логики, интегрированной с другими компонентами вычислительного устройства 502 на единой интегральной схеме (кристалле). Примеры настоящего раскрытия могут также быть применены на практике с использованием других технологий, способных выполнять логические операции, такие как, например, И, ИЛИ и НЕТ, включающих в себя, но не ограниченных этим, механические, оптические, флюидные и квантовые технологии. В дополнение, примеры данного изобретения могут быть применены на практике внутри компьютера общего назначения или любых других схемах или системах.
[0065] Вычислительное устройство 502 может также иметь одно или более устройств(а) 512 ввода, таких как клавиатура, мышь, перо, устройство ввода звука, сенсорное устройство ввода, и т.д. Устройство(а) 514 вывода, такое как дисплей, динамики, принтер и т.д. может также быть включено. Вышеупомянутые устройства являются примерами и могут быть использованы другие. Вычислительное устройство 504 может включать в себя одно или более соединений 516 связи, обеспечивающих связь с другими вычислительными устройствами 518. Примеры подходящих соединений 516 связи включают в себя, но не ограничены этим, схему РЧ-передатчика, приемника и/или приемопередатчика; универсальную последовательную шину (USB), параллельные и/или последовательные порты.
[0066] Термин "считываемые компьютером носители", который используется в настоящем документе, может включать в себя компьютерные носители информации. Компьютерные носители информации могут включать в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные посредством любого способа или технологии для хранения информации, такой как считываемые компьютером инструкции, структуры данных или программные модули. Системная память 506, съемное устройство 509 хранения и несъемное устройство 510 хранения - все являются примерами компьютерных носителей информации (т.е., запоминающих устройств). Компьютерные носители информации могут включать в себя RAM, ROM, электрически стираемую программируемую постоянную память (EEPROM), flash-память или память другой технологии, CD-ROM, универсальные цифровые диски (DVD) или другое оптическое хранилище, магнитные кассеты, магнитную пленку, накопитель на магнитном диске или другие магнитные устройства хранения, или любое другое изделие производства, которое может быть использовано для хранения информации и к которому может быть осуществлен доступ посредством вычислительного устройства 502. Любые такие компьютерные носители информации могут быть частью вычислительного устройства 502. Компьютерные носители информации не включают в себя несущую волну или другой распространяемый или модулированный сигнал данных.
[0067] Среды связи могут быть осуществлены посредством считываемых компьютером инструкций, структур данных, программных модулей, или других данных в модулированном сигнале данных, как например, волна несущей или другой транспортный механизм, и содержат любые среды доставки информации. Термин "модулированный сигнал данных" может описывать сигнал, у которого одна или более его характеристик задаются или изменяются таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, среды связи могут включать в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводные среды, такие как акустические, радиочастотные (РЧ), инфракрасные и другие беспроводные среды.
[0068] Фиг. 6A и 6B иллюстрируют мобильное вычислительное устройство 600, например, мобильный телефон, интеллектуальный телефон, планшетный персональный компьютер, переносной компьютер и подобные, с которыми примеры данного изобретения могут быть применены на практике. Например, мобильное вычислительное устройство 600 может быть использовано для реализации клиентских узлов 202 и 208. Со ссылкой на Фиг. 6A, проиллюстрирован один пример мобильного вычислительного устройства 600 для реализации примеров. В базовой конфигурации, мобильное вычислительное устройство 600 является карманным компьютером, имеющим как элементы ввода, так и элементы вывода. Мобильное вычислительное устройство 600 обычно включает в себя дисплей 605 и одну или более кнопок 610 ввода, которые обеспечивают пользователю возможность ввода информации в мобильное вычислительное устройство 600. Дисплей 605 мобильного вычислительного устройства 600 может также функционировать как устройство ввода (например, дисплей с сенсорным экраном). Если включен, опциональный боковой элемент 615 ввода обеспечивает возможность дополнительного пользовательского ввода. Боковым элементом 615 ввода может быть вращательный переключатель, кнопка или элемент ручного ввода любого другого типа. В альтернативных примерах, мобильное вычислительное устройство 600 может включать в себя больше или меньше элементов ввода. Например, дисплей 605 может не быть сенсорным экраном в некоторых примерах. В еще одном альтернативном примере, мобильным вычислительным устройством 600, является портативная телефонная система, такая как сотовый телефон. Мобильное вычислительное устройство 600 может также включать в себя опциональную клавишную панель 635. Опциональной клавишной панелью 635 может быть физическая клавишная панель или "программная" клавишная панель, сгенерированная на дисплее с сенсорным экраном. В различных примерах, элементы вывода включают в себя дисплей 605 для показа графического пользовательского интерфейса (GUI), визуальный индикатор 620 (например, светоизлучающий диод), и/или аудиопреобразователь 625 (например, динамик). В некоторых примерах, мобильное вычислительное устройство 600 включает в себя вибрационный преобразователь для предоставления пользователю тактильной обратной связи. В еще одном примере, мобильное вычислительное устройство 600 включает в себя порты ввода и/или вывода, такие как аудиовход (например, гнездо микрофона), аудиовыход (например, гнездо наушников), и видеовыход (например, HDMI-порт) для отправки сигналов на внешнее устройство или приема сигналов от него.
[0069] Фиг. 6B является блок-схемой, иллюстрирующей архитектуру одного примера мобильного вычислительного устройства. То есть, мобильное вычислительное устройство 600 может включать в себя систему (т.е., архитектуру) 602 для реализации некоторых примеров. В одних примерах, система 602 реализована как "интеллектуальный телефон", способный выполнять одно или более приложений (например, браузер, электронную почту, ведение календаря, менеджеры контактов, клиенты передачи сообщений, игры и клиенты/проигрыватели медиаданных). В некоторых примерах, система 602 интегрирована как вычислительное устройство, такое как интегрированный персональный цифровой помощник (PDA) и беспроводной телефон.
[0070] Одна или более прикладных программ 666 могут быть загружены в память 662 и выполняться в операционной системе 664 или в ассоциации с ней. Примеры прикладных программ включают в себя программы набора телефонного номера, программы электронной почты, программы управления личной информацией (PIM), программы обработки текста, программы электронных таблиц, программы Интернет-браузера, программы передачи сообщений и т.д. Система 602 также включает в себя область 668 энергонезависимого хранилища внутри памяти 662. Область 668 энергонезависимого хранилища может быть использована для хранения постоянной информации, которая не должна быть потеряна, если система 602 обесточивается. Прикладные программы 666 могут использовать и хранить информацию в области 668 энергонезависимого хранилища, такую как электронная почта или другие сообщения, используемые приложением электронной почты и подобное. Приложение синхронизации (не показано) также находится в системе 602 и запрограммировано взаимодействовать с соответствующим приложением синхронизации, находящимся на хост-компьютере, для поддержания информации, хранящейся в области 668 энергонезависимого хранилища, в синхронизации с соответствующей информацией, хранящейся на хост-компьютере. Как должно быть понятно, другие приложения могут быть загружены в память 662 и выполняться на мобильном вычислительном устройстве 600, включающие в себя приложение 204, менеджер 206 IO и другую утилиту 210, описанные в настоящем документе.
[0071] Система 602 имеет блок 670 электропитания, который может быть реализован как одна или более батарей. Блок 670 электропитания может дополнительно включать в себя внешний источник электропитания, такой как AC-адаптер или питаемая электроэнергией док-станция, которая дополняет или перезаряжает батареи.
[0072] Система 602 может включать в себя порт 678 периферийного устройства, который выполняет функцию способствования возможности соединения между системой 602 и одним или более периферийными устройствами. Передачи на порт 672 периферийного устройства радиосвязи и от него проводятся под управлением операционной системы 664. Другими словами, связь, принимаемая портом 678 периферийного устройства, может быть распространена на прикладные программы 666 посредством операционной системы 664, и наоборот.
[0073] Система 602 может также включать в себя средство 672 радиосвязи, которое выполняет функцию передачи и приема радиочастотной связи. Средство 672 радиосвязи способствует возможности беспроводного соединения между системой 602 и "внешним миром", посредством оператора связи или поставщика услуг. Передачи на средство 672 радиосвязи и от него проводятся под управлением операционной системы 664. Другими словами, связь, принимаемая средством 672 радиосвязи, может быть распространена на прикладные программы 666 посредством операционной системы 664, и наоборот.
[0074] Визуальный индикатор 620 может быть использован для предоставления визуальных уведомлений, и/или аудиоинтерфейс 674 может быть использован для произведения слышимых уведомлений посредством аудиопреобразователя 625. В проиллюстрированном примере, визуальный индикатор 620 является светоизлучающим диодом (LED), и аудиопреобразователь 625 является динамиком. Эти устройства могут быть напрямую соединены с блоком 670 электропитания, так чтобы при активации оставались включенными в течение продолжительности, продиктованной механизмом уведомления, даже если процессор 660 и другие компоненты могут отключиться для сбережения электроэнергии батареи. LED может быть запрограммирован оставаться включенным бессрочно, пока пользователь не предпримет действие для указания включенного статуса устройства. Аудиоинтерфейс 674 используется для предоставления слышимых сигналов пользователю и приема слышимых сигналов от него. Например, в дополнение к соединению с аудиопреобразователем 625, аудиоинтерфейс 674 может также быть соединен с микрофоном для приема слышимого ввода, так чтобы способствовать телефонному разговору. В соответствии с примерами настоящего изобретения, микрофон может также служить в качестве аудиодатчика для способствования управлению уведомлениями, как будет описано ниже. Система 602 может дополнительно включать в себя видеоинтерфейс 676, который обеспечивает возможность функционирования встроенной камеры 630 для записи неподвижных изображений, видеопотока и подобного.
[0075] Мобильное вычислительное устройство 600, реализующее систему 602, может иметь дополнительные признаки или функциональность. Например, мобильное вычислительное устройство 600 может также включать в себя дополнительные устройства хранения данных (съемные и/или несъемные), такие как магнитные диски, оптические диски или ленту. Такое дополнительное хранилище проиллюстрировано на Фиг. 6B посредством области 668 энергонезависимого хранилища.
[0076] Данные/информация, сгенерированные или захваченные посредством мобильного вычислительного устройства 600 и хранящиеся посредством системы 602, могут храниться локально на мобильном вычислительном устройстве 600, как описано выше, или данные могут храниться на любом числе носителей информации, к которым может быть осуществлен доступ устройством посредством средства 672 радиосвязи или посредством проводного соединения между мобильным вычислительным устройством 600 и отдельным вычислительным устройством, ассоциированным с мобильным вычислительным устройством 600, например, серверным компьютером в распределенной вычислительной сети, такой как Интернет. Как должно быть понятно, к таким данным/информации может быть осуществлен доступ через мобильное вычислительное устройство 600 посредством средства 672 радиосвязи или посредством распределенной вычислительной сети. Аналогично, такие данные/информация могут быть с легкостью перенесены между вычислительными устройствами для хранения и использования согласно хорошо известным средствам переноса и хранения данных/информации, включающим в себя системы электронной почты и совместного использования общих данных/информации.
[0077] Фиг. 7 иллюстрирует один пример архитектуры системы для предоставления приложения, которое надежно осуществляет доступ к целевым данным в системе хранения и справляется со сбоями связи, одному или более клиентским устройствам, как описано выше. Целевые данные, к которым осуществляется доступ, с которыми взаимодействуют, или редактируют совместно с приложением 204, менеджер 206 IO, другой утилитой 210 и системой 214 хранения, могут храниться в разных каналах связи или других типах хранилища. Например, различные документы могут храниться с использованием службы 722 каталогов, веб-портала 724, почтовой службы 726, хранилища 728 службы мгновенной передачи сообщений или сайта 730 социальной сети. Приложение 204, менеджер 206 IO, другая утилита 210, и система 214 хранения могут использовать любые из этих типов систем или подобные для обеспечения возможности использования данных, как описано в настоящем документе. Сервер 720 может предусматривать систему 214 хранения для использования клиентскими узлами 202 и 208, функционирующую на основном вычислительном устройстве 502 и мобильном(ых) устройстве(ах) 600 посредством сети 715. В качестве примера, сеть 715 может содержать Интернет или любой другой тип локальной или глобальной сети, и клиентские узлы 202 и 208 могут быть реализованы как вычислительное устройство 502, осуществленное в виде персонального компьютера, планшетного вычислительного устройства, и/или посредством мобильного вычислительного устройства 600 (например, интеллектуального телефона). Любой из этих вариантов осуществления клиентского вычислительного устройства 502 или 600 может получить контент из хранилища 716.
[0078] Среди других примеров, настоящее раскрытие представляет системы и способы для указывания, посредством приложения, что о сбое во время сеанса должно быть сообщено приложению; отправки первого запроса доступа для целевых данных системе хранения, причем первый запрос доступа ассоциирован с первым идентификатором; приема первого ответа доступа, предоставляющего разрешение на доступ к целевым данным; приема уведомления о первом сбое; на основе уведомление о первом сбое, приостановки приложения; возобновления приложения; отправки запроса возобновления для целевых данных системе хранения, причем запрос возобновления ассоциирован с первым идентификатором; и приема ответа возобновления, предоставляющего разрешение на доступ к целевым данным. В примерах, сбой содержит по меньшей мере одно из: разъединения с системой хранения, размонтирования файловой системы, ассоциированной с системой хранения, или перезагрузки системы хранения. В дополнительных примерах, первый идентификатор включается в первый запрос доступа. В дополнительных примерах, указывание содержит предоставление указания менеджеру ввода/вывода (IO), что запросы IO, которые задерживаются из-за сбоя во время сеанса, должны быть сообщены приложению, если не завершены в пределах обозначенного периода времени. В дополнение, прием уведомления о первом сбое может включать в себя прием уведомления, что второй запрос доступа не был завершен. К тому же, приостановка приложения может включать в себя приостановку операций IO и соответствующей обработки. Дополнительно, системы и способы могут включать в себя завершение кэшированного запроса записи, который не был завершен до сбоя.
[0079] Дополнительные описания в настоящем документе раскрывают системы и способы для приема первого запроса доступа для целевых данных, причем целевые данные хранятся системой хранения, и первый запрос доступа ассоциирован с идентификатором запроса; сохранения идентификатора запроса в постоянном хранилище как первого сохраненного идентификатора; предоставления разрешения по первому запросу доступа для целевых данных; после сбоя, приема запроса возобновления для целевых данных, причем запрос возобновления ассоциирован с идентификатором запроса; определения, изменились ли целевые данные с момента сбоя, посредством сравнения идентификатора запроса в запросе возобновления с одним или более идентификаторами в постоянном хранилище; когда целевые данные не изменились с момента сбоя, предоставления разрешения по запросу возобновления для целевых данных; и когда целевые данные изменились с момента сбоя, отклонения запроса возобновления. В примерах, система хранения является совместно используемой файловой системой в серверном кластере, и определение, изменились ли целевые данные с момента сбоя, содержит удаление сохраненного первого идентификатора из постоянного хранилища до приема запроса возобновления. К тому же, в примерах, сбой содержит по меньшей мере одно из: прерывания соединения, размонтирования файловой системы, ассоциированной с системой хранения, или перезагрузки системы хранения. В дополнительных примерах, системы и способы содержат блокировку целевых данных; и после предоставления разрешения по первому запросу доступа, снятие блокировки в отношении целевых данных без удаления первого идентификатора из постоянного хранилища. В дополнение, в примерах, блокировка в отношении целевых данных продолжается в течение первого периода времени, и первый период времени может быть нулевым.
[0080] Настоящее раскрытие также включает в себя систему, включающую в себя по меньшей мере один процессор, выполненный с возможностью исполнения исполняемых компьютером инструкций; по меньшей мере один считываемый компьютером носитель информации, хранящий исполняемые компьютером инструкции, которые при исполнении по меньшей мере одним процессором, обеспечивают систему хранения, выполненную с возможностью: приема первого запроса доступа для целевых данных, причем целевые данные хранятся системой хранения, и первый запрос доступа включает в себя идентификатор запроса; сохранения идентификатора запроса в постоянном хранилище как первого сохраненного идентификатора; предоставления разрешения по первому запросу доступа для целевых данных; после сбоя, приема запроса возобновления для целевых данных, причем запрос возобновления включает в себя идентификатор запроса и включает в себя флаг запроса возобновления; определения, изменились ли целевые данные с момента сбоя, посредством сравнения идентификатора запроса в запросе возобновления с одним или более идентификаторами в постоянном хранилище; когда целевые данные не изменились с момента сбоя, предоставления разрешения по запросу возобновления для целевых данных; и когда целевые данные изменились с момента сбоя, отклонения запроса возобновления. В примерах, определение, изменились ли целевые данные с момента сбоя, содержит удаление сохраненного первого идентификатора из постоянного хранилища до приема запроса возобновления. В дополнение, сбой может содержать по меньшей мере одно из: прерывания соединения, размонтирования файловой системы, ассоциированной с системой хранения, или перезагрузки системы хранения. К тому же, система хранения может быть совместно используемой файловой системой в серверном кластере. В дополнение, блокировка в отношении целевых данных может продолжаться в течение первого периода времени, и первый период времени может быть нулевым.
[0081] В этом описании была сделана ссылка на термин "один пример" или "пример", означающий, что конкретный описанный признак, структура или характеристика включена по меньшей мере в один пример. Таким образом, использование таких фраз может относиться более, чем лишь к одному примеру. Кроме того, описанные признаки, структуры или характеристики могут быть объединены любым подходящим образом в одном или более примерах.
[0082] Однако, специалист в соответствующей области техники может понять, что примеры могут быть применены на практике без одной или более из конкретных подробностей, или с помощью других способов, ресурсов, материалов и т.д. В других случаях, хорошо известные структуры, ресурсы или операции не были показаны или описаны подробно, лишь для обозрения неясных аспектов данных примеров.
[0083] Хотя были проиллюстрированы и описаны примерные примеры и приложения, следует понимать, что примеры не ограничиваются точной конфигурацией и ресурсами, описанными выше. Различные модификации, изменения и вариации, понятные специалистам в данной области техники, могут быть внесены в компоновку, операцию и подробности способов и систем, раскрытых в настоящем документе, без отступления от объема заявленных примеров.