ОБЕСПЕЧЕНИЕ ПРОЗРАЧНОЙ ОТРАБОТКИ ОТКАЗА В ФАЙЛОВОЙ СИСТЕМЕ

1. Реализуемый компьютером способ сбора информации о состоянии файловой системы для обеспечения возобновления соединений, содержащий этапы, на которых:
принимают от клиента запрос на доступ к удаленному ресурсу, сохраненному на сервере;
определяют идентификатор, который идентифицирует клиентский сеанс, связанный с запросом;
создают запись возобновления, доступную для поиска по извлеченному идентификатору, которая связывает информацию о состоянии, созданную запрошенными клиентом операциями, с извлеченным идентификатором;
принимают файловую операцию от клиента, которая запрашивает доступ к файлу, доступному посредством сервера;
сохраняют информацию о состоянии возобновления в созданной записи возобновления, которая предоставляет информацию для возобновления принятой файловой операции, если клиент теряет соединение с сервером;
выполняют запрошенную файловую операцию;
обновляют сохраненную информацию о состоянии возобновления в созданной записи возобновления на основе результата выполненной файловой операции; и
отправляют клиенту ответ, который указывает результат запрошенной файловой операции,
при этом предыдущие этапы выполняются по меньшей мере одним процессором.
2. Способ по п.1, в котором упомянутый запрос доступа включает в себя один или несколько параметров, включающих в себя ключ возобновления, который идентифицирует клиентский сеанс на нескольких возможных соединениях, если соединение терпит неудачу, при этом ключ возобновления является по меньшей мере частью упомянутого определенного идентификатора.
3. Способ по п.1, дополнительно содержащий этап, на котором при отсоединении клиента от сервера принимают на отказоустойчивом сервере новый запрос доступа, который сервер может сопоставить с исходным запросом доступа, чтобы помочь отказоустойчивому серверу быстрее ответить клиенту после сбоя соединения путем сопоставления информации о состоянии, поддерживаемой сервером между несколькими клиентскими соединениями.
4. Способ по п.1, в котором сервер с сетевой файловой системой (NFS) определяет упомянутый идентификатор автоматически без приема от клиента ключа возобновления.
5. Способ по п.1, в котором извлеченный идентификатор является ключом возобновления блока сообщений сервера (SMB), который клиент предоставляет для долговременных дескрипторов, которые позволяют возобновление сеансов отключенных.
6. Способ по п.1, в котором при создании записи возобновления сохраняют запись возобновления в местоположении, внешнем для сервера, обрабатывающего текущий запрос доступа, так что если сервер выходит из строя, другой сервер сможет считать запись для возобновления любых операций от клиента и действовать вместо исходного сервера.
7. Способ по п.1, в котором прием файловой операции содержит запрос на выполнение операции, выбранной из группы, состоящей из открытия файла, закрытия файла, чтения файла, записи в файл, получения аренды на файл и получения блокировки на файл.
8. Способ по п.1, дополнительно содержащий этап, на котором при отсоединении клиента от сервера загружают в отказоустойчивый сервер сохраненную запись возобновления, чтобы клиент мог подсоединиться к отказоустойчивому серверу и продолжить любые предыдущие операции.
9. Способ по п.1, в котором выполнение запрошенной файловой операции изменяет состояние, сохраненное сервером, при этом при обновлении сохраненной информации о состоянии возобновления собирают измененное состояние.
10. Способ по п.1, в котором при обновлении сохраненной информации о состоянии возобновления поддерживают актуальное представление о состоянии сервера в записи возобновления, что позволяет другому серверу восстановить состояние и обработать запросы клиента вместо исходного сервера, не требуя от клиента восстановить по меньшей мере часть информации о состоянии.
11. Компьютерная система для обеспечения прозрачной отработки отказа для клиентов в файловой системе, содержащая:
процессор и память, сконфигурированные для исполнения программных команд, реализованных в рамках следующих компонентов:
компонент сбора состояния, который создает запись о состоянии для каждого дескриптора файла и собирает информацию о состоянии, когда клиент запрашивает операции с использованием дескриптора файла;
компонент хранения состояния, который сохраняет собранную информацию о состоянии в связи с идентификатором сеанса, предоставленным клиентом;
хранилище данных состояния, которое на постоянной основе хранит информацию о состоянии файловой системы, которую возобновляющий сервер использует для воссоздания информации о состоянии, сохраненной неисправным сервером;
компонент обнаружения возобновления, который обнаруживает условие, которое делает неисправный сервер недоступным, и сообщает возобновляющему серверу, чтобы тот действовал вместо неисправного сервера;
компонент извлечения состояния, который извлекает сохраненную информацию о состоянии из местоположения, доступного возобновляющему серверу, где информация о состоянии позволяет возобновляющему серверу возобновить любые ранее запрошенные операции файловой системы, которые были прерваны обнаруженным условием сбоя; и
компонент восстановления состояния, который загружает извлеченную информацию о состоянии в возобновляющий сервер, чтобы возобновляющий сервер мог продолжить операции, ранее запрошенные клиентом.
12. Система по п.11, в которой компонент сбора состояния дополнительно сконфигурирован для функционирования на сервере и сохранения информации о состоянии внешним по отношению к серверу образом, чтобы к информации о состоянии можно было обращаться, если сервер недоступен.
13. Система по п.11, в которой компонент сбора состояния дополнительно сконфигурирован для приема ключа возобновления от клиента, когда клиент подсоединяется к серверу, и связывания собранной информации о состоянии с ключом возобновления в хранилище данных состояния.
14. Система по п.11, в которой хранилище данных состояния сохраняет и предоставляет информацию для возобновляющего сервера, который является тем же сервером, что и неисправный сервер, использующим другое соединение с клиентом.
15. Система по п.11, в которой хранилище данных состояния принимает информацию о состоянии, когда неисправный сервер выполняет операции, и при сбое предоставляет возобновляющему серверу доступ к ранее принятой информации о состоянии, чтобы возобновить состояние и продолжить выполнение любых операций, которые не были закончены.