Технические вопросы и ответы QA1242

Разработка для VFS

Q: Apple поддерживает разработку внешних файловых систем (плагины VFS) на Mac OS X? Где я могу найти информацию о разработке такой файловой системы?

A: Apple поддерживает разработку внешних файловых систем (плагины VFS) на Mac OS X? Где я могу найти информацию о разработке такой файловой системы?

Ответ зависит от того, какую файловую систему Вы разрабатываете.

Листовые файловые системы

Листовая файловая система работает независимо от других файловых систем. Листовые файловые системы включают:

Apple поддерживает разработку листовых файловых систем для всех версий Mac OS X. Однако правила изменились существенно, и к лучшему, в Mac OS X 10.4 Тайгера.

До введения Mac OS X 10.4 Тигров части BSD ядра Mac OS X не были спроектированы для совместимости на уровне двоичных кодов. Реализация плагина VFS потребовала глубоких знаний внутренностей ядра, и получающийся продукт встроил то знание, делая его очень хрупким. Малейшее изменение в ядре (переупорядочивающий поля в структуре, например) повредило бы все плагины VFS.

С Mac OS X 10.4 Тигров Apple решил эту проблему путем представления Kernel Programming Interface (KPI) VFS. Этот KPI изолирует Ваш плагин VFS от изменений ядра. Например, Вы больше поля доступа в структурах ядра непосредственно; скорее Вы вызываете функции средства доступа, предоставляющиеся KPI. При помощи этого KPI можно разработать плагин VFS с ожиданием, что это будет совместимо с будущими системами.

Это походит на нирвану файловой системы, правильно? Увы, существует все еще несколько вещей волноваться о.

При разработке плагина VFS можно счесть следующие ресурсы полезными.

Если у Вас есть технические вопросы, существует множество списков рассылки для свободной основанной на сообществе поддержки (я рекомендую список рассылки дарвинского ядра), и Техническая поддержка Разработчика Apple для оплаченной поддержки.

Укладка файловых систем

Файловая система укладки (иногда называемый файловой системой фильтра) находится поверх другой файловой системы и изменяет свое поведение в некотором роде. Каноническим примером файловой системы укладки является файловая система шифрования. Вы могли сложить эту файловую систему поверх любой существующей файловой системы для обеспечения поддержки шифрования.

Apple не поддерживает разработку укладки плагинов VFS на Mac OS X (r. 4383626). Мы заняли эту позицию, потому что по нашему мнению не возможно создать укладку плагин VFS что:

Если у Вас есть проблема, которая может только быть решена через файловую систему укладки, сообщите нам путем отправки по почте Технической поддержки Разработчика. В то время как мы не можем поддерживать Вашу разработку, мы интересуемся сбором информации о том, в чем разработчики нуждаются и почему. Эта обратная связь будет вести наш долгосрочный подход к этому вопросу. Мы можем также быть в состоянии предложить альтернативный проект, не требующий укладки.

Наконец, существует много сторонних разработчиков, работающих в этой области. Если Вы будете абсолютно полны решимости разработать неподдерживаемую укладку плагин VFS, то Вы найдете некоторую справку в Интернете.

Альтернативы

Разработка плагина VFS для Mac OS X трудна. Существует много факторов, способствующих трудности:

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

Существует два известных метода для минимизации суммы кода ядра, который необходимо записать.

Наконец, Mac OS X обеспечивает определенный APIs для решения проблем, которые могли бы иначе потребовать файловой системы укладки.



История версии документа


ДатаПримечания
22.12.2006

Добавленные ссылки к EmptyFS и MFSLives, и документации Kauth и примеру кода. Добавленный число ошибки для документации VFS.

16.03.2006

Добавленное число ошибки для отслеживания укладки требование VFS.

24.05.2005

Обновление для Mac OS X 10.4 тигров.

26.03.2003

Новый документ, описывающий позицию Apple при разработке внешних файловых систем (плагины VFS) для Mac OS X.