Проверка NFS и AFS кеша
Клиенты NFS повторно проверяют блоки кэша при доступе, оценивая T-Tc AFS повторно проверяет свои файлы кэша после периодического времени T, при открытии или при перезапуске. Что происходит, когда эти вызовы повторной проверки теряются в сети? Когда мы предполагаем жесткое монтирование с NFS, блокирует ли клиент NFS ожидание ответа на вызов getattr или мы можем пропустить эту проверку на некоторое время, чтобы продолжить работу? То же самое для AFS, блокирует ли он ожидание проверки или мы можем продолжать работать?
1 ответ
Модель когерентности кеша AFS, принятая OpenAFS и AuriStorFS, немного отличается от описанной в этом вопросе.
Каждый объект, сохраненный в / afs, имеет
- Данные: поток файлов, содержимое каталога, цель точки монтирования или цель символической ссылки.
- Метаданные: размер, создатель, владелец, группа, режим Unix, количество ссылок, временные метки, идентификатор родителя, состояние блокировки, список управления доступом и номер версии данных *
* Номер версии данных "для объекта увеличивается каждый раз при изменении данных объекта, но не при изменении метаданных.
Клиенту, также известному как менеджер кэша, разрешено кэшировать данные и метаданные для объекта, но разрешается рассматривать его как обновленный, только если он получил обещание * обратного вызова от файлового сервера. Это время жизни обещания обратного вызова это определяет, как часто менеджер кэша должен выдавать RPC FetchStatus на файловый сервер. Пока не истек срок действия обратного вызова, менеджер кэша может использовать кэшированные данные. Если файловый сервер выдает RPC обратного вызова для менеджера кэша, Обещание отменяется, и диспетчер кэша должен получать обновленную информацию о состоянии.
Канал обратного вызова от файлового сервера к менеджеру кэша в исходной файловой системе Andrew и OpenAFS не прошел проверку подлинности. Поэтому его нельзя использовать для передачи фактических данных или изменения метаданных. Диспетчер кэша должен извлечь это через свое собственное соединение, которое потенциально аутентифицировано и зашифровано. Одним из отличий между AuriStorFS и более ранними вариантами AFS является использование безопасных каналов обратного вызова.
Как только менеджер кэша получает последние метаданные, он может сравнить текущий номер версии данных с версией данных, которые были кэшированы. Если версия не изменилась, кэшированные данные все еще действительны. В противном случае устаревшие данные должны быть удалены из кэша, а обновленные данные извлечены.
Одно из свойств модели когерентности кэша AFS заключается в том, что файловая система рассматривается как платформа для сериализованного обмена сообщениями. Существует фундаментальное требование, что если машина A активно использует файл, а машина B хочет изменить файл и затем отправить внешнее сообщение на машину A, чтобы прочитать обновленный файл, то обновление файла должно прибыть до сообщения о внешнем канале., Это свойство гарантируется тем, что все обещания обратного вызова нарушаются до того, как RPC, изменивший файл, завершит работу с эмитентом.
Вы подняли вопрос о том, что происходит, когда не удается установить соединение между клиентом и файловым сервером. Файловый сервер в течение некоторого времени будет пытаться отправить RPC обратного вызова, но не будет блокироваться бесконечно. Вместо этого он поставит в очередь отложенное сообщение обратного вызова для клиента, которого он не может достичь, и завершит RPC для эмитента. В следующий раз, когда клиент, потерявший соединение, свяжется с файловым сервером, все его операции будут блокироваться, пока не будут доставлены все отложенные обратные вызовы.
В течение периода времени, когда соединение было потеряно, клиент может попытаться установить связь с другим файловым сервером, который поддерживает реплику данных. Если их нет, а том, к которому осуществляется доступ, смонтирован жестко, то клиент будет блокироваться на неопределенный срок. Если он не смонтирован жестко, то для всех выпущенных сетевых RPC истечет время ожидания, и сбой будет возвращен приложению-источнику.
Я надеюсь, что это удовлетворительно описывает поведение файловых систем семейства AFS.