Виртуальная файловая система
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( Октябрь 2009 г. ) |
Операционные системы |
---|
Общие особенности |
Виртуальная файловая система ( VFS ) или переключатель виртуальной файловой системы — это абстрактный уровень поверх более конкретной файловой системы . Цель VFS — предоставить клиентским приложениям единый доступ к различным типам конкретных файловых систем. Например, VFS можно использовать для прозрачного доступа к локальным и сетевым устройствам хранения данных, при этом клиентское приложение не заметит разницы. Его можно использовать для устранения различий в файловых системах Windows , классической Mac OS / macOS и Unix , чтобы приложения могли получать доступ к файлам в локальных файловых системах этих типов, не зная, к какому типу файловой системы они обращаются.
VFS определяет интерфейс (или «контракт») между ядром и конкретной файловой системой. Поэтому в ядро легко добавить поддержку новых типов файловых систем, просто выполнив контракт. Условия контракта могут несовместимо меняться от выпуска к выпуску, что потребует перекомпиляции конкретной поддержки файловой системы и, возможно, изменения перед перекомпиляцией, чтобы позволить ей работать с новой версией операционной системы; или поставщик операционной системы может внести в контракт только обратно совместимые изменения, чтобы конкретная поддержка файловой системы, созданная для данной версии операционной системы, работала с будущими версиями операционной системы.
Реализации [ править ]
Один из первых механизмов виртуальной файловой системы в Unix-подобных системах был представлен компанией Sun Microsystems в SunOS 2.0 в 1985 году. [2] Это позволило системным вызовам Unix прозрачно получать доступ к локальным файловым системам UFS и удаленным файловым системам NFS . По этой причине поставщики Unix, лицензировавшие код NFS у Sun, часто копировали дизайн Sun VFS. К нему можно было подключить и другие файловые системы: существовала реализация файловой системы MS-DOS FAT, разработанная в Sun, которая подключалась к SunOS VFS, хотя она не поставлялась как продукт до SunOS 4.1. Реализация SunOS легла в основу механизма VFS в System V Release 4 .
Джон Хайдеманн разработал стековую VFS под SunOS 4.0 для экспериментальной файловой системы Ficus . Эта конструкция предусматривала повторное использование кода среди типов файловых систем с различной, но похожей семантикой ( например , шифрованная файловая система могла повторно использовать весь код именования и управления хранилищем незашифрованной файловой системы). Хайдеманн адаптировал эту работу для использования в 4.4BSD в рамках своего диссертационного исследования; потомки этого кода лежат в основе реализаций файловой системы в современных производных BSD, включая macOS .
Другие виртуальные файловые системы Unix включают File System Switch в System V Release 3 , Generic File System в Ultrix и VFS в Linux . В OS/2 и Microsoft Windows механизм виртуальной файловой системы называется устанавливаемой файловой системой .
Механизм «Файловая система в пространстве пользователя » (FUSE) позволяет коду области пользователя подключаться к механизму виртуальной файловой системы в Linux, NetBSD , FreeBSD , OpenSolaris и macOS.
В Microsoft Windows виртуальные файловые системы также могут быть реализованы посредством расширений пространства имен оболочки пользователя ; доступа к файловой системе самого низкого уровня однако они не поддерживают интерфейсы прикладного программирования в Windows, поэтому не все приложения смогут получить доступ к файловым системам, реализованным как расширения пространства имен. KIO и GVfs / GIO предоставляют аналогичные механизмы в средах рабочего стола KDE и GNOME (соответственно) с аналогичными ограничениями, хотя их можно заставить использовать методы FUSE и, следовательно, плавно интегрировать в систему.
Однофайловые виртуальные файловые системы [ править ]
Иногда под виртуальной файловой системой понимается файл или группа файлов (не обязательно внутри конкретной файловой системы), которые действуют как управляемый контейнер, который должен обеспечивать функциональность конкретной файловой системы посредством использования программного обеспечения. Примерами таких контейнеров являются CBFS Storage или однофайловая виртуальная файловая система в эмуляторе типа PCTask или так называемом WinUAE , Oracle’s VirtualBox , Microsoft’s Virtual PC , VMware .
Основное преимущество файловой системы этого типа заключается в том, что она централизована и ее легко удалить. Однофайловая виртуальная файловая система может включать в себя все основные функции, ожидаемые от любой файловой системы (виртуальной или иной), но доступ к внутренней структуре этих файловых систем часто ограничивается программами, специально написанными для использования однофайловой виртуальной файловой системы. файловая система (вместо реализации через драйвер, обеспечивающий универсальный доступ). Еще одним серьезным недостатком является относительно низкая производительность по сравнению с другими виртуальными файловыми системами. Низкая производительность в основном связана со стоимостью перетасовки виртуальных файлов при записи или удалении данных из виртуальной файловой системы.
Реализация однофайловых виртуальных файловых систем [ править ]
Прямые примеры однофайловых виртуальных файловых систем включают эмуляторы, такие как PCTask и WinUAE, которые инкапсулируют не только данные файловой системы, но и эмулируют структуру диска. Это позволяет легко обращаться с установкой ОС, как с любым другим программным обеспечением, — переносить ее на съемном носителе или по сети.
PCTask [ править ]
Эмулятор Amiga PCTask 80486 эмулировал компьютер на базе Intel PC 8088 с тактовой частотой 4,77 МГц (а позже и SX с тактовой частотой 25 МГц). Пользователи PCTask могли создать файл большого размера в файловой системе Amiga, и к этому файлу можно было бы получить виртуальный доступ из эмулятора, как если бы это был настоящий жесткий диск ПК. Файл можно отформатировать в файловой системе FAT16 для хранения обычных файлов MS-DOS или Windows. [1] [2]
WinUAE [ править ]
UAE WinUAE для Windows , . , позволяет рассматривать большие отдельные файлы в Windows как файловые системы Amiga В WinUAE этот файл называется жестким файлом . [3]
ОАЭ также могут рассматривать каталог в файловой системе хоста ( Windows , Linux , macOS , AmigaOS ) как файловую систему Amiga. [4]
См. также [ править ]
- 9P (протокол) — протокол распределенной файловой системы, который напрямую сопоставляется с уровнем VFS Plan 9, что делает доступ ко всем файловым системам прозрачным для сети.
- Синтетическая файловая система - иерархический интерфейс для нефайловых объектов, которые выглядят как обычные файлы в дереве дисковой файловой системы.
Примечания [ править ]
- ^ Эмуляция на Amiga Сравнение PCX и PCTask, эмуляторов ПК Amiga.
- ^ См. также эту статью, объясняющую, как работает PCTask.
- ^ Справка о WinUAE (см. раздел «Жесткий файл»).
- ^ Справка о WinUAE (см. раздел «Добавление каталога»)
Ссылки [ править ]
- ^ Вернер Фишер; Георг Шёнбергер (01.06.2015). «Диаграмма стека хранилища Linux» . Томас-Кренн.АГ . Проверено 8 июня 2015 г.
- ^ Клейман, Стив Р. (июнь 1986 г.). «Vnodes: архитектура для нескольких типов файловых систем в Sun UNIX» (PDF) . ЮСЕНИКС Лето . 86 : 238–247. Архивировано из оригинала (PDF) 29 июня 2014 г. Проверено 31 декабря 2016 г.
- Виртуальная файловая система ядра Linux
- Родригес, Р.; М. Келер; Р. Хайд (июнь 1986 г.). «Общая файловая система». Материалы летней технической конференции USENIX . Атланта, Джорджия: Ассоциация USENIX . стр. 260–269.
- Карелс, М. ; МК МакКьюсик (сентябрь 1986 г.). «На пути к совместимому интерфейсу файловой системы». Материалы собрания европейской группы пользователей UNIX . Манчестер, Англия: EUUG . стр. 481–496.
- Хайдеманн, Джон (1995). Стекируемый дизайн файловых систем (Технический отчет). Калифорнийский университет в Лос-Анджелесе . CSD-950032.
- Linux VFS , Глава 4 « Файловые системы Linux» , Моше Бар ( McGraw-Hill , 2001). ISBN 0-07-212955-7
- Глава 12 книги «Понимание ядра Linux» , авторы Дэниел П. Бовет, Марко Чезати ( O'Reilly Media , 2005). ISBN 0-596-00565-2
- Модель Linux VFS: структура именования