[sisyphus] I: py9p-1.0.5-alt4 (+fuse9p)

Peter V. Saveliev peet на altlinux.ru
Сб Ноя 3 23:21:53 MSK 2012


…

В Сизиф отправилась очередная сборка библиотеки py9p. Библиотека
предоставляет как клиентский, так и серверный интерфейс. Начиная с
последних версий, отдельным подпакетом собирается fuse9p, это новый
«from scratch» FUSE-коннектор для протокола 9p.

В двух словах про протокол: чрезвычайно экономичный в плане кода
протокол RPC и файловой системы. Несколько избыточен в плане траффика.
Рассчитан на распределённые системы, поэтому некоторые операции не
предусмотрены семантикой протокола (например, перемещение файла в 9p это
создание целевого файла, копирование туда содержимого и удаление
старого). Чрезвычайно удобен для встраивания в разнообразные программы
(см. также pyvfs)

В двух словах про fuse9p: несмотря на множество существующих реализаций
v9fs для Linux, ни одна из них, на мой взгляд, не может считаться
удовлетворительной. Ошибки клиента из набора Plan9 from User Space, это
отдельная тема, потому вот некоторые отличия нового fuse9p от ядерной
реализации (mount -t 9p):

* ядро не поддерживает аутентификацию ни в каком виде, fuse9p умеет pki
(обычные ssh rsa-ключи) и планируется поддержка sk1/2

* даже недоделанный микрокэш, учитывающий особенности семантики обоих
протоколов, и fuse, и 9p, даёт чудовищный прирост в скорости при чтении
каталогов: если ядерная реализация может тратить на листинг директории
из пары сотен файлов на тест-стенде секунды (sic!), то у fuse9p на это
же уходят доли секунды, разница иногда даже на порядки.

* fuse9p, в отличие от ядерного модуля, не подвисает при ошибках сети,
при недоступности сервера, при ошибках протокола etc; любые такие ошибки
в сочетании с таймаутом на операции у fuse9p приводят всего лишь к
повторному соединению с сервером либо к выходу, если соединение невозможно.

Напоследок мелкий шрифт. Поскольку fuse9p изначально писался лишь для
проверки гипотезы, что ядерная реализация ФС 9p может иметь менее кривые
альтернативы, то некоторый функционал пока отсутствует. Буду дописывать
в фоне. Но если он вдруг кому понадобится срочно — шлите бандероли.

-- 
Peter V. Saveliev


Подробная информация о списке рассылки Sisyphus