Назад | Перейти на главную страницу

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

В протоколе CIFS / SMB я вижу, что существует 3 типа файловых дескрипторов: надежные, устойчивые и постоянные. В чем разница между ними?

  • Прочные ручки являются частью SMB 2.0
  • Упругие ручки являются частью SMB 2.1
  • Постоянные дескрипторы являются частью SMB 2.2, который теперь называется SMB3.

Мои основные рекомендации по следующим вопросам:

https://wiki.samba.org/index.php/SMB3_kernel_status

и хотя изначально это было для Samba3, в нем есть более подробная информация:

https://wiki.samba.org/index.php/Samba3/SMB2

Прочные дескрипторы файлов позволяют подключению к серверу SMB пережить кратковременный сбой в сети - стойкие дескрипторы не обязательно очищаются после завершения процесса открытия. Когда клиент пытается повторно подключиться, если блокировка (/ lease) все еще существует, он повторно подключается к файлу.

Но если другой клиент пытается открыть файл, oplock / lease нарушается, и первый клиент не может повторно подключиться.

Устойчивые дескрипторы файлов сохраняются, даже если oplock / lease нарушена, но, честно говоря, я не могу следить за всеми техническими деталями того, как это работает. В одной из ссылок ниже говорится, что разница между Durable и Resilient заключается в том, как создаются ручки - Устойчивый с помощью вызова контекста создания и устойчивый с помощью IOCTL. (Главное, что я не могу понять, - это то, как в это вписывается последовательность блокировок и воспроизведение, но не похоже, что это критическая разница между прочностью и отказоустойчивостью.)

Для постоянных ручек лучше ничего придумать не могу чем этот документ Samba:

Стойкие ручки для файлов - это прочные ручки для файлов с надежными гарантиями. Они запрашиваются с помощью долговечного большого двоичного объекта запроса на создание версии 2 с постоянным флагом, установленным в значение true. Сервер предоставляет постоянные дескрипторы только для общих ресурсов, которые помечены как CA (постоянно доступны).

Насколько я могу судить, они еще не реализованы в Samba, но цель состоит в том, чтобы поддерживать кластеризацию и непрерывную доступность, так что над этим работают.

Подробнее о постоянных дескрипторах ... Постоянные дескрипторы доступны на нескольких серверах одного кластера. Когда один сервер выходит из строя по какой-либо причине, клиентская машина может полупрозрачно продолжать использовать этот дескриптор через соединение с другим сервером. Вот почему реализация постоянных дескрипторов (в отличие от прочных и отказоустойчивых дескрипторов) выходит за рамки чисто SMB. Например, наше хранилище NQ ожидает, что полная семантика постоянных дескрипторов будет реализована в настраиваемой VFS, в то время как механизм SMB отвечает за соответствующий синтаксис.

Постоянный дескриптор Samba поддерживает состояние дескрипторов файлов, и даже если один из серверов в кластере выходит из строя, новый мастер может получить текущий дескриптор файла и продолжить ввод-вывод без каких-либо ошибок ввода-вывода.