WikiDer > Виртуальная файловая система

Virtual file system

А виртуальная файловая система (VFS) или же переключатель виртуальной файловой системы это абстрактный слой поверх более конкретного файловая система. Цель VFS - предоставить клиентским приложениям единообразный доступ к различным типам конкретных файловых систем. VFS может, например, использоваться для доступа местный и сетевые устройства хранения прозрачно, так что клиентское приложение не заметит разницы. Его можно использовать для устранения различий в Windows, классическая Mac OS/macOS и Unix файловые системы, чтобы приложения могли обращаться к файлам в локальных файловых системах этих типов, не зная, к какому типу файловой системы они обращаются.

VFS определяет интерфейс (или «контракт») между ядро и конкретная файловая система. Таким образом, легко добавить в ядро ​​поддержку новых типов файловых систем, просто выполнив контракт. Условия контракта могут несовместимо меняться от выпуска к выпуску, что потребует перекомпиляции поддержки конкретной файловой системы и, возможно, изменения перед перекомпиляцией, чтобы позволить ей работать с новым выпуском операционной системы; либо поставщик операционной системы может вносить в контракт только обратно совместимые изменения, чтобы конкретная поддержка файловой системы, созданная для данного выпуска операционной системы, работала с будущими версиями операционной системы.

Реализации

Положение слоя VFS в различных частях Ядро Linuxстек хранилища.[1]

Один из первых механизмов виртуальной файловой системы на Unix-подобный системы были введены Sun Microsystems в SunOS 2.0 в 1985 году.[2] Это позволило системным вызовам Unix получить доступ к локальным УФС файловые системы и удаленные NFS файловые системы прозрачно. По этой причине поставщики Unix, которые лицензировали код NFS от Sun, часто копировали дизайн Sun VFS. К нему можно было подключить и другие файловые системы: там была реализация MS-DOS ТОЛСТЫЙ файловая система, разработанная в Sun, которая подключается к SunOS VFS, хотя она не поставлялась как продукт до SunOS 4.1. Реализация SunOS была основой механизма VFS в System V Выпуск 4.

Джон Хайдеманн разработал штабелирование VFS под SunOS 4.0 для экспериментальных Файловая система фикуса. Этот дизайн предусматривал повторное использование кода среди типов файловых систем с разной, но схожей семантикой (например, файловая система с шифрованием может повторно использовать весь код именования и управления хранением файловой системы без шифрования). Хайдеманн адаптировал эту работу для использования в 4.4BSD как часть его Тезис исследование; потомки этого кода лежат в основе реализации файловой системы в современных производных BSD, включая macOS.

Другие виртуальные файловые системы Unix включают переключатель файловой системы в System V, выпуск 3, общая файловая система в Ultrix, а VFS в Linux. В OS / 2 и Майкрософт Виндоус, механизм виртуальной файловой системы называется Устанавливаемая файловая система.

В Файловая система в пространстве пользователя (FUSE) механизм позволяет пользовательское пространство код для подключения к механизму виртуальной файловой системы в Linux, NetBSD, FreeBSD, OpenSolaris, и macOS.

В Microsoft Windows виртуальные файловые системы также могут быть реализованы через пользовательскую среду. Расширения пространства имен оболочки; однако они не поддерживают доступ к файловой системе самого низкого уровня. интерфейсы прикладного программирования в Windows, поэтому не все приложения будут иметь доступ к файловым системам, реализованным как расширения пространства имен. КИО и GVfs/GIO предоставить аналогичные механизмы в KDE и ГНОМ среды рабочего стола (соответственно) с аналогичными ограничениями, хотя в них можно использовать методы FUSE и, таким образом, легко интегрировать в систему.

Однофайловые виртуальные файловые системы

Иногда виртуальная файловая система относится к файлу или группе файлов (не обязательно внутри конкретной файловой системы), которые действуют как управляемый контейнер, который должен обеспечивать функциональность конкретной файловой системы за счет использования программного обеспечения. Примеры таких контейнеров: CBFS Хранилище или однофайловая виртуальная файловая система в эмуляторе вроде PCTask или так называемый WinUAE, Oracle VirtualBox, Microsoft Виртуальный ПК, VMware.

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

Реализация однофайловых виртуальных файловых систем

Прямые примеры однофайловых виртуальных файловых систем включают эмуляторы, такие как PCTask и WinUAE, которые инкапсулируют не только данные файловой системы, но и эмулируют структуру диска. Это позволяет легко относиться к установке ОС, как и к любому другому программному обеспечению, - переносить ее со съемного носителя или по сети.

PCTask

В Amiga эмулятор PCTask подражал Intel ПК 8088 машина на базе 4,77МГц (а позже 80486SX с тактовой частотой 25 МГц). Пользователи PCTask могли создать файл большого размера в файловой системе Amiga, и к этому файлу можно было бы получить виртуальный доступ из эмулятора, как если бы это был настоящий жесткий диск ПК. Файл может быть отформатирован в файловой системе FAT16 для хранения обычных файлов MS-DOS или Windows.[1][2]

WinUAE

В ОАЭ за Windows, WinUAE, позволяет обрабатывать большие отдельные файлы в Windows как файловые системы Amiga. В WinUAE этот файл называется жесткий файл.[3]

ОАЭ также могут обрабатывать каталог в файловой системе хоста (Windows, Linux, macOS, AmigaOS) как файловую систему Amiga.[4]

Смотрите также

  • 9P (протокол) - протокол распределенной файловой системы, который отображается непосредственно на уровень VFS Plan 9, делая доступ ко всей файловой системе прозрачным для сети
  • Синтетическая файловая система - иерархический интерфейс для нефайловых объектов, которые выглядят так, как если бы они были обычными файлами в дереве файловой системы на диске

Примечания

  1. ^ Эмуляция на Амиге Сравнение эмуляторов PCX и PCTask, Amiga PC.
  2. ^ Смотрите также Эта статья объясняя, как это работает PCTask.
  3. ^ Помощь по WinUAE (См. Раздел Hardfile).
  4. ^ Помощь по WinUAE (См. Раздел «Добавить каталог»)

Рекомендации

  1. ^ Вернер Фишер; Георг Шёнбергер (01.06.2015). «Схема стека хранилища Linux». Thomas-Krenn.AG. Получено 2015-06-08.
  2. ^ Клейман, Стив Р. (июнь 1986 г.). «Vnodes: архитектура для файловых систем различных типов в Sun UNIX» (PDF). USENIX Лето. 86: 238–247. Получено 31 декабря 2016.

внешняя ссылка