Что такое виртуальная файловая система или файловая система в пространстве пользователя? - PullRequest
8 голосов
/ 26 мая 2010

Я только что натолкнулся на VFS и файловую систему в пользовательском пространстве, как FUSE .

Теперь, насколько я понимаю, он моделирует файловую систему, так что приложение может иметь стандартную иерархию файловой системы. Но я не понимаю, зачем нам для этого нужна отдельная файловая система? Разве мы не можем просто создать обычную структуру папок и разместить файлы, которые будут использоваться приложением?

Итак, мои вопросы:

  1. Что такое VFS?

  2. Можете ли вы привести примеры из реальной жизни, примеры использования VFS.

  3. В чем преимущество использования VFS?

Есть ли VFS на основе Java?

Ответы [ 2 ]

15 голосов
/ 08 сентября 2010

VFS и FUSE связаны, но не совсем одно и то же. Основная цель FUSE - превращать вещи, которые почти как файлы, но не совсем (например, файлы на удаленном сервере или внутри файла ZIP), в «настоящие» каталоги и файлы. Посмотрите список файловых систем FUSE , чтобы понять, для чего это нужно; надеюсь, это прояснит, почему FUSE бьет "простые старые файлы" во многих случаях.

VFS - это интерфейс прикладных программ (API) для файлов. В случае, если вы не знакомы с концепцией API, я предлагаю вам взглянуть на страницу Википедии "Виртуальная файловая система"; он описывает, что такое VFS с точки зрения ядра операционной системы. Да, ядро ​​вашей ОС (будь то Windows, Linux или MacOS) имеет VFS! У некоторых программ пользовательского пространства, таких как GNOME, тоже есть такая (она называется GnomeVFS).

Цель VFS - представлять файлы и каталоги приложениям единообразно; будь то файлы с компакт-диска, из файловой системы Linux или Windows на жестком диске, USB-накопителе или RAM-диске, или с сетевого сервера. То, что ядро ​​ОС использует VFS, вероятно, очевидно. Тогда почему также есть пользовательские пространства, такие как GnomeVFS? Ответ заключается в том, что вы не хотите, чтобы каждая файловая система и ее собака находились в ядре, потому что такой код работает с привилегиями супервизора, и любая ошибка в нем может привести к сбою всей машины. Конечно, недостатком является то, что VFS пользовательского пространства полезны только для приложений, которые их используют, например, только приложения GNOME могут «видеть» через GnomeVFS; нельзя делать "ls" внутри дерева GnomeVFS. Решение - FUSE: его точное назначение и описание - превратить VFS пользовательского пространства в ядро. Другими словами, он соединяет VFS API с ядром, так что «поддельные» файлы могут выглядеть как «настоящие».

4 голосов
/ 26 мая 2010

VFS относится не к «поддельной» файловой системе, а к абстрактному интерфейсу файловой системы, предоставляемому операционными системами POSIX для процессов приложений. Например:

  • open()
  • close()
  • read()
  • write()
  • и т.д.

Все реализации файловой системы (ext3, XFS, reiserfs и т. Д.) Предоставляют тот же интерфейс поверх любых конкретных структур и алгоритмов, которые они используют.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...