[sisyphus] plan9 from user space

Peter V. Saveliev peet на altlinux.ru
Пн Июн 6 09:28:50 UTC 2011


On 06.06.2011 12:51, Paul Wolneykien wrote:
> 06.06.2011 02:23, Peter V. Saveliev пишет:
>>
>> В Сизиф ушёл пакет plan9-*. Как-нибудь доползёт.

<смотри совсем ниже />

>> plan9-devel — сорцы, хидеры, дебаггеры, компилятор и компания
>> plan9-man — ну, это понятно
>> plan9-troff — тоже понятно, +postscript
>> plan9-venti — весьма любопытный backup-сервер
> 
>   А что делает его любопытным?
> 
<skip />

Принцип хранения данных. Каждый блок в venti имеет адрес (score),
который есть SHA1-сумма его содержимого.

Собственно, на venti физиологически невозможно дублирование блоков с
одинаковым содержимым -- в силу природы адресации :) это позволяет
экономить место, а также упрощает COW-стратегию и прочие удалённые
операции с данными для надстроек над venti.

При этом сам venti ничего не знает про ФС, наружу он глядит с помощью
предельно простого RPC: read() и write(). Собственно, такая простота
характерна в целом для Plan9. Удаления данных на venti _нет_ . Вообще.
Это backup, to the end of story.

Разработано несколько файловых систем поверх venti, одна из них --
fossil, файловая система с возможностью версионирования данных.

Подробнее:

http://en.wikipedia.org/wiki/Venti
http://en.wikipedia.org/wiki/Fossil_%28file_system%29

<кусено сверху />

>>
>> plan9 — базовая система, с корнем в /usr/lib/plan9
>> plan9-9pfuse — FUSE-драйвер для 9pfs, ставится и работает сам по себе

Кстате, прошу обратить внимание на это хозяйство ^^^^^.

Собственно, в Сизифе теперь есть полный инструментарий для построения
9p-based систем -- есть простой cli клиент 9p (ixpc), есть питонический
фреймворк (py9p), есть нативные инструменты, портированные из plan9
(srv, 9fs и т.п. -- в пакете plan9).

А 9pfuse позволяет получить доступ к этим системам через обычный
механизм Linux VFS. В силу разницы идеологии 9p и FUSE доступ к первой
через вторую может быть очень задумчивым и небыстрым в части чтения
каталогов. Однако, если писать синтетические ФС с оглядкой на подобные
косяки (транслировать рекурсивный stat в простой read), то скорость
вполне приемлемая.

Хочу подчеркнуть слово _синтетические_ . 9p изначально создавался как
своеобразный RPC через FS (в Plan9 всё через FS). То есть можно довольно
незатейливо, буквально в несколько строчек, строить распределённые
userspace системы с экспортом интерфейса управления через простые
"текстовые" файлы a-la proc или sysfs.

Если кто не пересекался с Plan9, могу проиллюстрировать простым примером
-- в Plan9 через FS экспортирован tcp/ip стэк, т.е. работа с ним
возможна хоть из shell-скриптов, а туннелирование/VPN есть ничто иное
как монтирование tcp/ip стэка другой машины. Просто и цинично.

-- 
Peter V. Saveliev


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